【发布时间】:2012-10-24 12:42:14
【问题描述】:
我正在尝试计算 3D 空间中三角形的面积,我使用的是 Heron 公式。
我得到一个虚构的结果,实部为 0。
你知道这是什么意思吗?
我正在尝试确定三角形的点是否共线(三角形 0 的面积)
谢谢
【问题讨论】:
-
请告诉我们你有什么 (
code)
我正在尝试计算 3D 空间中三角形的面积,我使用的是 Heron 公式。
我得到一个虚构的结果,实部为 0。
你知道这是什么意思吗?
我正在尝试确定三角形的点是否共线(三角形 0 的面积)
谢谢
【问题讨论】:
code)
如果三个边不形成三角形(不满足三角形不等式),Heron 公式将失败。
请注意,在使用浮点数时,您不能测试为零,因为浮点数由于舍入误差而几乎从不为零。
另一种检查共线性的方法:
要确定 A、B、C 是否共线,请计算叉积 (A-B)x(A-C)。如果它的长度小于一个固定的 epsilon,那么这些点在一定的公差范围内是共线的。如果您的输入以整数形式给出,您可以测试是否精确为零。
如果叉积返回非零结果,则其长度是三角形面积的两倍。
【讨论】:
Heron 的公式实际上对于角度非常小的三角形是不稳定的 This link has the stable alternative to the formula 其中 a ≥ b ≥ c
【讨论】:
这意味着您的计算有误。 3D 空间中任意三个不共线的点组成一个三角形。该三角形边的长度,当代入 Heron 公式时,将产生一个大于 0 的实面积。在数学上,不可能有其他结果。如果三点共线,则面积为0。
从调试的角度来看,我想说您应该检查您插入 Heron 公式的三个长度。如果他们没有通过三角不等式,那么你就错误地计算了他们。如果他们通过了,那么你没有正确应用 Heron 的公式。
【讨论】: