Лично я бы использовал базовую формулу для площади треугольника, которая равна base * height / 2
, и разработал бы мой код вокруг этого. Мы могли бы найти высоту и ширину, сохраняя значения x и y в отдельных списках, для которых мы используем встроенные функции max()
и min()
, и как только мы узнаем высоту и ширину, мы просто умножаем их и делим на 2!
def triangle_area(tri):
y_list = [tri[0][1], tri[1][1], tri[2][1]]
x_list = [tri[0][0], tri[1][0], tri[2][0]]
height = max(y_list) - min(y_list)
width = max(x_list) - min(x_list)
return height * width / 2
Это должно работать нормально независимо от того, где точки расположены также в положительном / отрицательном пространстве!
Используя базовый пример из здесь (пример 2) Я проверил свой код с помощью:
my_tri = [[0, 0], [0, 9], [6, 0]]
print(triangle_area(my_tri))
Что дает 27.0
как ожидалось