转http://www.cnblogs.com/bbsno1/archive/2013/08/18/3266744.html ;
原理很简单,其实就是四元数转轴角,再用绕任意轴旋转矩阵
里面会涉及比较多的公式设四元数Q(x, y, z, w)表示向量a(xa,ya, za)经过α角旋转后的结果,则x、y、z和w分别为:
x= sin(α/2)·xa
y= sin(α/2)·ya
z= sin(α/2)·za
w= cos(α/2)再结合高中所学的半角公式:
sinα = 2 * sin(α/2)·cos(α/2)
cosα = cos(α/2)*cos(α/2) - sin(α/2)*sin(α/2)
cos(α/2)*cos(α/2) = (1 +cosα)/2
sin (α/2)* sin (α/2) = (1 -cosα)/2然后是 绕任意轴旋转矩阵

最后结果

替换过程(只写出一部分,只是简单的替代)
cosa = 2·w·w - 1
1 - cosa = 2(1 - w·w)
xa·xa = x · x/(1 - w · w )
xa·ya = w · y / (1 - w · w )
sina·za = 2·z·w
..