public void OneKeyCurvesTest() { // Test linear curves with 1 point Path2F curve = new Path2F(); curve.Add(new PathKey2F() { Parameter = 1, Point = new Vector2F(1, 2), Interpolation = SplineInterpolation.Linear, }); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Cycle; curve.PostLoop = CurveLoopType.Cycle; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.CycleOffset; curve.PostLoop = CurveLoopType.CycleOffset; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Oscillate; curve.PostLoop = CurveLoopType.Oscillate; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); // Test step curves with 1 point curve = new Path2F(); curve.Add(new PathKey2F() { Parameter = 1, Point = new Vector2F(1, 2), Interpolation = SplineInterpolation.StepLeft, }); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Cycle; curve.PostLoop = CurveLoopType.Cycle; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.CycleOffset; curve.PostLoop = CurveLoopType.CycleOffset; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Oscillate; curve.PostLoop = CurveLoopType.Oscillate; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); // Test B-spline curves with 1 point curve = new Path2F(); curve.Add(new PathKey2F() { Parameter = 1, Point = new Vector2F(1, 2), Interpolation = SplineInterpolation.BSpline, }); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Cycle; curve.PostLoop = CurveLoopType.Cycle; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.CycleOffset; curve.PostLoop = CurveLoopType.CycleOffset; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Oscillate; curve.PostLoop = CurveLoopType.Oscillate; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); // Test Catmull-Rom curves with 1 point curve = new Path2F(); curve.Add(new PathKey2F() { Parameter = 1, Point = new Vector2F(1, 2), Interpolation = SplineInterpolation.CatmullRom, }); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Cycle; curve.PostLoop = CurveLoopType.Cycle; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.CycleOffset; curve.PostLoop = CurveLoopType.CycleOffset; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Oscillate; curve.PostLoop = CurveLoopType.Oscillate; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); // Test Hermite curves with 1 point curve = new Path2F(); curve.Add(new PathKey2F() { Parameter = 1, Point = new Vector2F(1, 2), Interpolation = SplineInterpolation.Hermite, TangentIn = new Vector2F(2, -2), TangentOut = new Vector2F(2, 2), }); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 20, 0.01f)); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(3, 4), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(2, 2), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(2, 2), curve.GetTangent(2)); Assert.IsTrue(Numeric.AreEqual(new Vector2F(2, 2).Length, curve.GetLength(0, 2, 10, 0.01f), 0.1f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(-1, 4), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(2, -2), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(2, -2), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.IsTrue(Numeric.AreEqual(new Vector2F(2, 2).Length, curve.GetLength(0, 2, 10, 0.01f), 0.1f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(-1, 4), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(3, 4), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(2, -2), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(2, 2), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(2, 2), curve.GetTangent(2)); Assert.IsTrue(Numeric.AreEqual(new Vector2F(4, 4).Length, curve.GetLength(0, 2, 10, 0.01f), 0.1f)); curve.PreLoop = CurveLoopType.Cycle; curve.PostLoop = CurveLoopType.Cycle; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.CycleOffset; curve.PostLoop = CurveLoopType.CycleOffset; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Oscillate; curve.PostLoop = CurveLoopType.Oscillate; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); // Test Bezier curves with 1 point curve = new Path2F(); curve.Add(new PathKey2F() { Parameter = 1, Point = new Vector2F(1, 2), Interpolation = SplineInterpolation.Bezier, TangentIn = new Vector2F(1, 2) - new Vector2F(2, -2) / 3, TangentOut = new Vector2F(1, 2) + new Vector2F(2, 2) / 3, }); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(3, 4), curve.GetPoint(2))); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(2, 2), curve.GetTangent(1))); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(2, 2), curve.GetTangent(2))); Assert.IsTrue(Numeric.AreEqual(new Vector2F(2, 2).Length, curve.GetLength(0, 2, 10, 0.01f), 0.1f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(-1, 4), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(2, -2), curve.GetTangent(0))); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(2, -2), curve.GetTangent(1))); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.IsTrue(Numeric.AreEqual(new Vector2F(2, 2).Length, curve.GetLength(0, 2, 10, 0.01f), 0.1f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Linear; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(-1, 4), curve.GetPoint(0)); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(3, 4), curve.GetPoint(2))); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(2, -2), curve.GetTangent(0))); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(2, 2), curve.GetTangent(1))); Assert.IsTrue(Vector2F.AreNumericallyEqual(new Vector2F(2, 2), curve.GetTangent(2))); Assert.IsTrue(Numeric.AreEqual(new Vector2F(4, 4).Length, curve.GetLength(0, 2, 10, 0.01f), 0.1f)); curve.PreLoop = CurveLoopType.Cycle; curve.PostLoop = CurveLoopType.Cycle; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.CycleOffset; curve.PostLoop = CurveLoopType.CycleOffset; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); curve.PreLoop = CurveLoopType.Oscillate; curve.PostLoop = CurveLoopType.Oscillate; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(2)); Assert.AreEqual(0, curve.GetLength(0, 2, 10, 0.01f)); }
public void TwoKeyCurvesTest() { Path2F curve = new Path2F(); curve.Add(new PathKey2F() { Parameter = 1, Point = new Vector2F(1, 2), Interpolation = SplineInterpolation.CatmullRom, }); curve.Add(new PathKey2F() { Parameter = 3, Point = new Vector2F(3, 4), Interpolation = SplineInterpolation.CatmullRom, }); curve.PreLoop = CurveLoopType.Constant; curve.PostLoop = CurveLoopType.Constant; Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(0)); Assert.AreEqual(new Vector2F(1, 2), curve.GetPoint(1)); Assert.AreEqual(new Vector2F(2, 3), curve.GetPoint(2)); Assert.AreEqual(new Vector2F(3, 4), curve.GetPoint(3)); Assert.AreEqual(new Vector2F(3, 4), curve.GetPoint(4)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(0)); Assert.AreEqual(new Vector2F(1, 1), curve.GetTangent(1)); Assert.AreEqual(new Vector2F(1, 1), curve.GetTangent(2)); Assert.AreEqual(new Vector2F(1, 1), curve.GetTangent(3)); Assert.AreEqual(new Vector2F(0, 0), curve.GetTangent(4)); Assert.IsTrue(Numeric.AreEqual(new Vector2F(2, 2).Length, curve.GetLength(0, 4, 10, 0.01f), 0.01f)); curve.PreLoop = CurveLoopType.Linear; curve.PostLoop = CurveLoopType.Linear; curve.PreLoop = CurveLoopType.Cycle; curve.PostLoop = CurveLoopType.Cycle; curve.PreLoop = CurveLoopType.CycleOffset; curve.PostLoop = CurveLoopType.CycleOffset; curve.PreLoop = CurveLoopType.Oscillate; curve.PostLoop = CurveLoopType.Oscillate; }
public void GetPointShouldReturnNanIfPathIsEmpty() { Path2F empty = new Path2F(); empty.Sort(); Vector2F p = empty.GetPoint(-0.5f); Assert.IsNaN(p.X); Assert.IsNaN(p.Y); p = empty.GetPoint(0); Assert.IsNaN(p.X); Assert.IsNaN(p.Y); p = empty.GetPoint(0.5f); Assert.IsNaN(p.X); Assert.IsNaN(p.Y); }