* Fixed extrapolateLinear() so it would really extrapolates if bigger than 1 or smaller than 0. The old behavior was to clamp between 0 and 1, doing exactly the same thing as interpolateLinear().

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8616 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
dan..om 13 years ago
parent 12b70d9b29
commit fbb396b8a2
  1. 12
      engine/src/core/com/jme3/math/FastMath.java

@ -166,9 +166,9 @@ final public class FastMath {
* @return an extrapolation for the given parameters * @return an extrapolation for the given parameters
*/ */
public static float extrapolateLinear(float scale, float startValue, float endValue) { public static float extrapolateLinear(float scale, float startValue, float endValue) {
if (scale <= 0f) { // if (scale <= 0f) {
return startValue; // return startValue;
} // }
return ((1f - scale) * startValue) + (scale * endValue); return ((1f - scale) * startValue) + (scale * endValue);
} }
@ -187,9 +187,9 @@ final public class FastMath {
if (store == null) { if (store == null) {
store = new Vector3f(); store = new Vector3f();
} }
if (scale <= 1f) { // if (scale <= 1f) {
return interpolateLinear(scale, startValue, endValue, store); // return interpolateLinear(scale, startValue, endValue, store);
} // }
store.x = extrapolateLinear(scale, startValue.x, endValue.x); store.x = extrapolateLinear(scale, startValue.x, endValue.x);
store.y = extrapolateLinear(scale, startValue.y, endValue.y); store.y = extrapolateLinear(scale, startValue.y, endValue.y);
store.z = extrapolateLinear(scale, startValue.z, endValue.z); store.z = extrapolateLinear(scale, startValue.z, endValue.z);

Loading…
Cancel
Save