示例#1
0
        public void SplitPathWithGaps()
        {
            PointF[] points =
            {
                new PointF(0,   0), new PointF(10, 10), new PointF(20, 40), new PointF(-10, 10),
                new PointF(20, 20), new PointF(25, 30), new PointF(25, 30), new PointF(40, 25)
            };
            PointKind[] kinds =
            {
                PointKind.Normal, PointKind.Normal, PointKind.BezierControl, PointKind.BezierControl,
                PointKind.Normal, PointKind.Normal, PointKind.Normal,        PointKind.Normal
            };
            SymPath p = new SymPath(points, kinds);

            LegGap[] gapStartStops = { new LegGap(-2, 3), new LegGap(15, 7), new LegGap(25, 1.5F), new LegGap(300, 5) };

            SymPath[] results = LegGap.SplitPathWithGaps(p, gapStartStops);

            foreach (SymPath path in results)
            {
                Console.WriteLine(path);
            }

            Assert.AreEqual(@"N(0.71,0.71)--N(10,10)--B(10.09,10.28)--B(10.18,10.56)--N(10.27,10.83)", results[0].ToString());
            Assert.AreEqual(@"N(11.95,17.61)--B(12.12,18.8)--B(12.17,19.79)--N(12.12,20.6)", results[1].ToString());
            Assert.AreEqual(@"N(11.88,22.07)--B(9.81,28.87)--B(-3.49,12.17)--N(20,20)--N(25,30)--N(25,30)--N(40,25)", results[2].ToString());
        }
示例#2
0
        public void GapStartStopPoints()
        {
            SymPath path = new SymPath(new PointF[] { new PointF(10, 10), new PointF(10, 0), new PointF(0, 0) });

            LegGap[] gaps     = { new LegGap(1, 2), new LegGap(7, 0.5F), new LegGap(12, 2) };
            PointF[] expected = { new PointF(10, 9), new PointF(10, 7), new PointF(10, 3), new PointF(10, 2.5F), new PointF(8, 0), new PointF(6, 0) };

            PointF[] result = LegGap.GapStartStopPoints(path, gaps);
            TestUtil.TestEnumerableAnyOrder(result, expected);
        }
示例#3
0
        public void SimplifyGaps()
        {
            LegGap[] gaps     = { new LegGap(7, 8), new LegGap(5, 0), new LegGap(25, 5), new LegGap(-7, 2), new LegGap(-1, 3), new LegGap(8.1F, 2.2F), new LegGap(100, 100), new LegGap(8, 1.4F), new LegGap(14, 8.5F), new LegGap(3, 0.5F) };
            LegGap[] expected = { new LegGap(0, 2), new LegGap(3, 0.5F), new LegGap(7, 15.5F), new LegGap(25, 2) };

            LegGap[] result = LegGap.SimplifyGaps(gaps, 27);
            Assert.AreEqual(expected.Length, result.Length);
            for (int i = 0; i < result.Length; ++i)
            {
                Assert.IsTrue(expected[i] == result[i]);
            }
        }
示例#4
0
        public void AddGap1()
        {
            // Add a gap to a null gap array.
            SymPath path = new SymPath(new PointF[] { new PointF(10, 10), new PointF(10, 0), new PointF(0, 0) });
            PointF  pt1  = new PointF(7, -2);
            PointF  pt2  = new PointF(11, 4);

            LegGap[] gaps = LegGap.AddGap(path, null, pt1, pt2);
            Assert.AreEqual(1, gaps.Length);
            Assert.AreEqual(6, gaps[0].distanceFromStart);
            Assert.AreEqual(7, gaps[0].length);
        }
