3 回答
TA贡献1796条经验 获得超4个赞
有必要添加abs到此公式中以避免负面积值(符号取决于方向,而不是正/负坐标)
是的,这个公式是正确的,如果你有顶点坐标,它实现了最好的方法。它基于交叉产品属性。
def triangle_area(tri):
x1, y1, x2, y2, x3, y3 = tri[0][0], tri[0][1], tri[1][0], tri[1][1], tri[2][0], tri[2][1]
return abs(0.5 * (((x2-x1)*(y3-y1))-((x3-x1)*(y2-y1))))
TA贡献1777条经验 获得超10个赞
如果要计算三角形面积,可以计算周围的矩形面积并减去围绕它的 3 个角为 90° 的三角形:
def triangle_area(tri):
x_min = min([point[0] for point in tri])
x_max = max([point[0] for point in tri])
y_min = min([point[1] for point in tri])
y_max = max([point[1] for point in tri])
area_rectangle = (y_max - y_min) * (x_max - x_min)
t1 = 0.5 * abs((tri[0][0] - tri[1][0]) * (tri[0][1] - tri[1][1]))
t2 = 0.5 * abs((tri[0][0] - tri[2][0]) * (tri[0][1] - tri[2][1]))
t3 = 0.5 * abs((tri[1][0] - tri[2][0]) * (tri[1][1] - tri[2][1]))
return area_rectangle - t1 - t2 - t3
添加回答
举报