From 28304bc3309eaf5d8319048de59ebf51168e24df Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Mon, 13 Apr 2015 09:47:03 -0300 Subject: [PATCH] -Changed the cubic interpolator, improves situation with PathFollow in #1659 --- core/math/math_2d.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/core/math/math_2d.cpp b/core/math/math_2d.cpp index 3aaa539fbbf..2f1c307a146 100644 --- a/core/math/math_2d.cpp +++ b/core/math/math_2d.cpp @@ -230,6 +230,23 @@ Vector2 Vector2::cubic_interpolate(const Vector2& p_b,const Vector2& p_pre_a, co + Vector2 p0=p_pre_a; + Vector2 p1=*this; + Vector2 p2=p_b; + Vector2 p3=p_post_b; + + float t = p_t; + float t2 = t * t; + float t3 = t2 * t; + + Vector2 out; + out = 0.5f * ( ( p1 * 2.0f) + + ( -p0 + p2 ) * t + + ( 2.0f * p0 - 5.0f * p1 + 4 * p2 - p3 ) * t2 + + ( -p0 + 3.0f * p1 - 3.0f * p2 + p3 ) * t3 ); + return out; + +/* float mu = p_t; float mu2 = mu*mu; @@ -239,7 +256,7 @@ Vector2 Vector2::cubic_interpolate(const Vector2& p_b,const Vector2& p_pre_a, co Vector2 a3 = *this; return ( a0*mu*mu2 + a1*mu2 + a2*mu + a3 ); - +*/ /* float t = p_t; real_t t2 = t*t;