示例#5
0
        public void MoveStartStopPoint()
        {
            SymPath path = new SymPath(new PointF[] { new PointF(10, 10), new PointF(10, 0), new PointF(0, 0) });

            LegGap[] gaps = { new LegGap(1, 2), new LegGap(7, 0.5F), new LegGap(12, 2) };

            LegGap[] result   = LegGap.MoveStartStopPoint(path, gaps, new PointF(8, 0), new PointF(8.5F, 0));
            LegGap[] expected = { new LegGap(1, 2), new LegGap(7, 0.5F), new LegGap(11.5F, 2.5F) };
            TestUtil.TestEnumerableAnyOrder(result, expected);

            result   = LegGap.MoveStartStopPoint(path, gaps, new PointF(10, 2.5F), new PointF(8, 2));
            expected = new LegGap[] { new LegGap(1, 2), new LegGap(7, 1F), new LegGap(12, 2) };
            TestUtil.TestEnumerableAnyOrder(result, expected);
        }
示例#6
0
        public void MoveGapsToNewPath()
        {
            SymPath oldPath = new SymPath(new PointF[] { new PointF(0, 0), new PointF(10, 10) });

            LegGap[] oldGaps = { new LegGap(1, 2), new LegGap(7, 0.5F), new LegGap(12, 2) };
            SymPath  newPath = new SymPath(new PointF[] { new PointF(10, 10), new PointF(10, 0), new PointF(0, 0) });

            LegGap[] expected = { new LegGap(0.1F, 1.414F), new LegGap(17.88F, 1.414F) };

            LegGap[] newGaps = LegGap.MoveGapsToNewPath(oldGaps, oldPath, newPath);

            // Make sure result and expected match.
            Assert.AreEqual(expected.Length, newGaps.Length);
            for (int i = 0; i < newGaps.Length; ++i)
            {
                Assert.AreEqual(expected[i].distanceFromStart, newGaps[i].distanceFromStart, 0.01F);
                Assert.AreEqual(expected[i].length, newGaps[i].length, 0.01F);
            }
        }
示例#7
0
        public void AddGap2()
        {
            // Add a gap to an existing array.
            SymPath path = new SymPath(new PointF[] { new PointF(10, 10), new PointF(10, 0), new PointF(0, 0) });

            LegGap[] oldGaps = { new LegGap(6, 7) };
            PointF   pt1     = new PointF(8, -2);
            PointF   pt2     = new PointF(11, 8.5F);

            LegGap[] gaps = LegGap.AddGap(path, oldGaps, pt1, pt2);
            Assert.AreEqual(1, gaps.Length);
            Assert.AreEqual(1.5F, gaps[0].distanceFromStart);
            Assert.AreEqual(11.5F, gaps[0].length);

            pt1  = new PointF(3, -2);
            pt2  = new PointF(1.5F, 1);
            gaps = LegGap.AddGap(path, oldGaps, pt1, pt2);
            Assert.AreEqual(2, gaps.Length);
            Assert.AreEqual(6, gaps[0].distanceFromStart);
            Assert.AreEqual(7, gaps[0].length);
            Assert.AreEqual(17F, gaps[1].distanceFromStart);
            Assert.AreEqual(1.5F, gaps[1].length);
        }
示例#8
0
        public void MoveStartStopPoint()
        {
            SymPath path = new SymPath(new PointF[] { new PointF(10, 10), new PointF(10, 0), new PointF(0, 0) });
            LegGap[] gaps = { new LegGap(1, 2), new LegGap(7, 0.5F), new LegGap(12, 2) };

            LegGap[] result = LegGap.MoveStartStopPoint(path, gaps, new PointF(8, 0), new PointF(8.5F, 0));
            LegGap[] expected = { new LegGap(1, 2), new LegGap(7, 0.5F), new LegGap(11.5F, 2.5F) };
            TestUtil.TestEnumerableAnyOrder(result, expected);

            result = LegGap.MoveStartStopPoint(path, gaps, new PointF(10, 2.5F), new PointF(8,2));
            expected = new LegGap[] { new LegGap(1, 2), new LegGap(7, 1F), new LegGap(12, 2) };
            TestUtil.TestEnumerableAnyOrder(result, expected);
        }