我正在尝试计算 3D 空间中三角形的面积,并且我使用的是 Heron 公式。
我得到一个虚构的结果,实部为 0。
你知道这意味着什么吗?
我正在尝试确定三角形的点是否共线(三角形 0 的区域)
谢谢
如果三个边不形成三角形(不满足三角形不等式),Heron 公式将失败。
请注意,当使用浮点数时,您不能测试为零,因为浮点数由于舍入误差而几乎从不为零。
检查共线性的另一种方法:
要确定 A、B、C 是否共线,请计算叉积 (AB)x(AC)。如果它的长度小于一个固定的 epsilon,那么这些点在一定的公差范围内是共线的。如果您的输入以整数形式给出,您可以测试一个精确的零。
如果叉积返回非零结果,则其长度是三角形面积的两倍。
Heron 的公式实际上对于具有非常小角度的三角形是不稳定的 此链接具有公式的稳定替代方案, 其中 a ≥ b ≥ c
这意味着您在计算中犯了错误。3D 空间中任意三个不共线的点组成一个三角形。该三角形边的长度,当代入 Heron 公式时,将产生一个大于 0 的实面积。在数学上,不可能有其他结果。如果这三个点共线,则面积将为 0。
从调试的角度来看,我会说您应该检查您插入 Heron 公式的三个长度。如果他们没有通过三角不等式,那么你就错误地计算了他们。如果他们通过了,那么你没有正确应用 Heron 的公式。