为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

幕布斯7119047 2022-01-05 13:17:42
给定 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)))
查看完整描述

3 回答

?
慕的地8271018

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))))


查看完整回答
反对 回复 2022-01-05
?
HUH函数

TA贡献1836条经验 获得超4个赞

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


查看完整回答
反对 回复 2022-01-05
?
不负相思意

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

//img1.sycdn.imooc.com//61d52a1e0001824403220255.jpg

查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信