-1

注意:首先,我应该说我在这里发布了这个,因为许多数学家都是 C++ 专家,所以,我相信通过在这个论坛上发布我的问题,它可以帮助我从这些人那里获得评论。

我正在尝试重建特定的 3d 对象,例如立方体、金字塔等。为此,我使用点云数据,然后为分段点补丁拟合平面。平面是通过最小平方调整获得的。然后我的目标是与相邻平面相交,然后得到相交线(线段)。然后从这些方面,我希望制作一个类似于线框模型的东西。

但是,当我得到所有法线向量(这个对象中的 n1、..n4)然后如果我将它们投影到 XY 平面上并计算每个平面的方位角,那么它们并没有完全改变 90 度,而是 92、87…… ..我猜由于这个平面旋转,相交线不会与一个金字塔顶部相交。

因此,当我正在寻找一个准确的金字塔模型时,我认为我应该首先调整这些平面,使其方位角与相邻平面的角度正好相差 90 度。在那之后,我认为我应该将它们相交这将使我能够重建准确和规则的形状对象

请参考以下示例图片 在此处输入图像描述

现在,我想知道,我应该如何更新我的平面参数,以便将它们的方位角差异与其他平面精确地保持在 90 度。在这种情况下,我应该同时更改 (a, b, c) 和 d。其中平面方程为ax+by+cz+d=0。

你能给我方程式和方法吗?谢谢你。

4

1 回答 1

1

包含实体面的平面由 ax+by+cz+d=0 定义,其具有法线向量 (a, b, c)。我们可以忽略 z 分量 (c),但我们必须在 xy 平面 (a, b) 中旋转分量,使其垂直于相邻面的分量。

考虑面 1 和面 2。面 1 有法线n 1 = (a 1 , b 1 , c 1 ),n 1到 xy 平面的投影是 (a 1 , b 1 ),我们可以称其为k 1 . 同样,k 2 = (a 2 , b 2 )。

我们想将k 2旋转到k' 2,这样k' 2大小k 2,但方向与k 1成90 度。所以我们将k 1,将其旋转 90 度(顺时针),然后对其进行缩放:

k' 2 = (b 1 , -a 1 ) sqrt(a 2 2 +b 2 2 )/sqrt(a 1 2 +b 1 2 )

于 2013-09-17T14:32:15.913 回答