Abacus.DoublePrecision.Vector4Tests.TestStaticFn_Hermite_iii C# (CSharp) Method

TestStaticFn_Hermite_iii() private method

private TestStaticFn_Hermite_iii ( ) : void
return void
        public void TestStaticFn_Hermite_iii ()
        {
            var a = new Vector4( -100, +50, +100, -50 );
            var b = new Vector4( +100, -50, -100, +50 );

            var c = new Vector4( -10, +5, +10, -5 );
            var d = new Vector4( +10, -5, -10, +5 );

            Vector4 an; Vector4.Normalise(ref c, out an);
            Vector4 bn; Vector4.Normalise(ref d, out bn);

            Double one = 1;

            // 100.1953125
            Double e = (Double) 51300 / (Double) 512;

            // 50.09765625
            Double f = (Double) 12825 / (Double) 256;

            // 91.25
            Double g = (Double) 365 / (Double) 4;

            // 45.625
            Double h = (Double) 365 / (Double) 8;

            // 75.7421875
            Double i = (Double) 9695 / (Double) 128;

            // 37.87109375
            Double j = (Double) 9695 / (Double) 256;

            // 56.25
            Double k = (Double) 225 / (Double) 4;

            // 28.125
            Double l = (Double) 225 / (Double) 8;

            // 35.3515625
            Double m = (Double) 4525 / (Double) 128;

            // 17.67578125
            Double n = (Double) 4525 / (Double) 256;

            // 15.625
            Double o = (Double) 125 / (Double) 8;

            // 7.8125
            Double p = (Double) 125 / (Double) 16;

            // 0.3515625
            Double q = (Double) 45 / (Double) 128;

            // 0.17578125
            Double r = (Double) 45 / (Double) 256;

            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 = b;
            Vector4 r1 = new Vector4(  e, -f, -e,  f );
            Vector4 r2 = new Vector4(  g, -h, -g,  h );
            Vector4 r3 = new Vector4(  i, -j, -i,  j );
            Vector4 r4 = new Vector4(  k, -l, -k,  l );
            Vector4 r5 = new Vector4(  m, -n, -m,  n );
            Vector4 r6 = new Vector4(  o, -p, -o,  p );
            Vector4 r7 = new Vector4( -q,  r,  q, -r );
            Vector4 r8 = c;

            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.CatmullRom (
                    ref a, ref b, ref c, ref d, ref amount, out result);

                AssertEqualWithinReason(result, expected);
            }
        }
Vector4Tests