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

TestStaticFn_CatmullRom_ii() private method

private TestStaticFn_CatmullRom_ii ( ) : void
return void
        public void TestStaticFn_CatmullRom_ii ()
        {
            var a = new Vector4( -120,  +40,  +40, +120 );
            var b = new Vector4( - 40,  -40,  -40, + 40 );
            var c = new Vector4( + 40,  +40,  +40, - 40 );
            var d = new Vector4( +120,  -40,  -40, -120 );

            Double one = 1;

            Double y = 30;
            Double x = 20;
            Double w = 10;
            Double v = (Double) 585  / (Double) 16; // 36.5625
            Double u = (Double) 55  / (Double) 2; // 27.5
            Double t = (Double) 235  / (Double) 16; // 14.6875

            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( -y, -v, -v,  y );
            Vector4 r2 = new Vector4( -x, -u, -u,  x );
            Vector4 r3 = new Vector4( -w, -t, -t,  w );
            Vector4 r4 = Vector4.Zero;
            Vector4 r5 = new Vector4(  w,  t,  t, -w );
            Vector4 r6 = new Vector4(  x,  u,  u, -x );
            Vector4 r7 = new Vector4(  y,  v,  v, -y );
            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