Пример #1
0
        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);
            });
        }
Пример #2
0
        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);
            });
        }
Пример #3
0
 /// 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));
 }