def ajagged(b, epsilon): j = random.randint(0, len(b) - 1) l = b[j - 1].d(b[j]) t = random.uniform(0, 2.0 * numpy.pi) n = random.randint(3, 8) stamp = b[j - 1].mid(b[j]).pring(l / 2.0, n) q = quat(1, 0, 0, 0).av(t, vec3(0, 0, 1)) q.rotps(stamp) if pym.bintbxy(b, stamp, col=False, ie=False): nbs = pym.ebdxy(b, stamp, epsilon) nbas = [pym.bareaxy(nb) for nb in nbs] nb = nbs[nbas.index(max(nbas))] nb = pym.aggregate(nb, 1) if pym.bvalidxy(nb) > 0: b = nb bval = pym.bvalidxy(b) if bval == -1: b.reverse() if not pym.bvalidxy(b) > 0: ax = dtl.plot_axes_xy(700) ax = dtl.plot_polygon_xy(b, ax, lw=4, col='b') ax = dtl.plot_points_xy(b, ax, number=True) ax = dtl.plot_polygon_xy(stamp, ax, lw=2, col='r') plt.show() #pdb.set_trace() raise ValueError return b
def ajagged(b,epsilon): j = random.randint(0,len(b)-1) l = b[j-1].d(b[j]) t = random.uniform(0,2.0*numpy.pi) n = random.randint(3,8) stamp = b[j-1].mid(b[j]).pring(l/2.0,n) q = quat(1,0,0,0).av(t,vec3(0,0,1)) q.rotps(stamp) if pym.bintbxy(b,stamp,col = False,ie = False): nbs = pym.ebdxy(b,stamp,epsilon) nbas = [pym.bareaxy(nb) for nb in nbs] nb = nbs[nbas.index(max(nbas))] nb = pym.aggregate(nb,1) if pym.bvalidxy(nb) > 0:b = nb bval = pym.bvalidxy(b) if bval == -1:b.reverse() if not pym.bvalidxy(b) > 0: ax = dtl.plot_axes_xy(700) ax = dtl.plot_polygon_xy(b,ax,lw = 4,col = 'b') ax = dtl.plot_points_xy(b,ax,number = True) ax = dtl.plot_polygon_xy(stamp,ax,lw = 2,col = 'r') plt.show() #pdb.set_trace() raise ValueError return b
def test_intrixy(self): a = vec3(-93.6169662475586, 46.23309326171875, 0.0) b = vec3(28.083663940429688, 48.28422546386719, 0.0) c = vec3(25.696874618530273, 48.28422546386719, 0.0) p = vec3(-93.34214782714844, 43.73178482055664, 0.0) i = p.intrixy(a,b,c) self.assertFalse(i) ax = dtl.plot_axes_xy(100) ax = dtl.plot_points_xy((a,b,c,p),ax) ax = dtl.plot_polygon_xy((a,b,c),ax,lw = 2,col = 'g') plt.show()
def test_intrixy(self): a = vec3(-93.6169662475586, 46.23309326171875, 0.0) b = vec3(28.083663940429688, 48.28422546386719, 0.0) c = vec3(25.696874618530273, 48.28422546386719, 0.0) p = vec3(-93.34214782714844, 43.73178482055664, 0.0) i = p.intrixy(a, b, c) self.assertFalse(i) ax = dtl.plot_axes_xy(100) ax = dtl.plot_points_xy((a, b, c, p), ax) ax = dtl.plot_polygon_xy((a, b, c), ax, lw=2, col='g') plt.show()
def layfootprints(r, t, e): eseam, seams, loops = pym.pgtopy(r, 5, e, findeseam=True) ebnd = seams[eseam] eloop = loops[eseam] k = 0 easement = None for j in range(len(ebnd)): road = r.es[r.elook[(eloop[k - 1], eloop[k])]] edge = (ebnd[j - 1], ebnd[j]) tang = edge[0].tov(edge[1]) norm = tang.crs(vec3(0, 0, 1)).nrm() p1 = edge[0].cp().trn(tang.cp().uscl(0.0)) p2 = edge[0].cp().trn(tang.cp().uscl(1.0)) p3 = p2.cp().trn(norm.uscl(10)) p4 = p1.cp().trn(norm) newfp = [p1, p2, p3, p4] newfp = pym.contract(newfp, 2) newfp = pym.ebdxy(newfp, ebnd)[0] newfp = (newfp, []) preasement = easement if easement is None: easement = newfp else: easement = pym.epuxy(easement, newfp)[0] if not eloop[k] == eloop[k - 2]: k += 1 if False and j > 85: print('walk', j, len(eloop), len(ebnd)) ax = dtl.plot_axes_xy(300) ax = dtl.plot_polygon_xy(ebnd, ax, lw=3, col='b') ax = dtl.plot_points_xy(ebnd, ax, number=True) ax = dtl.plot_edges_xy(edge, ax, lw=7, col='r') ax = dtl.plot_polygon_full_xy(easement, ax, lw=5, col='g') if preasement: ax = dtl.plot_polygon_full_xy(preasement, ax, lw=3, col='m') plt.show() #easement = pym.bsuxy(easement,e) fps = ([easement], [[] for l in range(len(loops) - 1)]) # generate a set of footprints connected to road # footprint must not overlap interiors with ebnd ax = dtl.plot_axes_xy(300) ax = dtl.plot_polygon_xy(ebnd, ax, lw=3, col='b') for fp in fps[0]: ax = dtl.plot_polygon_full_xy(fp, ax, lw=3, col='g') plt.show() return fps
def pl(): ax = dtl.plot_axes_xy(700) ax = dtl.plot_polygon_xy(fp,ax,lw = 2,col = 'g') ax = dtl.plot_points_xy(fp,ax,number = True) plt.show()
def test_bnrm(self): def pl(): ax = dtl.plot_axes_xy(700) ax = dtl.plot_polygon_xy(fp,ax,lw = 2,col = 'g') ax = dtl.plot_points_xy(fp,ax,number = True) plt.show() ebnd = db.persistent_container('/home/cogle/dev/dilapidator/test/','ebnd') ebnd.load() ebnd = ebnd.data ax = dtl.plot_axes_xy(120) ax = dtl.plot_polygon_xy(ebnd,ax,lw = 4,col = 'r') ax = dtl.plot_points_xy(ebnd,ax,number = True) plt.show() fp = [ vec3(-6.9831085205078125, 121.9827880859375, 0.0), vec3(-26.983108520507812, 121.9827880859375, 0.0), vec3(-46.98310852050781, 121.9827880859375, 0.0), vec3(-66.98310852050781, 121.9827880859375, 0.0), vec3(-85.984375, 121.9827880859375, 0.0), vec3(-85.98310852050781, 102.9827880859375, 0.0), vec3(-85.98310852050781, 82.9827880859375, 0.0), vec3(-85.98310852050781, 63.9814453125, 0.0), vec3(-66.98310852050781, 63.9827880859375, 0.0), vec3(-46.98310852050781, 63.9827880859375, 0.0), vec3(-26.983108520507812, 63.9827880859375, 0.0), vec3(-6.9831085205078125, 63.9827880859375, 0.0), vec3(13.016891479492188, 63.9827880859375, 0.0), vec3(33.01689147949219, 63.9827880859375, 0.0), vec3(53.01689147949219, 63.9827880859375, 0.0), vec3(73.01689147949219, 63.9827880859375, 0.0), vec3(93.01689147949219, 63.9827880859375, 0.0), vec3(112.017578125, 63.9827880859375, 0.0), vec3(112.01689147949219, 82.9827880859375, 0.0), vec3(112.01689147949219, 102.9827880859375, 0.0), vec3(112.01689147949219, 121.9833984375, 0.0), vec3(93.01689147949219, 121.9827880859375, 0.0), vec3(73.01689147949219, 121.9827880859375, 0.0), vec3(53.01689147949219, 121.9827880859375, 0.0), vec3(33.01689147949219, 121.9827880859375, 0.0), vec3(13.016891479492188, 121.9827880859375, 0.0)] ax = dtl.plot_axes_xy(200) ax = dtl.plot_polygon_xy(fp,ax,lw = 3,col = 'b') ax = dtl.plot_points_xy(fp,ax,number = True) plt.show() self.assertTrue(pym.bnrm(fp).isnear(vec3(0,0,1))) vb = vec3(-100,100,0).sq(400,400) dx,dy,xn,yn = 20,20,10,30 o = vec3(-dx*xn/2.0,-dy*yn,0).com(vb) vgrid = [o.cp().trn(vec3(x*dx,y*dy,0)) for y in range(yn) for x in range(xn)] boxes = [p.sq(dx,dy) for p in vgrid] boxes = [b for b in boxes if pym.binbxy(b,vb)] box = pym.bsuxy(boxes) self.assertTrue(pym.bnrm(box[0]).isnear(vec3(0,0,1))) fp = [vec3(0,0,0), vec3(20,0,0),vec3(20,-20,0),vec3(40,-30,0),vec3(60,-30,0), vec3(60,40,0),vec3(-60,40,0),vec3(-60,-30,0),vec3(-40,-30,0), vec3(-20,-20,0),vec3(-20,0,0)] self.assertTrue(pym.bnrm(fp).isnear(vec3(0,0,1))) self.assertTrue(pym.bnrm(fp[::-1]).isnear(vec3(0,0,-1))) fp = [ vec3(-282.1204528808594, 127.64604187011719, 0.0), vec3(-334.1018981933594, 179.6274871826172, 0.0), vec3(-130.43038940429688, 179.62747192382812, 0.0), vec3(-130.43038940429688, 336.434326171875, 0.0), vec3(-36.91655731201172, 366.8188171386719, 0.0), vec3(-36.916534423828125, 461.72088623046875, 0.0), vec3(191.35768127441406, 461.841796875, 0.0), vec3(275.3216552734375, 373.85748291015625, 0.0), vec3(152.47915649414062, 204.779296875, 0.0), vec3(332.7578430175781, -43.35302734375, 0.0), vec3(454.96630859375, -3.6450958251953125, 0.0), vec3(456.61492919921875, -166.4105224609375, 0.0), vec3(316.5687561035156, -120.90676879882812, 0.0), vec3(201.97442626953125, -278.63232421875, 0.0), vec3(277.8673400878906, -383.0899963378906, 0.0), vec3(195.58241271972656, -472.19598388671875, 0.0), vec3(-10.369781494140625, -468.9277038574219, 0.0), vec3(-10.369804382324219, -395.02154541015625, 0.0), vec3(-78.82841491699219, -326.56292724609375, 0.0), vec3(-175.64352416992188, -326.56292724609375, 0.0), vec3(-244.10214233398438, -395.0215759277344, 0.0), vec3(-244.10214233398438, -414.89117431640625, 0.0), vec3(-465.6239929199219, -192.85736083984375, 0.0), vec3(-466.0299072265625, -122.715087890625, 0.0), vec3(-385.8233947753906, -122.71507263183594, 0.0), vec3(-282.1204528808594, -19.01211929321289, 0.0), ] bn = pym.bnrm(fp) print('bnnn',bn) fp.reverse() pl() bn = pym.bnrm(fp) print('bnnnrev',bn) self.assertTrue(pym.bnrm(fp).isnear(vec3(0,0,1))) self.assertTrue(pym.bnrm(fp[::-1]).isnear(vec3(0,0,-1)))
def test_sintbxyp(self): u1,u2 = (vec3(77.000000,33.001942,0.000000) , vec3(63.000000,33.000004,0.000000)) b = [ vec3(75.000000,35.000011,0.000000) , vec3(76.999992,35.000011,0.000000) , vec3(76.999992,32.999996,0.000000) , vec3(67.000000,33.000000,0.000000) , vec3(66.999992,22.999996,0.000000) , vec3(33.000000,23.000004,0.000000) , vec3(33.000000,33.001392,0.000000) , vec3(23.001953,33.000004,0.000000) , vec3(23.001545,61.998047,0.000000) , vec3(23.001442,63.001602,0.000000) , vec3(18.000002,63.001541,0.000000) , vec3(16.999865,63.001438,0.000000) , vec3(17.000000,62.000000,0.000000) , vec3(17.000000,58.000000,0.000000) , vec3(17.000000,42.000000,0.000000) , vec3(17.000000,38.000000,0.000000) , vec3(17.000000,18.000000,0.000000) , vec3(5.000000,18.000000,0.000000) , vec3(5.000000,20.000000,0.000000) , vec3(5.000000,38.000000,0.000000) , vec3(5.000000,40.000000,0.000000) , vec3(5.000000,42.000000,0.000000) , vec3(5.000000,58.000000,0.000000) , vec3(5.000000,60.000000,0.000000) , vec3(5.000000,62.000000,0.000000) , vec3(5.000000,63.000206,0.000000) , vec3(5.000000,75.000000,0.000000) , vec3(16.998253,75.000000,0.000000) , vec3(17.999998,75.000000,0.000000) , vec3(19.999998,75.000000,0.000000) , vec3(22.000002,75.000000,0.000000) , vec3(23.000202,75.000000,0.000000) , vec3(34.999996,75.000000,0.000000) , vec3(34.999996,63.001747,0.000000) , vec3(34.999996,61.999722,0.000000) , vec3(34.999996,60.000000,0.000000) , vec3(34.999996,58.000000,0.000000) , vec3(35.000000,36.999996,0.000000) , vec3(35.000000,35.000004,0.000000) , vec3(36.999866,35.000000,0.000000) , vec3(63.000004,35.000004,0.000000) , vec3(64.999992,35.000004,0.000000) , vec3(64.999992,37.000004,0.000000) , vec3(64.999992,43.001785,0.000000) , vec3(64.999992,45.000004,0.000000) , vec3(62.999996,45.000004,0.000000) , vec3(56.999790,45.000004,0.000000) , vec3(44.999996,45.000000,0.000000) , vec3(44.999996,56.998211,0.000000) , vec3(44.999996,58.000000,0.000000) , vec3(44.999996,60.000000,0.000000) , vec3(44.999996,62.000000,0.000000) , vec3(45.000000,63.000206,0.000000) , vec3(45.000000,75.000000,0.000000) , vec3(57.000000,75.000000,0.000000) , vec3(57.999996,75.000000,0.000000) , vec3(59.999992,75.000000,0.000000) , vec3(62.000004,75.000000,0.000000) , vec3(63.000195,75.000000,0.000000) , vec3(74.999985,75.000000,0.000000) , vec3(74.999985,63.001747,0.000000) , vec3(74.999985,60.000004,0.000000) , vec3(74.999985,57.999996,0.000000) , vec3(63.001968,58.000004,0.000000) , vec3(63.001446,63.000515,0.000000) , vec3(58.000008,63.000000,0.000000) , vec3(56.998913,63.001442,0.000000) , vec3(56.998459,58.000004,0.000000) , vec3(56.998562,56.999187,0.000000) , vec3(67.000008,57.000004,0.000000) , vec3(67.000000,47.000000,0.000000) , vec3(74.999992,47.000004,0.000000) , ] ips = pym.sintbxyp(u1,u2,b,ieb = False) ax = dtl.plot_axes_xy(100) ax = dtl.plot_polygon_xy(b,ax,lw = 2,col = 'g') ax = dtl.plot_points_xy((u1,u2),ax,cs = ['b']*2) ax = dtl.plot_edges_xy((u1,u2),ax,col = 'b') ax = dtl.plot_points_xy(ips,ax,cs = ['r']*len(ips)) print('IPS',ips) plt.show() pdb.set_trace()
def pl(): ax = dtl.plot_axes_xy(700) ax = dtl.plot_polygon_xy(fp, ax, lw=2, col='g') ax = dtl.plot_points_xy(fp, ax, number=True) plt.show()
def test_bnrm(self): def pl(): ax = dtl.plot_axes_xy(700) ax = dtl.plot_polygon_xy(fp, ax, lw=2, col='g') ax = dtl.plot_points_xy(fp, ax, number=True) plt.show() ebnd = db.persistent_container('/home/cogle/dev/dilapidator/test/', 'ebnd') ebnd.load() ebnd = ebnd.data ax = dtl.plot_axes_xy(120) ax = dtl.plot_polygon_xy(ebnd, ax, lw=4, col='r') ax = dtl.plot_points_xy(ebnd, ax, number=True) plt.show() fp = [ vec3(-6.9831085205078125, 121.9827880859375, 0.0), vec3(-26.983108520507812, 121.9827880859375, 0.0), vec3(-46.98310852050781, 121.9827880859375, 0.0), vec3(-66.98310852050781, 121.9827880859375, 0.0), vec3(-85.984375, 121.9827880859375, 0.0), vec3(-85.98310852050781, 102.9827880859375, 0.0), vec3(-85.98310852050781, 82.9827880859375, 0.0), vec3(-85.98310852050781, 63.9814453125, 0.0), vec3(-66.98310852050781, 63.9827880859375, 0.0), vec3(-46.98310852050781, 63.9827880859375, 0.0), vec3(-26.983108520507812, 63.9827880859375, 0.0), vec3(-6.9831085205078125, 63.9827880859375, 0.0), vec3(13.016891479492188, 63.9827880859375, 0.0), vec3(33.01689147949219, 63.9827880859375, 0.0), vec3(53.01689147949219, 63.9827880859375, 0.0), vec3(73.01689147949219, 63.9827880859375, 0.0), vec3(93.01689147949219, 63.9827880859375, 0.0), vec3(112.017578125, 63.9827880859375, 0.0), vec3(112.01689147949219, 82.9827880859375, 0.0), vec3(112.01689147949219, 102.9827880859375, 0.0), vec3(112.01689147949219, 121.9833984375, 0.0), vec3(93.01689147949219, 121.9827880859375, 0.0), vec3(73.01689147949219, 121.9827880859375, 0.0), vec3(53.01689147949219, 121.9827880859375, 0.0), vec3(33.01689147949219, 121.9827880859375, 0.0), vec3(13.016891479492188, 121.9827880859375, 0.0) ] ax = dtl.plot_axes_xy(200) ax = dtl.plot_polygon_xy(fp, ax, lw=3, col='b') ax = dtl.plot_points_xy(fp, ax, number=True) plt.show() self.assertTrue(pym.bnrm(fp).isnear(vec3(0, 0, 1))) vb = vec3(-100, 100, 0).sq(400, 400) dx, dy, xn, yn = 20, 20, 10, 30 o = vec3(-dx * xn / 2.0, -dy * yn, 0).com(vb) vgrid = [ o.cp().trn(vec3(x * dx, y * dy, 0)) for y in range(yn) for x in range(xn) ] boxes = [p.sq(dx, dy) for p in vgrid] boxes = [b for b in boxes if pym.binbxy(b, vb)] box = pym.bsuxy(boxes) self.assertTrue(pym.bnrm(box[0]).isnear(vec3(0, 0, 1))) fp = [ vec3(0, 0, 0), vec3(20, 0, 0), vec3(20, -20, 0), vec3(40, -30, 0), vec3(60, -30, 0), vec3(60, 40, 0), vec3(-60, 40, 0), vec3(-60, -30, 0), vec3(-40, -30, 0), vec3(-20, -20, 0), vec3(-20, 0, 0) ] self.assertTrue(pym.bnrm(fp).isnear(vec3(0, 0, 1))) self.assertTrue(pym.bnrm(fp[::-1]).isnear(vec3(0, 0, -1))) fp = [ vec3(-282.1204528808594, 127.64604187011719, 0.0), vec3(-334.1018981933594, 179.6274871826172, 0.0), vec3(-130.43038940429688, 179.62747192382812, 0.0), vec3(-130.43038940429688, 336.434326171875, 0.0), vec3(-36.91655731201172, 366.8188171386719, 0.0), vec3(-36.916534423828125, 461.72088623046875, 0.0), vec3(191.35768127441406, 461.841796875, 0.0), vec3(275.3216552734375, 373.85748291015625, 0.0), vec3(152.47915649414062, 204.779296875, 0.0), vec3(332.7578430175781, -43.35302734375, 0.0), vec3(454.96630859375, -3.6450958251953125, 0.0), vec3(456.61492919921875, -166.4105224609375, 0.0), vec3(316.5687561035156, -120.90676879882812, 0.0), vec3(201.97442626953125, -278.63232421875, 0.0), vec3(277.8673400878906, -383.0899963378906, 0.0), vec3(195.58241271972656, -472.19598388671875, 0.0), vec3(-10.369781494140625, -468.9277038574219, 0.0), vec3(-10.369804382324219, -395.02154541015625, 0.0), vec3(-78.82841491699219, -326.56292724609375, 0.0), vec3(-175.64352416992188, -326.56292724609375, 0.0), vec3(-244.10214233398438, -395.0215759277344, 0.0), vec3(-244.10214233398438, -414.89117431640625, 0.0), vec3(-465.6239929199219, -192.85736083984375, 0.0), vec3(-466.0299072265625, -122.715087890625, 0.0), vec3(-385.8233947753906, -122.71507263183594, 0.0), vec3(-282.1204528808594, -19.01211929321289, 0.0), ] bn = pym.bnrm(fp) print('bnnn', bn) fp.reverse() pl() bn = pym.bnrm(fp) print('bnnnrev', bn) self.assertTrue(pym.bnrm(fp).isnear(vec3(0, 0, 1))) self.assertTrue(pym.bnrm(fp[::-1]).isnear(vec3(0, 0, -1)))
def test_sintbxyp(self): u1, u2 = (vec3(77.000000, 33.001942, 0.000000), vec3(63.000000, 33.000004, 0.000000)) b = [ vec3(75.000000, 35.000011, 0.000000), vec3(76.999992, 35.000011, 0.000000), vec3(76.999992, 32.999996, 0.000000), vec3(67.000000, 33.000000, 0.000000), vec3(66.999992, 22.999996, 0.000000), vec3(33.000000, 23.000004, 0.000000), vec3(33.000000, 33.001392, 0.000000), vec3(23.001953, 33.000004, 0.000000), vec3(23.001545, 61.998047, 0.000000), vec3(23.001442, 63.001602, 0.000000), vec3(18.000002, 63.001541, 0.000000), vec3(16.999865, 63.001438, 0.000000), vec3(17.000000, 62.000000, 0.000000), vec3(17.000000, 58.000000, 0.000000), vec3(17.000000, 42.000000, 0.000000), vec3(17.000000, 38.000000, 0.000000), vec3(17.000000, 18.000000, 0.000000), vec3(5.000000, 18.000000, 0.000000), vec3(5.000000, 20.000000, 0.000000), vec3(5.000000, 38.000000, 0.000000), vec3(5.000000, 40.000000, 0.000000), vec3(5.000000, 42.000000, 0.000000), vec3(5.000000, 58.000000, 0.000000), vec3(5.000000, 60.000000, 0.000000), vec3(5.000000, 62.000000, 0.000000), vec3(5.000000, 63.000206, 0.000000), vec3(5.000000, 75.000000, 0.000000), vec3(16.998253, 75.000000, 0.000000), vec3(17.999998, 75.000000, 0.000000), vec3(19.999998, 75.000000, 0.000000), vec3(22.000002, 75.000000, 0.000000), vec3(23.000202, 75.000000, 0.000000), vec3(34.999996, 75.000000, 0.000000), vec3(34.999996, 63.001747, 0.000000), vec3(34.999996, 61.999722, 0.000000), vec3(34.999996, 60.000000, 0.000000), vec3(34.999996, 58.000000, 0.000000), vec3(35.000000, 36.999996, 0.000000), vec3(35.000000, 35.000004, 0.000000), vec3(36.999866, 35.000000, 0.000000), vec3(63.000004, 35.000004, 0.000000), vec3(64.999992, 35.000004, 0.000000), vec3(64.999992, 37.000004, 0.000000), vec3(64.999992, 43.001785, 0.000000), vec3(64.999992, 45.000004, 0.000000), vec3(62.999996, 45.000004, 0.000000), vec3(56.999790, 45.000004, 0.000000), vec3(44.999996, 45.000000, 0.000000), vec3(44.999996, 56.998211, 0.000000), vec3(44.999996, 58.000000, 0.000000), vec3(44.999996, 60.000000, 0.000000), vec3(44.999996, 62.000000, 0.000000), vec3(45.000000, 63.000206, 0.000000), vec3(45.000000, 75.000000, 0.000000), vec3(57.000000, 75.000000, 0.000000), vec3(57.999996, 75.000000, 0.000000), vec3(59.999992, 75.000000, 0.000000), vec3(62.000004, 75.000000, 0.000000), vec3(63.000195, 75.000000, 0.000000), vec3(74.999985, 75.000000, 0.000000), vec3(74.999985, 63.001747, 0.000000), vec3(74.999985, 60.000004, 0.000000), vec3(74.999985, 57.999996, 0.000000), vec3(63.001968, 58.000004, 0.000000), vec3(63.001446, 63.000515, 0.000000), vec3(58.000008, 63.000000, 0.000000), vec3(56.998913, 63.001442, 0.000000), vec3(56.998459, 58.000004, 0.000000), vec3(56.998562, 56.999187, 0.000000), vec3(67.000008, 57.000004, 0.000000), vec3(67.000000, 47.000000, 0.000000), vec3(74.999992, 47.000004, 0.000000), ] ips = pym.sintbxyp(u1, u2, b, ieb=False) ax = dtl.plot_axes_xy(100) ax = dtl.plot_polygon_xy(b, ax, lw=2, col='g') ax = dtl.plot_points_xy((u1, u2), ax, cs=['b'] * 2) ax = dtl.plot_edges_xy((u1, u2), ax, col='b') ax = dtl.plot_points_xy(ips, ax, cs=['r'] * len(ips)) print('IPS', ips) plt.show() pdb.set_trace()