您的位置:首页 > 其它

通给给定旋转轴向量v,旋转角度ang,计算出旋转矩阵

2016-03-31 17:24 405 查看
chai3d中通过计算旋转轴和角度来获得旋转矩阵Matrix3

[cpp] view
plain copy







inline bool rotateAboutLocalAxisRad(const cVector3d& a_axis,

const double& a_angleRad)

{

// compute length of axis vector

double length = a_axis.length();

// check length of axis vector

if (length < C_TINY)

{

// rotation matrix could not be computed because axis vector is not defined

return (false);

}

// normalize axis vector

double f = 1.0 / length;

double x = f * a_axis(0);

double y = f * a_axis(1);

double z = f * a_axis(2);

// compute rotation matrix

double c = ::cos(a_angleRad);

double s = ::sin(a_angleRad);

double v = 1-c;

cMatrix3d m;

m(0,0) = x*x*v+c; m(0,1) = x*y*v-z*s; m(0,2) = x*z*v+y*s;

m(1,0) = x*y*v+z*s; m(1,1) = y*y*v+c; m(1,2) = y*z*v-x*s;

m(2,0) = x*z*v-y*s; m(2,1) = y*z*v+x*s; m(2,2) = z*z*v+c;

(*this) = (*this)*m;

// return success

return (true);

}

上面的函数中的绕任意轴旋转获得的旋转矩阵的算法实现思路如下:

根据Goldman给出的公式进行计算,这个公式有点复杂:



具体推导过程可以参考:

http://www.cppblog.com/lovedday/archive/2008/01/12/41031.html

/article/5766409.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: