Esempio n. 1
0
        public void RemoveFromEnd2Points()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(float2.zero);
            float2 b = new float2(1f, 0f);

            testSpline2D.AddControlPoint(b);

            Assert.AreEqual(2, testSpline2D.ControlPointCount);
            Assert.AreEqual(2, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(2), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count);
            Assert.AreEqual(0.5f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
            TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point));

            //Remove a point
            testSpline2D.RemoveControlPoint(1);

            Assert.AreEqual(1, testSpline2D.ControlPointCount);
            Assert.AreEqual(1, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(1), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count);
            Assert.AreEqual(0f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
        }
        public void RemoveFromEndOutOfRangeUnder()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(float2.zero);
            float2 b = c_xOne;

            testSpline2D.AddControlPoint(b);

            Assert.AreEqual(2, testSpline2D.ControlPointCount);
            Assert.AreEqual(2, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(2), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(1, testSpline2D.Times.Count);
            Assert.AreEqual(1f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
            TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point));

            // Remove a point less than 0
            testSpline2D.RemoveControlPoint(-3);

            Assert.AreEqual(2, testSpline2D.ControlPointCount);
            Assert.AreEqual(2, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(2), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(1, testSpline2D.Times.Count);
            Assert.AreEqual(1f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
            TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point));
        }
Esempio n. 3
0
        public void Point()
        {
            ISimpleTestSpline2D bezierSpline2D = CreateSpline();

            float2 a = float2.zero;

            bezierSpline2D.AddControlPoint(a);
            float2 b = new float2(1f, 0f);

            bezierSpline2D.AddControlPoint(b);

            Spline2DData data = bezierSpline2D.SplineEntityData2D.Value;

            Assert.AreEqual(1f, bezierSpline2D.Length());
            Assert.AreEqual(1f, data.Length);

            Assert.AreEqual(1, bezierSpline2D.Times.Count);
            Assert.AreEqual(1, data.Time.Length);
            Assert.AreEqual(1f, bezierSpline2D.Times[0]);
            Assert.AreEqual(1f, data.Time[0]);

            BezierSpline2DPointJob job = new BezierSpline2DPointJob(bezierSpline2D, -0.5f, Allocator.Temp);

            try
            {
                CheckFloatJob(a, job, -0.5f);
                CheckFloatJob(a, job, 0f);
                CheckFloatJob(new float2(0.5f, 0f), job, 0.5f);
                CheckFloatJob(b, job, 5f);
            }
            finally
            {
                job.Dispose();
            }
        }
Esempio n. 4
0
        public void Point3()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(float2.zero);
            float2 b = new float2(2.5f, 0f);

            testSpline2D.AddControlPoint(b);
            float2 c = new float2(7.5f, 0f);

            testSpline2D.AddControlPoint(c);
            float2 d = new float2(10f, 0f);

            testSpline2D.AddControlPoint(d);

            Assert.AreEqual(4, testSpline2D.ControlPointCount);
            Assert.AreEqual(4, testSpline2D.Modes.Count);
            Assert.AreEqual(7.5f, testSpline2D.Length());

            Assert.AreEqual(2, testSpline2D.Times.Count);
            Assert.AreEqual(0.5f, testSpline2D.Times[0]);
            Assert.AreEqual(1f, testSpline2D.Times[1]);

            TestHelpers.CheckFloat2(new float2(1.25f, 0f), testSpline2D.Get2DPointWorld(0f));
            TestHelpers.CheckFloat2(new float2(2.8125f, 0f), testSpline2D.Get2DPointWorld(0.25f));
            TestHelpers.CheckFloat2(new float2(5f, 0f), testSpline2D.Get2DPointWorld(0.5f));
            float2 max = new float2(8.75f, 0f);

            TestHelpers.CheckFloat2(max, testSpline2D.Get2DPointWorld(1f));
            TestHelpers.CheckFloat2(max, testSpline2D.Get2DPointWorld(1.5f));
            TestHelpers.CheckFloat2(max, testSpline2D.Get2DPointWorld(5f));
        }
