public void APWZT() { // Arrange Spline2D one = new Spline2D(new List <Vector2> { new Vector2(0, 0), new Vector2(0, 1), new Vector2(0, 2) }); Spline2D two = new Spline2D(new List <Vector2> { new Vector2(0, 0), new Vector2(1, 1), new Vector2(2, 2) }); // Act Vector2 positionOne = one.InterpolateDistance(1.5f); Vector2 positionTwo = two.InterpolateDistance(1.5f); Vector2 positionThree = one.InterpolateDistance(0.5f); Vector2 positionFour = two.InterpolateDistance(0.5f); Vector2 positionFive = one.InterpolateDistance(1.5f); Vector2 positionSix = two.InterpolateDistance(1.5f); // Assert Assert.Multiple(() => { Assert.AreEqual(new Vector2(0, 1.5015914f), positionOne); Assert.AreEqual(new Vector2(1.0576555f, 1.0576555f), positionTwo); Assert.AreEqual(new Vector2(0, 0.49840856f), positionThree); Assert.AreEqual(new Vector2(0.35238677f, 0.35238677f), positionFour); Assert.AreEqual(new Vector2(0, 1.5015914f), positionFive); Assert.AreEqual(new Vector2(1.0576555f, 1.0576555f), positionSix); }); }
public void YXMWS() { // Arrange Spline2D one = new Spline2D(new List <Vector2> { new Vector2(0, 0), new Vector2(0, 1), new Vector2(0, 2) }); Spline2D two = new Spline2D(new List <Vector2> { new Vector2(0, 0), new Vector2(1, 1), new Vector2(2, 2) }); // Act Vector2 positionOne = one.InterpolateDistance(1.5f); Vector2 positionTwo = two.InterpolateDistance(1.5f); // Assert Assert.Multiple(() => { Assert.AreEqual(new Vector2(0, 1.5015914f), positionOne); Assert.AreEqual(new Vector2(1.0576555f, 1.0576555f), positionTwo); }); }
/// Interpolate a position on the entire curve based on distance. This is /// approximate, the accuracy of can be changed via LengthSamplesPerSegment public Vector2 InterpolateDistance(float dist) { InitSpline(); return(spline.InterpolateDistance(dist)); }