Ejemplo n.º 1
0
def get_shadow_polygon(poly: "BasePolygon", normal: Vector2d) -> Tuple[float, float]:
	min_shadow = float("inf")
	max_shadow = -float("inf")
	for point in poly.points:
		product = normal.dot_product(point)

		min_shadow = min(min_shadow, product)
		max_shadow = max(min_shadow, product)

	return min_shadow, max_shadow
Ejemplo n.º 2
0
    def get_support_point(self, direction: Vector2d) -> Vector2d:
        support_point = None
        max_product = -1

        for point in self.points:
            product = direction.dot_product(point)

            if product > max_product:
                max_product = product
                support_point = point

        return support_point