Esempio n. 5
0
        public void PointCreation()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(0f, 0f);

            testSpline2D.AddControlPoint(float2.zero);

            Assert.AreEqual(1, testSpline2D.ControlPointCount);
            Assert.AreEqual(1, testSpline2D.Modes.Count);
            Assert.AreEqual(1, testSpline2D.Times.Count);

            Assert.AreEqual(1, testSpline2D.ControlPoints.Count);
            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));

            float2 b = new float2(10f, 0f);

            testSpline2D.AddControlPoint(b);

            Assert.AreEqual(2, testSpline2D.ControlPointCount);
            Assert.AreEqual(2, testSpline2D.Modes.Count);
            Assert.AreEqual(1, testSpline2D.Times.Count);
            Assert.AreEqual(10f, testSpline2D.Length());

            Assert.AreEqual(4, testSpline2D.ControlPoints.Count);
            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
            TestHelpers.CheckFloat2(new float2(1f, 0f), testSpline2D.GetControlPoint(0, SplinePoint.Post));
            TestHelpers.CheckFloat2(new float2(9f, 0f), testSpline2D.GetControlPoint(1, SplinePoint.Pre));
            TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point));
        }
Esempio n. 6
0
        public void ZigZagLength2()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(2f, 2f);

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(3f, 0f);

            testSpline2D.AddControlPoint(b);
            float2 c = new float2(4f, 2f);

            testSpline2D.AddControlPoint(c);
            float2 d = new float2(5f, 0f);

            testSpline2D.AddControlPoint(d);

            float aLength = math.distance(a, b) / 2f;
            float bLength = math.distance(b, c);
            float cLength = math.distance(c, d) / 2f;

            float length = (aLength + bLength + cLength) / 2f;

            Assert.Greater(testSpline2D.Length(), length);
        }
        public void Point2()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(float2.zero);
            float2 b = c_xOne;

            testSpline2D.AddControlPoint(b);
            float2 c = c_xTwo;

            testSpline2D.AddControlPoint(c);

            Assert.AreEqual(3, testSpline2D.ControlPointCount);
            Assert.AreEqual(2f, testSpline2D.Length());

            Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count);
            //Assert.AreEqual(0.5f, testSpline.Times[0]);
            //Assert.AreEqual(1f, testSpline.Times[1]);

            TestHelpers.CheckFloat2(a, testSpline2D.Get2DPointWorld(0f));
            TestHelpers.CheckFloat2(new float2(1f, 0f), testSpline2D.Get2DPointWorld(0.5f));
            //TestHelpers.CheckFloat2(c * 0.77f, spline.GetPoint(0.77f)); // fails due to bezier point bunching issues
        }
        public void Add3Remove2()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(float2.zero);
            float2 b = c_xOne;

            testSpline2D.AddControlPoint(b);
            float2 c = c_xTwo;

            testSpline2D.AddControlPoint(c);

            Assert.AreEqual(3, testSpline2D.ControlPointCount);
            Assert.AreEqual(3, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count);
            Assert.AreEqual(2f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
            TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point));
            TestHelpers.CheckFloat2(c, testSpline2D.GetControlPoint(2, SplinePoint.Point));

            // Remove a point
            testSpline2D.RemoveControlPoint(2);

            Assert.AreEqual(2, testSpline2D.ControlPointCount);
            Assert.AreEqual(2, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(2), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(1, testSpline2D.Times.Count);
            Assert.AreEqual(1f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
            TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point));

            // Remove another point
            testSpline2D.RemoveControlPoint(1);

            Assert.AreEqual(1, testSpline2D.ControlPointCount);
            Assert.AreEqual(1, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(1), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(1, testSpline2D.Times.Count);
            Assert.AreEqual(0f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
        }
Esempio n. 9
0
        public void NoPoint()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            Assert.AreEqual(0, testSpline2D.ControlPointCount);
            Assert.AreEqual(0f, testSpline2D.Length());

            TestHelpers.CheckFloat2(float2.zero, testSpline2D.Get2DPointWorld(0.5f));
        }
Esempio n. 10
0
        public void Point4()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(3f, 3f);

            testSpline2D.AddControlPoint(a);

            Assert.AreEqual(1, testSpline2D.ControlPointCount);
            Assert.AreEqual(0f, testSpline2D.Length());

            TestHelpers.CheckFloat2(new float2(3f, 3f), testSpline2D.Get2DPointWorld(0.5f));
        }
Esempio n. 11
0
        public void Update3()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(1f, 0f);

            testSpline2D.AddControlPoint(b);
            float2 c = new float2(2f, 0f);

            testSpline2D.AddControlPoint(c);

            Assert.AreEqual(1f, testSpline2D.Length());

            // update 1 point position
            float2 b2 = new float2(1f, 2f);

            testSpline2D.UpdateControlPointLocal(1, b2, SplinePoint.Point);
            Assert.GreaterOrEqual(testSpline2D.Length(), 1f);
        }
