def test_cubic_cubic(self): # q1 = Bezier(10,100, 90,30, 40,140, 220,220) # q2 = Bezier(5,150, 180,20, 80,250, 210,190) # console.log(q1.intersects(q2)) q1 = CubicBezier(Point(10, 100), Point(90, 30), Point(40, 140), Point(220, 220)) q2 = CubicBezier(Point(5, 150), Point(180, 20), Point(80, 250), Point(210, 190)) i = q1.intersections(q2) # self.assertEqual(len(i),3) # self.assertAlmostEqual(i[0].point.x,81.7904225873) # self.assertAlmostEqual(i[0].point.y,109.899396337) # self.assertAlmostEqual(i[1].point.x,133.186831292) # self.assertAlmostEqual(i[1].point.y,167.148173322) # self.assertAlmostEqual(i[2].point.x,179.869157678) # self.assertAlmostEqual(i[2].point.y,199.661989162) import matplotlib.pyplot as plt fig, ax = plt.subplots() path = BezierPath() path.closed = False path.activeRepresentation = SegmentRepresentation(path, [q1]) path.plot(ax) path.activeRepresentation = SegmentRepresentation(path, [q2]) path.plot(ax) for n in i: circle = plt.Circle((n.point.x, n.point.y), 2, fill=True, color="red") ax.add_artist(circle)
def not_a_test_offset(self): b = DotMap({ "closed": False, "nodes": [{ "x": 412.0, "y": 500.0, "type": "line" }, { "x": 308.0, "y": 665.0, "type": "offcurve" }, { "x": 163.0, "y": 589.0, "type": "offcurve" }, { "x": 163.0, "y": 504.0, "type": "curve" }, { "x": 163.0, "y": 424.0, "type": "offcurve" }, { "x": 364.0, "y": 321.0, "type": "offcurve" }, { "x": 366.0, "y": 216.0, "type": "curve" }, { "x": 368.0, "y": 94.0, "type": "offcurve" }, { "x": 260.0, "y": 54.0, "type": "offcurve" }, { "x": 124.0, "y": 54.0, "type": "curve" }] }) path = BezierPath() path.activeRepresentation = GSPathRepresentation(path, b) import matplotlib.pyplot as plt fig, ax = plt.subplots() path.addExtremes() path.plot(ax) for n in path.asSegments(): p = n.tunniPoint if p: circle = plt.Circle((p.x, p.y), 1, fill=False, color="blue") ax.add_artist(circle) n.balance() path.translate(Point(5, 5)) path.plot(ax, color="red") # o1 = path.offset(Point(10,10)) # o2 = path.offset(Point(-10,-10)) # o2.reverse() # o1.append(o2) # o1.plot(ax) plt.show()