From 7e01c3afd7c773c512e3a399853888b4145622c6 Mon Sep 17 00:00:00 2001 From: Guillaume Bittoun Date: Mon, 17 Nov 2014 22:24:31 +0000 Subject: [PATCH] simplex_interpolator: starting first test. Too tired, go to bed :) --- src/lol/math/simplex_interpolator.h | 17 ++++++++++------- src/t/math/simplex_interpolator.cpp | 5 +++++ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/lol/math/simplex_interpolator.h b/src/lol/math/simplex_interpolator.h index 256cec27..3dcd4866 100644 --- a/src/lol/math/simplex_interpolator.h +++ b/src/lol/math/simplex_interpolator.h @@ -31,14 +31,14 @@ public: } // Single interpolation - inline T interp(vec_t position) + inline T Interp(vec_t position) { // Computing position in simplex referential vec_t simplex_position = this->ToSimplexRef(position); // Retrieving the closest floor point and decimals - vec_t & floor_point; - vec_t & decimal_point; + vec_t floor_point; + vec_t decimal_point; this->ExtractFloorDecimal(simplex_position, floor_point, decimal_point); @@ -60,7 +60,7 @@ protected: for (int i = 0 ; i < N ; ++i) { vec_t samples_index = floor_point; - samples_index[i] = this->mod(samples_index[i] + sign, i); + samples_index[i] = this->Mod(samples_index[i] + sign, i); result += decimal_point[i] * this->samples[samples_index]; divider += decimal_point[i]; @@ -81,7 +81,7 @@ protected: return value %= this->samples.GetSize()[index]; } - inline void GetReference(vec_t & floor_point, vec_t & decimal_point, int & sign) + inline void GetReference(vec_t & floor_point, vec_t & decimal_point, int & sign) { // Choosing the reference point which determines in which simplex we are working // ie. (0, 0, 0, …) and upper or (this->diagonal) and lower @@ -100,8 +100,11 @@ protected: { sign = -1; - decimal_point = 1 - decimal_point; - floor_point += 1; + for (int i = 0 ; i < N ; ++i) + { + decimal_point[i] = 1 - decimal_point[i]; + floor_point[i] += 1; + } } } diff --git a/src/t/math/simplex_interpolator.cpp b/src/t/math/simplex_interpolator.cpp index 5324b68c..735fd4d0 100644 --- a/src/t/math/simplex_interpolator.cpp +++ b/src/t/math/simplex_interpolator.cpp @@ -13,6 +13,7 @@ #include // To be removed when fully tested +#include #include namespace lol @@ -27,6 +28,10 @@ lolunit_declare_fixture(SimplexInterpolatorTest) lolunit_declare_test(Interp2D) { simplex_interpolator<2> interpolator; + + interpolator.GetSamples() = arraynd<2, float>({{1, 1, 2}, {1, 1, 2}, {2, 2, 2}}); + + std::cout << interpolator.Interp(vec_t{0, 0}) << std::endl; } };