600分请敬高手--空间向量旋转问题(300分)

  • 主题发起人 主题发起人 yeskert1
  • 开始时间 开始时间
Y

yeskert1

Unregistered / Unconfirmed
GUEST, unregistred user!
各位朋友,我现在遇到一个难题,请帮帮我。
这是一个数学。
已知一单位向量A1(x1,y1,z1),它[red]同时[/red]绕x轴旋转了a角度,绕y旋转b角度,求旋转之后的向量A2的坐标。

我只会绕一个轴旋转,同时绕两个轴的旋转我不会做。
请大家帮帮忙。
如果给出正确答案,另外开帖给分。
 
两个旋转矩阵相乘不就行了.
 
可以先算绕x轴旋转a度,按逆时针,相当于乘上矩阵
{1,0,0
0,k1×cos a,0
0,0,k1×sin(a+90)},k1=(x1^2+y1^2+z1^2)^0.5;
得到一个一维数组(x1',y1',z1'),再按y轴旋转b度,逆时针b度
再乘矩阵
{k2×cos b,0,0
0,1,0
0,0,k2×sin b
} k2=(x1'^2+y1'^2+z1'^2)^0.5
 
没有这么简单吧?
我先绕x再绕y得到的结果与先绕y再绕x得到的结果完全不同。
 
结果当然不同,矩阵乘法不满足交换律.
 
所以,我应该先绕哪个?要知道这是同时发生的旋转。
 
用微分的思想,在知道两个角速度的前提下一点一点转.
如果比较懒且仅要结果不关心算法可以用d3d里的Rotation系列函数.
 
To LeeChange:
过节好啊!
对于D3D的rotation我先去了解一下,因为我不知道它。
 
明白你说的意思了,我还以为你是一个一个转呢,看来是有点难度啊,那你怎么知道是绕x、y转而不是绕z转呢??还有你的a,b是怎么得出来的??
 
to xingxin00:
这是一个现实应用中产生的问题。系统中有双轴加速度传感器,所以能够知道绕x轴和y的角度。
其实,在旋转过程中,会对z轴也有旋转,但是在三维空间中,知道绕两个轴的旋转就能确定三维位置了(即三维空间的旋转是2度的)。

我自己想了很久,看似简单,却找不到计算公式……
 
难道没有数学高手吗?
 
这个题是有难度
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
733
import
I
后退
顶部