Пример #1
0
 def __init__(self, barycenter, location, p1, p2, p3):
     self.location = location
     self.position = p2
     self.direction = pnormalized(get_bisector(p1, p2, p3, self.up_vector))
     preferred_direction = pnormalized(psub(p2, barycenter))
     # direction_factor: 0..1 (bigger -> better)
     direction_factor = (pdot(preferred_direction, self.direction) + 1) / 2
     angle = get_angle_pi(p1, p2, p3, self.up_vector, pi_factor=True)
     # angle_factor: 0..1 (bigger -> better)
     if angle > 0.5:
         # use only angles > 90 degree
         angle_factor = angle / 2.0
     else:
         angle_factor = 0
     # priority: 0..1 (bigger -> better)
     self.priority = angle_factor * direction_factor
Пример #2
0
 def get_bisector(self, index):
     p1 = self._points[index - 1]
     p2 = self._points[index]
     p3 = self._points[(index + 1) % len(self._points)]
     return get_bisector(p1, p2, p3, self.plane.n)