Я пытаюсь разбить треугольник пополам. Треугольник можно вращать в любом случае, но всегда можно разделить поровну пополам (его равнобедренный треугольник не равносторонний).
У меня возникла идея, как разделить треугольник любого поворота на 2 подтреугольника, но это наивно, и мне нужно проверить, каково вращение треугольника.
Есть ли более простой способ разделить треугольник пополам?
Ниже приведен пример того, чего я пытаюсь достичь. Изображение 1 - это мои исходные треугольники, затем моя функция будет запускаться для каждого треугольника, чтобы получить изображение 2, а затем моя функция будет снова запускаться для каждого треугольника и создавать изображение 3.
def split_triangle_evenly(tri_pts):
# Pre: tri_pts[1] will always be the split point
# ie, tri_pts[1] is the right-angle
half_tri1 = None
half_tri2 = None
break_x = tri[1][0]
break_y = tri[1][1]
# Naive technique that needs to check the rotation of the triangle
# in order to figure out how to split it
# is there a simplier way?
if break_x > tri[0][0] and break_x > tri[2][0]:
half_tri1 = (
tri[0],
(tri[0][0], break_y),
tri[1]
)
half_tri2 = (
tri[2],
(tri[0][0], break_y),
tri[1]
)
elif break_x < tri[0][0] and break_x < tri[2][0]:
...
elif ...
return (half_tri1, half_tri2)