不要小看我们在Unity或者3DMAX中的一个简单的旋转物体操作。
——题记
这里需要用到的知识:向量运算(数量积,叉乘,加减)、矩阵基本运算。
让我们导出绕任意轴n旋转角度Θ的矩阵。
即 vR(n.Θ) = v ‘ 。
只要能用v,n,Θ表示出v ‘ 即可,然后再求出基向量。
方法如下:(看图)
说明:
1.向量n是单位向量
2.VII向量和VT向量是V向量的分向量,即满足:V = VII + VT ①,同时,由于VII平行于n向量,它也是V在n上的投影,于是有 VII = (V *n)n ②(与物理上的求做功大小是一样理解的!)。
3.V ‘ 向量是 V向量 绕 n旋转后得到的向量,虚线表示,同理VT ‘ 。
4.W向量是垂直于V,VII所在平面的向量,这是引入的,为了便于讨论问题,其长度 = V 向量模长。W是VT绕n旋转90°得到的,故有:W = n X VT ③。(力矩知识哈!)
下面开始求解:
由旋转后,可以得到:VT ‘ = VT * COSΘ + W * SinΘ ④(三角函数知识哈..超级有用的玩意儿)
由②、①可推出 VT = V - (V * n)n 。⑤
由①、②、③可得: W = n X v。⑥
将⑤、⑥带入 ④ 可得:
v ‘ = (v - (v*n)n)cosΘ + (n x v)sinΘ +(v * n)n
现在已经得到v ‘ 与v,n,Θ的关系了,于是,下一步就是得到基向量然后再构造矩阵,哈哈。
第一个基向量为:
p = [1 0 0]
p ‘ = (p - ( p * n )n)cosΘ + (n x p)sinΘ + (p * n)n
然后按照矩阵运算方法即可,还算简单吧!
最后得到:
另外两个基向量的方法类似,同时我们也就得到了R(n,Θ) :
3D数学--学习笔记(三):3D中绕任意轴的旋转,布布扣,bubuko.com
原文:http://blog.csdn.net/zjc_game_coder/article/details/24269757