Beispiel #1
0
 def get_primary_axes(self):
     return [
         Line.from_points([
             Vec2(self.rect.min_point.x, self.rect.center.y),
             Vec2(self.rect.max_point.x, self.rect.center.y)
         ]),
         Line.from_points([
             Vec2(self.rect.center.x, self.rect.min_point.y),
             Vec2(self.rect.center.x, self.rect.max_point.y)
         ])
     ]
Beispiel #2
0
 def intersects(self, shape: Polygon) -> bool:
     """Check whether this wall intersects a Polygon."""
     segment_line = self.line_segment.line
     vertex1, vertex2 = self.line_segment.points
     relative_sides = ((p, segment_line.point_left(p)) for p in shape)
     for (p1, s1), (p2, s2) in islice(pairwise(cycle(relative_sides)),
                                      len(shape)):
         if s1 is not s2:
             # p1 and p2 are on opposite sides of the line that contains this wall
             edge = Line.from_points([p1, p2])
             if edge.point_left(vertex1) is not edge.point_left(vertex2):
                 return True
     return False
Beispiel #3
0
 def get_primary_axes(self):
     return [Line.from_points([Vec2(self.rect.min_point.x, self.rect.center.y),
                               Vec2(self.rect.max_point.x, self.rect.center.y)]),
             Line.from_points([Vec2(self.rect.center.x, self.rect.min_point.y),
                               Vec2(self.rect.center.x, self.rect.max_point.y)])]