Esempio n. 12
0
        public void Add1()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(a);

            Assert.AreEqual(1, testSpline2D.ControlPointCount);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(1), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(1, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count);
            Assert.AreEqual(0f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
        }
Esempio n. 13
0
        public void bSplineLength()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(0f, 0f);

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(0f, 0.5f);

            testSpline2D.AddControlPoint(b);
            float2 c = new float2(0f, 1f);

            testSpline2D.AddControlPoint(c);

            Assert.AreEqual(0.5f, testSpline2D.Length());
        }
Esempio n. 14
0
        public void ZigZagLength2()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(0f, 0f);

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(1f, 3f);

            testSpline2D.AddControlPoint(b);

            testSpline2D.UpdateControlPointLocal(0, new float2(1f, 0f), SplinePoint.Post);
            testSpline2D.UpdateControlPointLocal(1, new float2(0f, 3f), SplinePoint.Pre);

            float length = math.distance(a, b);

            Assert.Greater(testSpline2D.Length(), length);
        }
Esempio n. 15
0
        public void ZigZagLength()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(0f, 0f);
            float2 b = new float2(10f, 10f);
            float2 c = new float2(0f, 20f);
            float2 d = new float2(20f, 30f);

            testSpline2D.AddControlPoint(a);
            testSpline2D.AddControlPoint(d);
            testSpline2D.InsertControlPoint(1, b);
            testSpline2D.InsertControlPoint(2, c);

            float minLength = math.distance(a, b) + math.distance(b, c) + math.distance(c, d);

            Assert.Greater(testSpline2D.Length(), minLength);
        }
Esempio n. 16
0
        public void ZigZagLength2()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(0f, 0f);

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(1f, 3f);

            testSpline2D.AddControlPoint(b);

            testSpline2D.UpdateControlPointLocal(0, new float2(1f, 0f), SplinePoint.Post);
            testSpline2D.UpdateControlPointLocal(1, new float2(0f, 3f), SplinePoint.Pre);

            float length = math.distance(a, b);
            float spline = testSpline2D.Length();

            Assert.IsTrue(math.abs(length - spline) <= 0.00005f, $"Expected: {length}, but received: {spline}");
        }
Esempio n. 17
0
        public void Point5()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(1f, 10f);

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(2f, 10f);

            testSpline2D.AddControlPoint(b);
            float2 c = new float2(3f, 10f);

            testSpline2D.AddControlPoint(c);

            Assert.AreEqual(3, testSpline2D.ControlPointCount);
            Assert.AreEqual(2f, testSpline2D.Length());

            TestHelpers.CheckFloat2(new float2(2.5f, 10f), testSpline2D.Get2DPointWorld(0.7f), 0.01f);
        }
Esempio n. 18
0
        public void Point()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(1f, 0f);

            testSpline2D.AddControlPoint(b);

            Assert.AreEqual(2, testSpline2D.ControlPointCount);
            Assert.AreEqual(0.5f, testSpline2D.Length());

            Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count);
            Assert.AreEqual(1f, testSpline2D.Times[0]);

            TestHelpers.CheckFloat2(new float2(0.5f, 0f), testSpline2D.Get2DPointWorld(0.5f));
        }
Esempio n. 19
0
        public void ZigZagLength()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = new float2(0f, 0f);

            testSpline2D.AddControlPoint(a);
            float2 b = new float2(10f, 10f);

            testSpline2D.AddControlPoint(b);
            float2 c = new float2(0f, 20f);

            testSpline2D.AddControlPoint(c);
            float2 d = new float2(20f, 30f);

            testSpline2D.AddControlPoint(d);

            float length = math.distance(a, b) + math.distance(b, c) + math.distance(c, d);
            float spline = testSpline2D.Length();

            Assert.IsTrue(math.abs(length - spline) <= 0.00005f, $"Expected: {length}, but received: {spline}");
        }
