如何将XYZ坐标更改为另一个2D系统

时间:2013-02-26 11:23:45

标签: c++ math graphics geometry computational-geometry

我的3D点集位于垂直平面上。该平面不与X轴或Y轴平行,而是与X轴形成一个角度(比如θ)。并且它对X轴有一些(+或 - )截距。

现在,我想更新我的X轴平行于我的飞机的方位角方向。然后我想躺在XY平面的垂直平面上。所以,我想我可以使用我原来的Z坐标作为新的Y坐标。当平面位于XY平面上时,不应再有Z坐标。所以,我想知道如何从原始的XYZ和θ中获取新的X坐标。

实际上,我想在c ++中实现这个修改。但我在数学方面确实很差,并努力弄清楚应该是什么样的公式。

这样做之后,我想用新的XY点坐标做一些处理。最后,我想将所有坐标恢复到原始系统。最后我想回到原来的XYZ轴。所以我也在寻找你的助手来解决这个问题。

非常感谢您的助手。

注意:所以我做的是; 我找到了平面的方位角,然后将点数据相对于最小XY移位,即我的点集左下角的XY坐标。然后,我得到了新的X,Y为(X',Y'):

X' = X * cos (θ) + Y * sin(θ) 
Y' = Z

不确定我的方式是否正确..我喜欢这样学习。

1 个答案:

答案 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'