现在的位置: 首页 > 综合 > 正文

矩阵相关

2018年05月27日 ⁄ 综合 ⁄ 共 902字 ⁄ 字号 评论关闭

阴影投射平面: 

平面方程N*x + D= 0; 

L(light)

projected point p = 1 - (D+N*L)(v-L)/N*(v-L)

M = n*L+d-LxNx  -LxNy       -LxNz       -LxD
-LyNx       N*L+D-LyNy  -LyNz       -LyD
-LzNx       -LzNy       N*L+D-LzNz  -LzD
-Nx         -Ny         -Nz         N*L


旋转矩阵

左手坐标系下,
Rn = c+(1-c)x*x (1-c)xy+sz (1-c)xz-sy 0
(1-c)xy-sz  c+(1-c)y*y (1-c)yz+sz 0
(1-c)xz+sy (1-c)yz-sx  c+(1-c)z*z 0
0           0          0          1
c=cos,s=sin,xyz为旋转轴
 
 
Quaternion和Rotation Matrix的相互转换
设有Quaternion q(x, y, z, w), rotation axis(x, y, z), rotation angle (theta),则Quaternion和Axis-Angle有如下对应关系,
q.x = sin(theta / 2) * axis.x
q.y = sin(theta / 2) * axis.y
q.z = sin(theta / 2) * axis.z
q.w = cos(theta / 2)

由Rotation Matrix求Quaternion
如何由给定的rotation matrix提取出旋转轴和旋转角度?
使用函数D3DXQuaternionRotationMatrix可以直接由Rotation matrix求出对应的Quaternion

由Quaternion求Rotation Matrix
可以利用上面的公式先求出旋转轴和旋转角度

axis.x = q.x / sin(theta / 2)

axis.y = q.y / sin(theta / 2)

axis.z = q.z / sin(theta / 2)

theta = 2 * arccos(q.w)

或者D3DX函数D3DXQuaternionToAxisAngle求出旋转轴和旋转角度

得到了旋转轴axis和旋转角度angle以后就可以利用D3DXMatrixRotationAxis来求取旋转矩阵

抱歉!评论已关闭.