猿问

从 3 个顶点计算三角形面积的正确方法

给定 3 个三角形点/顶点,这是计算三角形面积的正确方法吗?顶点永远不会是负值。


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 0.5 * (((x2-x1)*(y3-y1))-((x3-x1)*(y2-y1)))


幕布斯7119047
浏览 216回答 3
3回答

慕的地8271018

有必要添加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))))

HUH函数

差不多,但是最后需要取绝对值。你的公式可以从适用于任何简单(无交叉边,无孔)多边形的鞋带公式推导出来。

不负相思意

如果要计算三角形面积,可以计算周围的矩形面积并减去围绕它的 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
随时随地看视频慕课网APP

相关分类

Python
我要回答