def updatePolyList(self):
     self.poly_list=[]
     for i,poly in enumerate(self.cur_polys):
         edges=GeoFunc.getPolyEdges(poly)
         poly_item={
             "index":i,
             "pts":poly,
             "edges":edges,
             "horizontal":{
                 "positive":[],
                 "negative":[],
                 "neutral":[]
             },
             "vertical":{
                 "positive":[],
                 "negative":[],
                 "neutral":[]
             },
         }
         for edge in edges:
             netural=self.judgeNeutral(poly,edge) # 分别获得水平和垂直的计算结果
             for i,cur in enumerate(["horizontal","vertical"]):
                 if netural[i]==1:
                     poly_item[cur]["positive"].append([edge[0],edge[1]])
                 elif netural[i]==-1:
                     poly_item[cur]["negative"].append([edge[0],edge[1]])
                 else:
                     poly_item[cur]["neutral"].append([edge[0],edge[1]])
         self.poly_list.append(poly_item)
 def getTargetEdges(self):
     self.target_edges = [[0] * len(self.polys)
                          for _ in range(len(self.polys))]
     for i in range(len(self.polys)):
         for j in range(len(self.polys)):
             if i == j:
                 continue
             nfp = self.getNFP(i, j)
             nfp_edges = GeoFunc.getPolyEdges(nfp)
             point = self.PLACEMENTPOINT[j]
             if Polygon(nfp).contains(
                     Point(point)) and self._type == "separation":
                 # 如果包含且是拆分,则寻找距离最近的那个
                 min_distance = 99999999999999
                 for edge in nfp_edges:
                     left_distance = -self.getRightDistance(edge, point)
                     if left_distance <= min_distance:
                         min_distance = left_distance
                         self.target_edges[i][j] = copy.deepcopy(edge)
             else:
                 # 如果不包含或者是压缩,则选择最远的
                 max_distance = -0.00001
                 for edge in nfp_edges:
                     right_distance = self.getRightDistance(edge, point)
                     if right_distance >= max_distance:
                         max_distance = right_distance
                         self.target_edges[i][j] = copy.deepcopy(edge)
 def getAllEdges(self):
     return GeoFunc.getPolyEdges(self.stationary),GeoFunc.getPolyEdges(self.sliding)