2011-06-12 161 views
0

我想弄明白如何在一些示例问题中翻译/移动任意坐标系。它给我头痛..围绕任意轴旋转和平移

好吧,所以我有一个坦克在点Q坐在一个普通的N平面上。我想旋转它(就地),说30 degress到它的权利,并将其移动K单位向前。我有点想出如何任意旋转的作品,但我不太清楚,如果我得到这个正确的。

说坦克位置是用3x3 M矩阵定义的。

所以在空间任意旋转,我会做这样的事情:

M =(Q^-1)(RX表示^ -1)(RY^-1)(RZ)(RY)(Rx)的(Q)

,其中在围绕z轴

-30℃下RZ =旋转这是正确?

但是现在我也想沿着它的新方向移动它K个单位。所以我必须在那里添加一个翻译矩阵。我认为它应该在Rz之前(不确定)

M =(Q^-1)(Rx^-1)(Ry^-1)(Tk)(Rz)(Ry)(Rx)(Q)

这是否正确?或者我错了?任何数学天才在那里?

谢谢:)

+0

你最终找到一个解决方案?用 – 2013-03-08 05:26:35

+0

来编写表达式的程序和语言。查找旋转矩阵。或者,如果您的语言支持复数,请学习如何乘以模数1的向量。 – 2013-12-04 02:27:57

回答

0

什么是您的programmation的语言?我认为你可以找到一个图书馆,让你可以轻松地做到这一点。以C++中的openCL为例。很多3D库已经存在,这是一个非常有用的时间来使用它们。

+0

即时通讯设法了解此背后的数学 – 2011-06-12 05:04:34

+0

对不起,我不能帮你数学 – anbuf 2011-06-12 05:21:50

0

如果你想要新的坦克位置,我可以提供帮助。我一直在做类似的事情,我也有一些时间这样做。如果你用3D做这个,那么你可以将它应用到坦克的每个坐标上。

首先,您需要假设坦克是世界的中心,即本地坐标。 然后,你需要移动它转发K单元,所以它是在(0,K)

然后,你需要使用矩阵把通过θ的点(以弧度为单位),并产生:

newX = (x*math.cos(θ))-(y*math.sin(θ)) 
newY = (x*math.sin(θ))+(y*math.cos(θ)) 

(从我使用自己的代码,所以我知道它的工作原理)