Ejemplo n.º 1
0
 def BUBBLE_centers(self, perim, contents, base_first=False):
     perim = perim.verts
     a = self.a
     perim_xyz = [a.nodes[i]['xyz'] for i in perim]
     remain = list(perim)+[i for i in contents \
             if (not i in perim) and geometry.spherePolygonContains(perim_xyz, a.nodes[i]['xyz']) ]
     #print "BUBBLE_centers = ",perim, remain
     # choose max keys portal
     list_keys = np.array([a.nodes[i]['keys'] for i in remain])
     maxkey_point = np.argmax(list_keys)
     #print "max keys portal : ",remain[maxkey_point]," numkey = ",list_keys[maxkey_point]
     # compute distances of other points with him
     args_closest = nearest_to_X_in_Y(a, remain[maxkey_point], remain)[0]
     #print "args_closest : ",args_closest
     # keep only the first we can link
     args_closest = args_closest[0:list_keys[maxkey_point] +
                                 8]  # 8 out_link and in with keys
     #print "args_closest : ",args_closest
     closest_pts = [remain[i] for i in args_closest]
     #print "closest_pts = ",closest_pts
     # get perim of this area :
     pts = np.array([a.node[i]['xy'] for i in closest_pts])
     args_new_perim = np.array(geometry.getPerim(pts))
     #print "args_new_perim : ",args_new_perim
     new_perim = [closest_pts[i] for i in args_new_perim]
     if base_first and (perim[0] in new_perim) and (perim[1] in new_perim):
         for i in range(1, len(new_perim)):
             if (perim[0] == new_perim[0]) and (perim[1] == new_perim[1]):
                 break
             new_perim = new_perim[-1:] + new_perim[:-1]  #rotate -1
     return np.setdiff1d(remain,
                         closest_pts), new_perim, remain[maxkey_point]
Ejemplo n.º 2
0
def maxFields(a):
    n = a.order()

    pts = np.array([ a.node[i]['xy'] for i in xrange(n) ])

    perim = np.array(geometry.getPerim(pts))
    if not triangulate(a,perim):
        return False
    flipSome(a)

    return True
Ejemplo n.º 3
0
def maxFields(a):
    n = a.order()

    pts = np.array([ a.node[i]['xy'] for i in xrange(n) ])

    perim = np.array(geometry.getPerim(pts))
    if not triangulate(a,perim):
        return False
    flipSome(a)

    return True