2013-02-26 157 views
-1

我有三维点集躺在垂直平面上。该平面不平行于X或Y轴,但与X轴形成一个角度(比如θ)。还有一些(+或 - )截取到X轴。如何将XYZ坐标转换为另一个2D系统

现在,我想更新我的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

COS和正弦函数需要用来解决问题。此外,将平面与初始坐标系对齐比将坐标系对齐到平面更方便快捷。计算机图形学是您需要熟悉的主题。转换矩阵也可能有所帮助.. – Akshay 2013-02-26 11:28:44

+1

首先尝试在两个维度做它。如果你不能解决问题,请展示你的尝试。 – 2013-02-26 11:30:01

+0

@Peter Wood:我更新了我所做的文章 – gnp 2013-02-26 11:58:08

回答

3

我对你说的“我的点集的左下角”没有任何意义,但是如果我正确理解了“飞机的方位角”,那么第一个转换就是这样:

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' 
+0

谢谢。现在很清楚。实际上,我得到了 - 新的xy坐标值,以便我移动原点。但是当我绘制一个点时,我意识到即使点位于第一象限,在旋转之后,这些点可能具有neagative x,y值。感谢您的回答。我学到了很多。再次感谢 – gnp 2013-02-26 21:02:13

相关问题