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)); }
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(); } }
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)); }
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)); }
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)); }
public void NoPoint() { ISimpleTestSpline2D testSpline2D = PrepareSpline(); Assert.AreEqual(0, testSpline2D.ControlPointCount); Assert.AreEqual(0f, testSpline2D.Length()); TestHelpers.CheckFloat2(float2.zero, testSpline2D.Get2DPointWorld(0.5f)); }
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)); }
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); }
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)); }
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()); }
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); }
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); }
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}"); }
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); }
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)); }
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}"); }
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)); }
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(); } }