예제 #1
0
        public void PathWithMoreThanFourPointsIsNotRectangle()
        {
            var points = CurvePointUtils.RectanglePath(new CornerRadius(0));

            points.Add(CurvePointUtils.LinePoint(0.5, 0.5));
            var path = new SketchPath(points, true);

            Assert.That(Geometry.IsAxisAlignedRectangle(path), Is.False);
        }
예제 #2
0
        [TestCase(new [] { 0.0, 0.0 }, new [] { 5.0, 0.0 }, new [] { 5.0 + 3.0, 4.0 }, new [] { 3.0, 4.0 })] // rhombus (pythagoras <3)
        public void QuadrilateralIsNotRectangle(double [] p1, double [] p2, double [] p3, double [] p4)
        {
            var points = new List <SketchCurvePoint>
            {
                CurvePointUtils.LinePoint(p1[0], p1[1]),
                CurvePointUtils.LinePoint(p2[0], p2[1]),
                CurvePointUtils.LinePoint(p3[0], p3[1]),
                CurvePointUtils.LinePoint(p4[0], p4[1]),
            };

            Assert.That(Geometry.EdgesAreAxisAligned(points), Is.False);
        }
예제 #3
0
        public void StartWithCurve()
        {
            var points = new[]
            {
                CurvePointUtils.CurvePoint(new [] { 0.0, 100, 0, 0, 0, 200 }),
                CurvePointUtils.LinePoint(50, 0),
                CurvePointUtils.LinePoint(100, 100)
            };
            var curve = new SketchPath(points, false);
            var svg   = SketchCurvePointsToSvg.ToSvgString(curve);

            Console.WriteLine(svg);
            Assert.That(svg, Does.Match("^M 0 100 C 0 33.33333333333 16.66666666667 0 50 0 L 100 100$"));
        }
예제 #4
0
        public void EndWithCurve()
        {
            var points = new[]
            {
                CurvePointUtils.LinePoint(0, 100),
                CurvePointUtils.LinePoint(50, 0),
                CurvePointUtils.CurvePoint(new [] { 100.0, 100, 100, 200, 100, 0 })
            };

            var curve = new SketchPath(points, false);
            var svg   = SketchCurvePointsToSvg.ToSvgString(curve);

            Console.WriteLine(svg);
            Assert.That(svg, Does.Match("M 0 100 L 50 0 C 83.33333333333 0 100 33.33333333333 100 100$"));
        }
예제 #5
0
        public void CurveFromFirstPoint()
        {
            var points = new[]
            {
                CurvePointUtils.CurvePoint(new[] { 0.0, 0.0 },
                                           new[] { 123.20975114271207, 8.196425347535656 },
                                           new[] { -123.20975114271207, -8.1964253475356769 }),
                CurvePointUtils.LinePoint(94.613074518933793, 99)
            };

            var curve = new SketchPath(points, false);
            var svg   = SketchCurvePointsToSvg.ToSvgString(curve);

            Console.WriteLine(svg);
            Assert.That(svg, Does.Match("^M 0 0 C 82.13983409514 5.464283565024 113.6775256015 38.46428356502 94.61307451893 99$"));
        }
예제 #6
0
        public void ClosedStarPolygon()
        {
            var points = new[]
            {
                CurvePointUtils.LinePoint(0.5, 0.75),
                CurvePointUtils.LinePoint(0.20610737385376349, 0.90450849718747373),
                CurvePointUtils.LinePoint(0.26223587092621159, 0.57725424859373686),
                CurvePointUtils.LinePoint(0.024471741852423179, 0.34549150281252639),
                CurvePointUtils.LinePoint(0.35305368692688166, 0.29774575140626314),
                CurvePointUtils.LinePoint(0.49999999999999989, 0),
                CurvePointUtils.LinePoint(0.64694631307311823, 0.29774575140626314),
                CurvePointUtils.LinePoint(0.97552825814757682, 0.34549150281252616),
                CurvePointUtils.LinePoint(0.73776412907378841, 0.57725424859373675),
                CurvePointUtils.LinePoint(0.79389262614623668, 0.90450849718747361),
            };
            var path = new SketchPath(points, true);

            var svg = SketchCurvePointsToSvg.ToSvgString(path);

            Assert.That(svg, Does.Match("^M 0.5 0.75 L 0.2061073738538 0.9045084971875 L 0.2622358709262 0.5772542485937 L 0.02447174185242 0.3454915028125 L 0.3530536869269 0.2977457514063 L 0.5 0 L 0.6469463130731 0.2977457514063 L 0.9755282581476 0.3454915028125 L 0.7377641290738 0.5772542485937 L 0.7938926261462 0.9045084971875 L 0.5 0.75$"));
        }