diff --git a/src/lol/math/simplex_interpolator.h b/src/lol/math/simplex_interpolator.h index 276852f1..4ed1608a 100644 --- a/src/lol/math/simplex_interpolator.h +++ b/src/lol/math/simplex_interpolator.h @@ -20,14 +20,15 @@ class simplex_interpolator { public: - simplex_interpolator() + simplex_interpolator(arraynd const & samples) : + m_samples(samples) { this->InitBase(); } - inline arraynd & GetSamples() + inline arraynd const & GetSamples() { - return this->samples; + return this->m_samples; } // Single interpolation @@ -63,14 +64,14 @@ protected: vec_t samples_index = floor_point; samples_index[i] = this->Mod(samples_index[i] + sign, i); - result += decimal_point[i] * this->samples[samples_index]; + result += decimal_point[i] * this->m_samples[samples_index]; floor_coeff += decimal_point[i]; divider += decimal_point[i]; } T norm = sqrt((float)N); - result += (1 - 2 * floor_coeff / (norm * norm)) * this->samples[floor_point]; + result += (1 - 2 * floor_coeff / (norm * norm)) * this->m_samples[floor_point]; divider += (1 - 2 * floor_coeff / (norm * norm)); return result / divider; @@ -78,7 +79,7 @@ protected: inline int Mod(int value, int index) { - return value %= this->samples.GetSize()[index]; + return value %= this->m_samples.GetSize()[index]; } inline void GetReference(vec_t & floor_point, vec_t & decimal_point, int & sign) @@ -122,7 +123,7 @@ protected: for (int i = 0 ; i < N ; ++i) for (int j = 0 ; j < N ; ++j) - result[i] += this->base_inverse[j][i] * position[j]; + result[i] += this->m_base_inverse[j][i] * position[j]; return result; } @@ -133,17 +134,16 @@ protected: { for (int j = i ; j < N ; ++j) { - this->base[j][i] = sqrt((i+2)/((float)(2*i+2))) / (j > i ? i+2 : 1); - this->base_inverse[j][i] = sqrt((2*j+2) / ((float)(j+2))) * (j > i ? (-1 / (float)(j+1)) : 1); + this->m_base[j][i] = sqrt((i+2)/((float)(2*i+2))) / (j > i ? i+2 : 1); + this->m_base_inverse[j][i] = sqrt((2*j+2) / ((float)(j+2))) * (j > i ? (-1 / (float)(j+1)) : 1); } } } - vec_t, N> base; - vec_t, N> base_inverse; - - arraynd samples; + vec_t, N> m_base; + vec_t, N> m_base_inverse; + arraynd m_samples; }; } diff --git a/src/t/math/simplex_interpolator.cpp b/src/t/math/simplex_interpolator.cpp index 2686f1df..a0de7ad6 100644 --- a/src/t/math/simplex_interpolator.cpp +++ b/src/t/math/simplex_interpolator.cpp @@ -25,9 +25,7 @@ lolunit_declare_fixture(SimplexInterpolatorTest) lolunit_declare_test(Interp2D9PointsTest) { - simplex_interpolator<2> interpolator; - - interpolator.GetSamples() = arraynd<2, float>({{1, 1, 2}, {1, 2, 2}, {2, 2, 2}}); + simplex_interpolator<2> interpolator({{1, 1, 2}, {1, 2, 2}, {2, 2, 2}}); lolunit_assert_equal(interpolator.Interp(vec_t{0, 0}), 1); lolunit_assert_equal(interpolator.Interp(vec_t{1, 0}), 1);