我的3D点集位于垂直平面上。该平面不与X轴或Y轴平行,而是与X轴形成一个角度(比如θ)。并且它对X轴有一些(+或 - )截距。
现在,我想更新我的X轴平行于我的飞机的方位角方向。然后我想躺在XY平面的垂直平面上。所以,我想我可以使用我原来的Z坐标作为新的Y坐标。当平面位于XY平面上时,不应再有Z坐标。所以,我想知道如何从原始的XYZ和θ中获取新的X坐标。
实际上,我想在c ++中实现这个修改。但我在数学方面确实很差,并努力弄清楚应该是什么样的公式。
这样做之后,我想用新的XY点坐标做一些处理。最后,我想将所有坐标恢复到原始系统。最后我想回到原来的XYZ轴。所以我也在寻找你的助手来解决这个问题。
非常感谢您的助手。
注意:所以我做的是;
我找到了平面的方位角,然后将点数据相对于最小X
和Y
移位,即我的点集左下角的XY坐标。然后,我得到了新的X,Y为(X',Y'):
X' = X * cos (θ) + Y * sin(θ)
Y' = Z
不确定我的方式是否正确..我喜欢这样学习。
答案 0 :(得分:3)
我无法理解你所说的关于“我的点集的左下角”的内容,但如果我理解“平面的方位角”,那么第一个转换就是:< / p>
X' = X * cos(θ) + Y * sin(θ)
Y' = -X * sin(θ) + Y * cos(θ)
Z' = Z
你应该玩弄它,确保你理解它,确保它是你想要的,然后再走得更远。
在此变换之后,平面中的所有点应具有相同的Y'值。
第二个转变(“躺下”)将是:
X" = X'
Y" = Y' + Z'
Z" = 0
您必须记住Y'值是什么,以便稍后反转此转换。
在这些坐标中完成了您想做的任何事情之后,您可以撤消该过程以返回原始坐标系:
X' = X"
Y' = Y'
Z' = Y" - Y'
X = X' * cos(θ) - Y' * sin(θ)
Y = X' * sin(θ) + Y' * cos(θ)
Z = Z'