给定N平面方程,如何找到最接近它们的一个平面的方程?

时间:2017-02-01 18:05:17

标签: algorithm math 3d

我以[{1}}形式获得了N平面方程,这意味着我们有它们的法线(ax+by+cz+d=0)和距离原点的距离(a, b, c)。通常,平面是相似的,因此系数差别不大。我在给定的飞机上没有任何分数,但我猜它们可以被采样。

我需要找到最接近它们的平面方程式,即以最佳方式表示平面的簇。换句话说,我需要将所有平面合并为一个

我已尝试取所有平面系数的平均值,这会产生正常的良好结果,但最后一个系数(d)似乎不对,结果平面与群集的偏移量很小。

这是平均方程的平均代码。它使用了特征库:

d

1 个答案:

答案 0 :(得分:0)

您可以通过考虑在平面上找到两条线的平均值的更简单但相关的问题来查看问题的根源,例如xy平面上的线x = 1和y = 1。 1x + 0y和0x + 1y的平均值是1/2 x + 1/2 y,换句话说是斜率-1的行。

我们有“平均”的斜率。现在我们需要找到它与原点的距离。您的方案中的距离将是两条给定线的距离的平均值,即1和1,因此平均值为1.线将与单位圆相切,因此将通过(1 / \ sqrt) {2},1 / \ sqrt {2}),斜率为-1。另一方面,我相信你希望你的线穿过“簇的中心”,在这种情况下,它将是两条给定线的交点,即点(1,1)。通过(1 / \ sqrt {2},1 / \ sqrt {2})的斜率线-1和通过(1,1)的斜率-1线之间的差异是您注意到的偏移量

Offhand我想不出办法来解决你的问题。您可以尝试的一种解决方法是随机重复选择三个平面并找到它们的交叉点。然后平均那些交叉点。

我希望我能想到一个更优雅的答案,但我现在不能。