Beispiel #1
0
        /// <summary>
        /// Flattens a <see cref="Vector4"/> into an array of floats, similar to how the <see cref="IFlattenableData{T}"/>
        /// interface works.
        /// </summary>
        /// <param name="vector4">The vector to flatten.</param>
        /// <returns>An array of floats.</returns>
        public static float[] Flatten(this Vector4 vector4)
        {
            float[] outArr = new float[4];
            vector4.CopyTo(outArr);

            return(outArr);
        }
Beispiel #2
0
        public void Vector4CopyToTest()
        {
            Vector4 v1 = new Vector4(2.5f, 2.0f, 3.0f, 3.3f);

            Single[] a = new Single[5];
            Single[] b = new Single[4];
            v1.CopyTo(a, 1);
            v1.CopyTo(b);
            Assert.Equal(0.0f, a[0]);
            Assert.Equal(2.5f, a[1]);
            Assert.Equal(2.0f, a[2]);
            Assert.Equal(3.0f, a[3]);
            Assert.Equal(3.3f, a[4]);
            Assert.Equal(2.5f, b[0]);
            Assert.Equal(2.0f, b[1]);
            Assert.Equal(3.0f, b[2]);
            Assert.Equal(3.3f, b[3]);
        }
        public void FloatLayout()
        {
            var     color     = new RgbaVector(1F, 2, 3, 4);
            Vector4 colorBase = Unsafe.As <RgbaVector, Vector4>(ref Unsafe.Add(ref color, 0));

            float[] ordered = new float[4];
            colorBase.CopyTo(ordered);

            Assert.Equal(1, ordered[0]);
            Assert.Equal(2, ordered[1]);
            Assert.Equal(3, ordered[2]);
            Assert.Equal(4, ordered[3]);
        }
    Vector4[] Reflect(Vector4[] a, float v1, float v2, int n)
    {
        Vector4[] a1 = new Vector4[a.Length];
        Vector4[] a2 = new Vector4[a.Length];

        a.CopyTo(a1, 0);
        a.CopyTo(a2, 0);

        for (var i = 0; i < a.Length; i++)
        {
            a1[i][n] = v1;
            a2[i][n] = v2;
        }

        Vector4[].Reverse(a2);

        a = new Vector4[2 * a.Length];
        a1.CopyTo(a, 0);
        a2.CopyTo(a, a1.Length);
        return(a);
    }
Beispiel #5
0
        public void Vector4CopyToTest()
        {
            Vector4 v1 = new Vector4(2.5f, 2.0f, 3.0f, 3.3f);

            float[] a = new float[5];
            float[] b = new float[4];

            Assert.Throws<NullReferenceException>(() => v1.CopyTo(null, 0));
            Assert.Throws<ArgumentOutOfRangeException>(() => v1.CopyTo(a, -1));
            Assert.Throws<ArgumentOutOfRangeException>(() => v1.CopyTo(a, a.Length));
            Assert.Throws<ArgumentException>(() => v1.CopyTo(a, a.Length - 2));

            v1.CopyTo(a, 1);
            v1.CopyTo(b);
            Assert.Equal(0.0f, a[0]);
            Assert.Equal(2.5f, a[1]);
            Assert.Equal(2.0f, a[2]);
            Assert.Equal(3.0f, a[3]);
            Assert.Equal(3.3f, a[4]);
            Assert.Equal(2.5f, b[0]);
            Assert.Equal(2.0f, b[1]);
            Assert.Equal(3.0f, b[2]);
            Assert.Equal(3.3f, b[3]);
        }
    Vector4[] Reflect(Vector4[] a, float v1, float v2, int n)
    {
        Vector4[] a1 = new Vector4[ a.Length ];
        Vector4[] a2 = new Vector4[ a.Length ];

        a.CopyTo( a1, 0 );
        a.CopyTo( a2, 0 );

        for( var i=0; i<a.Length; i++ ){
                a1[i][n] = v1;
                a2[i][n] = v2;
        }

        Vector4[].Reverse( a2 );

        a = new Vector4[ 2 * a.Length ];
        a1.CopyTo( a, 0 );
        a2.CopyTo( a, a1.Length );
        return a;
    }