public void TestStaticFn_SmoothStep_iii ()
{
var a = new Vector4( -30, -30, -30, -30 );
var b = new Vector4( +30, +30, +30, +30 );
Double one = 1;
Double i;
Maths.FromFraction(1755, 64, out i); // 27.421875
Double j;
Maths.FromFraction( 165, 8, out j); // 20.625
Double k;
Maths.FromFraction( 705, 64, out k); // 11.015625
Double a0 = 0;
Double a1 = (one * 1) / 8;
Double a2 = (one * 2) / 8;
Double a3 = (one * 3) / 8;
Double a4 = (one * 4) / 8;
Double a5 = (one * 5) / 8;
Double a6 = (one * 6) / 8;
Double a7 = (one * 7) / 8;
Double a8 = 1;
Vector4 r0 = a;
Vector4 r1 = new Vector4( -i, -i, -i, -i );
Vector4 r2 = new Vector4( -j, -j, -j, -j );
Vector4 r3 = new Vector4( -k, -k, -k, -k );
Vector4 r4 = Vector4.Zero;
Vector4 r5 = new Vector4( k, k, k, k );
Vector4 r6 = new Vector4( j, j, j, j );
Vector4 r7 = new Vector4( i, i, i, i );
Vector4 r8 = b;
var knownResults = new List<Tuple<Double, Vector4>>
{
new Tuple<Double, Vector4>( a0, r0 ),
new Tuple<Double, Vector4>( a1, r1 ),
new Tuple<Double, Vector4>( a2, r2 ),
new Tuple<Double, Vector4>( a3, r3 ),
new Tuple<Double, Vector4>( a4, r4 ),
new Tuple<Double, Vector4>( a5, r5 ),
new Tuple<Double, Vector4>( a6, r6 ),
new Tuple<Double, Vector4>( a7, r7 ),
new Tuple<Double, Vector4>( a8, r8 ),
};
for (Int32 idx = 0; idx < knownResults.Count; ++idx)
{
Vector4 result;
Double amount = knownResults[idx].Item1;
Vector4 expected = knownResults[idx].Item2;
Vector4.SmoothStep (
ref a, ref b, ref amount, out result);
AssertEqualWithinReason(result, expected);
}
}