我想知道哪种方法(决定方法或交叉产品)更有效地计算三角形的面积? 对于决定因素,我认为在area = 1/2 * det()对于这个方法,我使用这个http://mathworld.wolfram.com/TriangleArea.html。 我认为在cross = det()但是有交叉产品的交叉产品。当他们没有0(0,0)的原点时,我必须翻译系统,这意味着从每个点减去原点的协调点。 这就是我所做的。
答案 0 :(得分:2)
我认为通过“决定性方法”(在Google中找不到),您的意思是:
给出3分A
,B
,C
(假设它们是position vectors)让a = B-C
,b = A-C
。然后因为determinant的特殊属性:
实矢量行列式的绝对值等于这些矢量所跨越的平行六面体的体积
我们有|det(M)| = 2 SABC
其中SABC
是三角形ABC
的区域,M
是一个特殊的矩阵,“定义”“平行六面体”:
因此,三角形的面积可以计算为SABC = 1/2 |axby - aybx|
,其中ax = Bx - Cx
和其他人以类似方式定义。
这个公式非常简单有效。唯一的问题是它只适用于平面点(2D情况)。如果你的点位于n维空间的某个地方,你需要先在它们之间绘制一个平面。
在3D情况下,您可以使用跨产品公式。它可以看作是上述方法的延伸,我稍后会详细说明。
跨产品方法的工作原理如下:像以前一样选择a
和b
并注意其交叉产品的长度等于相应的平行四边形的区域:
让v = a × b
。然后是SABC = 1/2 sqrt(vx2 + vy2 + vz2)
。请注意,您不需要显式计算v
:它的每个组件都可以表示为具有简单封闭形式的2D行列式。
如果你有2D矢量,你可以通过添加常量第三个分量(例如0)轻松地将它们嵌入到3D空间中。事实证明,在这种情况下,vx
和vy
将为我们留下S ABC = 1/2 | v z |这将与行列式方法的答案一致。
所以,总之