用Mathematica求旋转矩阵是很方便的。一般的符号形式的齐次三维旋转矩阵也是。
如果 (a,b,c)T 是旋转轴的方向向量, (x,y,z)T 是轴上一点, θ 是旋转角度,则代码:
rotation=(TransformationMatrix@(RotationTransform[\[Theta],{a,b,c},{x,y,z}]/.{Conjugate[x_]:>x,Abs[x_]:>x})/.{Conjugate[x_]:>x,Abs[x_]:> x})/.{Conjugate[x_]:>x,Abs[x_]:>x}//ExpandAll//FullSimplify
然后显示为矩阵形式即可, 如果
a2+b2+c2=1
还可化简。
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢a2+(1−a2)cosθab−acosθb+csinθac−acosθc−bsinθ0ab−acosθb−csinθb2+(1−b2)cosθbc−bcosθc+asinθ0ac−acosθc+bsinθbc−bcosθc−asinθc2+(1−c2)cosθ0(cy−bz)sinθ−(xb2−ayb+c(cx−az))(cosθ−1)(az−cx)sinθ−(ya2−bxa+c(cy−bz))(cosθ−1)(c(ax+by)−(1−c2)z)(cosθ−1)+(bx−ay)sinθ1⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥
看不起可以看这里的公式