예제 #1
0
        public void Normalized()
        {
            Assert.IsTrue(NearlyEqual(Random4(0).Normalized.Magnitude, 1));

            Vector4d v = Random4(0);

            v.Normalize();

            Assert.IsTrue(NearlyEqual(v.Magnitude, 1));
        }
예제 #2
0
        public static IEnumerable <object[]> Data(VectorDimensions dimension)
        {
            var objs = new[]
            {
                new object[] { Vector256.Create(0d), default(Vector4d) },
                new object[] { Vector256.Create(1d), default(Vector4d) },
                new object[] { Vector256.Create(-1d), default(Vector4d) },
                new object[] { Vector256.Create(-1d), default(Vector4d) },
                new object[] { Vector256.Create(1d, 2d, 3d, 4d), default(Vector4d) },
                new object[] { Vector256.Create(double.PositiveInfinity), default(Vector4d) },
                new object[] { Vector256.Create(double.PositiveInfinity), default(Vector4d) },
                new object[] { Vector256.Create(double.NaN), default(Vector4d) },
                new object[] { Vector256.Create(double.MaxValue, double.MinValue, double.NaN, 0), default(Vector4d) },
            };

            foreach (object[] set in objs)
            {
                switch (dimension)
                {
                case VectorDimensions.V2D:
                {
                    Vector2d v1 = TestHelpers.ByValToSlowVector2d(((Vector256 <double>)set[0]));
                    set[1] = Vector2d.Normalize(v1);
                    break;
                }

                case VectorDimensions.V3D:
                {
                    Vector3d v1 = TestHelpers.ByValToSlowVector3d(((Vector256 <double>)set[0]));
                    set[1] = Vector3d.Normalize(v1);
                    break;
                }

                case VectorDimensions.V4D:
                {
                    Vector4d v1 = TestHelpers.ByValToSlowVector4d(((Vector256 <double>)set[0]));
                    set[1] = Vector4d.Normalize(v1);
                    break;
                }

                default:
                    throw new ArgumentException(nameof(dimension));
                }
            }

            return(objs);
        }
예제 #3
0
    public void Normalize2()
    {
        for (int i = 0; i < count; i++)
        {
            float ax, ay, az, aw;

            ax = UnityEngine.Random.Range(-10F, 10F);
            ay = UnityEngine.Random.Range(-10F, 10F);
            az = UnityEngine.Random.Range(-10F, 10F);
            aw = UnityEngine.Random.Range(-10F, 10F);

            Vector4 a = new Vector4(ax, ay, az, aw);

            Vector4d ad = new Vector4d(ax, ay, az, aw);

            a.Normalize();
            ad.Normalize();

            Assert.True(Approximate(a, ad));
        }
    }
예제 #4
0
    public void Normalize1()
    {
        for (int i = 0; i < count; i++)
        {
            float ax, ay, az, aw;

            ax = UnityEngine.Random.Range(-10F, 10F);
            ay = UnityEngine.Random.Range(-10F, 10F);
            az = UnityEngine.Random.Range(-10F, 10F);
            aw = UnityEngine.Random.Range(-10F, 10F);

            Vector4 a = new Vector4(ax, ay, az, aw);

            Vector4d ad = new Vector4d(ax, ay, az, aw);

            Vector4  value  = Vector4.Normalize(a);
            Vector4d valued = Vector4d.Normalize(ad);

            Assert.True(Approximate(value, valued));
        }
    }