给定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)))
答案 0 :(得分:0)
个人而言,我将对三角形的面积使用基本公式,即import { testWithModalLifecycle, ModalRootDomId } from './util';
describe('Modal', () => {
testWithModalLifecycle()
it('should render a modal', () => {
const modalRootDom = document.getElementById(ModalRootDomId);
expect(modalRootDom.outerHTML).toBe('<div id="myid"></div>'); // Success!
})
})
并围绕该公式开发代码。我们可以通过将x和y值存储在单独的列表中来找到高度和宽度,我们使用内置的base * height / 2
和max()
函数,一旦知道了高度和宽度,我们就将它们相乘并除2点!
min()
无论这些点位于正/负空间中的哪个位置,这都应该可以正常工作!
使用here中的一个基本示例(示例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
预期产量my_tri = [[0, 0], [0, 9], [6, 0]]
print(triangle_area(my_tri))
答案 1 :(得分:0)
有必要在此公式中添加abs
,以免出现负面积值(符号取决于方向,而不取决于正/负坐标)
是的,这个公式是正确的,如果您有顶点坐标,它会实施最好的方法。它基于cross product属性。
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))))
答案 2 :(得分:0)
几乎,但是您需要在末尾取绝对值。 您可以从Shoelace formula得出公式,该公式适用于任何简单的(无交叉边,无孔)多边形。
答案 3 :(得分:0)
如果要计算三角形面积,则可以计算周围的矩形面积并减去周围有90°角的3个三角形:
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
或者,您可以使用Herons Formula