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