Esempio n. 20
0
        public void Add3()
        {
            ISimpleTestSpline2D testSpline2D = PrepareSpline();

            float2 a = float2.zero;

            testSpline2D.AddControlPoint(float2.zero);
            float2 b = new float2(1f, 0f);

            testSpline2D.AddControlPoint(b);
            float2 c = new float2(2f, 0f);

            testSpline2D.AddControlPoint(c);

            Assert.AreEqual(3, testSpline2D.ControlPointCount);
            Assert.AreEqual(testSpline2D.ExpectedControlPointCount(3), testSpline2D.ControlPoints.Count);
            Assert.AreEqual(3, testSpline2D.Modes.Count);
            Assert.AreEqual(testSpline2D.ExpectedTimeCount(testSpline2D.ControlPointCount), testSpline2D.Times.Count);
            Assert.AreEqual(1f, testSpline2D.Length());

            TestHelpers.CheckFloat2(a, testSpline2D.GetControlPoint(0, SplinePoint.Point));
            TestHelpers.CheckFloat2(b, testSpline2D.GetControlPoint(1, SplinePoint.Point));
            TestHelpers.CheckFloat2(c, testSpline2D.GetControlPoint(2, SplinePoint.Point));
        }
Esempio n. 21
0
        public void DataEquality()
        {
            ISimpleTestSpline2D bezierSpline2D = CreateSpline();

            Spline2DData data = bezierSpline2D.SplineEntityData2D.Value;

            Assert.AreEqual(bezierSpline2D.Length(), data.Length);
            Assert.AreEqual(bezierSpline2D.Times.Count, data.Time.Length);
            Assert.AreEqual(bezierSpline2D.ControlPoints.Count, data.Points.Length);
            bezierSpline2D.ClearData();

            {
                float2 a = float2.zero;
                bezierSpline2D.AddControlPoint(a);

                data = bezierSpline2D.SplineEntityData2D.Value;
                Assert.AreEqual(bezierSpline2D.Length(), data.Length);
                Assert.AreEqual(bezierSpline2D.Times.Count, data.Time.Length);
                for (int i = 0; i < bezierSpline2D.Times.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.Times[i], data.Time[i]);
                }
                Assert.AreEqual(bezierSpline2D.ControlPoints.Count, data.Points.Length);
                for (int i = 0; i < bezierSpline2D.ControlPoints.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.ControlPoints[i], data.Points[i]);
                }
                bezierSpline2D.ClearData();
            }
            {
                float2 b = new float2(2.5f, 0f);
                bezierSpline2D.AddControlPoint(b);

                data = bezierSpline2D.SplineEntityData2D.Value;
                Assert.AreEqual(bezierSpline2D.Length(), data.Length);
                Assert.AreEqual(bezierSpline2D.Times.Count, data.Time.Length);
                for (int i = 0; i < bezierSpline2D.Times.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.Times[i], data.Time[i]);
                }
                Assert.AreEqual(bezierSpline2D.ControlPoints.Count, data.Points.Length);
                for (int i = 0; i < bezierSpline2D.ControlPoints.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.ControlPoints[i], data.Points[i]);
                }
                bezierSpline2D.ClearData();
            }
            {
                float2 c = new float2(7.5f, 0f);
                bezierSpline2D.AddControlPoint(c);

                data = bezierSpline2D.SplineEntityData2D.Value;
                Assert.AreEqual(bezierSpline2D.Length(), data.Length);
                Assert.AreEqual(bezierSpline2D.Times.Count, data.Time.Length);
                for (int i = 0; i < bezierSpline2D.Times.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.Times[i], data.Time[i]);
                }
                Assert.AreEqual(bezierSpline2D.ControlPoints.Count, data.Points.Length);
                for (int i = 0; i < bezierSpline2D.ControlPoints.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.ControlPoints[i], data.Points[i]);
                }
                bezierSpline2D.ClearData();
            }
            {
                float2 d = new float2(10f, 0f);
                bezierSpline2D.AddControlPoint(d);

                data = bezierSpline2D.SplineEntityData2D.Value;
                Assert.AreEqual(bezierSpline2D.Length(), data.Length);
                Assert.AreEqual(bezierSpline2D.Times.Count, data.Time.Length);
                for (int i = 0; i < bezierSpline2D.Times.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.Times[i], data.Time[i]);
                }
                Assert.AreEqual(bezierSpline2D.ControlPoints.Count, data.Points.Length);
                for (int i = 0; i < bezierSpline2D.ControlPoints.Count; i++)
                {
                    Assert.AreEqual(bezierSpline2D.ControlPoints[i], data.Points[i]);
                }
                bezierSpline2D.ClearData();
            }
        }