コード例 #1
0
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
コード例 #2
0
ファイル: polygen.py プロジェクト: ctogle/dilapidator
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
コード例 #3
0
ファイル: vec3_tests.py プロジェクト: ctogle/dilapidator
    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()
コード例 #4
0
    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()
コード例 #5
0
    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
コード例 #6
0
ファイル: polymath_tests.py プロジェクト: ctogle/dilapidator
 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()
コード例 #7
0
ファイル: polymath_tests.py プロジェクト: ctogle/dilapidator
    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)))
コード例 #8
0
ファイル: polymath_tests.py プロジェクト: ctogle/dilapidator
 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()
コード例 #9
0
 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()
コード例 #10
0
    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)))
コード例 #11
0
 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()