注意:首先,我应该说我是在这里发布的,因为许多数学家都是C ++的专家,因此,我相信通过在此论坛中发布我的问题,可以帮助我从这些人那里获得评论。
我正在尝试重建特定的3d对象,例如立方体,金字塔等。为此,我正在使用点云数据,然后为分割的点补丁拟合平面。通过进行最小二乘平差来获得平面。然后,我的目标是与相邻平面相交,然后获得相交线(线段)。然后,从这些行中,我希望制作一个类似于线框模型的东西。
但是,当我得到所有法线向量(在此对象中为n1,..n4),然后将它们投影到XY平面上并计算每个平面的方位角时,它们并不是精确地相差90度,而是92、87… ..我想由于平面的旋转,相交线不会碰到一个金字塔顶。
因此,当我正在寻找一个准确的金字塔模型时,我认为我应该首先调整这些平面,以使其方位角与相邻平面精确地成90度角。在那之后,我想我应该将它们相交,这将使我能够重建准确且规则的形状对象。
请参考以下示例图片
现在,我想知道,我该如何更新我的平面参数,以使其与其他平面精确地保持90度的方位角差。在这种情况下,我应该同时更改(a,b,c)和d。其中平面方程为ax + by + cz + d = 0。
你能给我方程式和方法吗?谢谢你。
包含实体面的平面由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)。
我们要旋转ķ 2到K“ 2,使K” 2有幅度的ķ 2,但方向从90度ķ 1。因此,我们将k 1,将其旋转90度(顺时针),然后缩放:
K” 2 =(B 1,-a 1)SQRT(一个2 2 + B 2 2)/ SQRT(一个1 2 + B 1 2)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句