早教吧 育儿知识 作业答案 考试题库 百科 知识分享

空间(vector3)位置求旋转算法前提不借助外部库,已知空间内任意一点求其以原点位置旋转的度数.rotX,rotY,rotZ

题目详情
空间(vector3)位置求旋转算法
前提不借助外部库,已知空间内任意一点 求其以原点位置旋转的度数.
rotX,rotY,rotZ
▼优质解答
答案和解析
//
void rotAxis3D_Tech_Matrix(float theta, float nx, float ny, float nz, float (&ptIn)[3], float (&ptOut)[3])
{
float len = sqrtf(nx * nx + ny * ny + nz * nz); //normalize vector
nx /= len; ny /= len; nz /= len;
ptOut[0] = ptIn[0] * (cosf(theta) + nx * nx * (1 - cosf(theta))) + //transform by matrix
ptIn[1] * (nx * ny * (1 - cosf(theta)) - nz * sinf(theta)) +
ptIn[2] * (nx * nz * (1 - cosf(theta) + ny * sinf(theta)));
ptOut[1] = ptIn[0] * (nx * ny * (1 - cosf(theta)) + nz * sinf(theta)) +
ptIn[1] * (ny * ny * (1 - cosf(theta)) + cosf(theta)) +
ptIn[2] * (ny * nz * (1 - cosf(theta)) - nx * sinf(theta));
ptOut[2] = ptIn[0] * (nx * nz * (1 - cosf(theta) - ny * sinf(theta))) +
ptIn[1] * (ny * nz * (1 -cosf(theta)) + nx * sinf(theta)) +
ptIn[2] * (nz * nz * (1 - cosf(theta)) + cosf(theta));
}
直接给出个算法吧,这个算法直接用矩阵作的,在一般情况下也就不用四元数了.
晕,哥哥看错了,你是问OpenGL,那把上面公式中的矩阵提取出来,注意到这个矩阵是三阶的,最后一行是给你设置平移参数的.可以简单设置为 0 0 0 1
构造好矩阵之后,调用glLoadMatrixf设置ModelView矩阵就OK了,
上面矩阵如何提取?
(cosf(theta) + nx * nx * (1 - cosf(theta)))
(nx * ny * (1 - cosf(theta)) - nz * sinf(theta))
(nx * nz * (1 - cosf(theta) + ny * sinf(theta))) 这是第一列,其他两列也这么提取就可以了
当然这是假设没有平移和缩放变换的
看了空间(vector3)位置求旋...的网友还看了以下:

求一篇英语作文,有提示的,求一篇英语作文根据一下提示,写一篇介绍特洛伊战争.特洛伊战争是为一为名叫  2020-05-13 …

老师为同学们提供了如图所示的实验装置,E中的浓硫酸作干燥剂.请按要求回答下列问题:(1)要组装一套  2020-05-17 …

巴塞尔委员会对市场风险内部模型提出的要求不包括:( ) A.置信水平采用90%的置信区间  2020-05-30 …

热水采暖系统中,根据水力工况要求,为提高供热介质压力,需在热水网路设置的装置为( )。  2020-06-07 …

海洋是人类可持续发展的战略资源基地,国际社会普遍认为,21世纪是海洋的世纪。鉴于我国领海周边国家提  2020-06-27 …

材料一海洋是人类可持续发展的战略资源基地,国际社会普遍认为,21世纪是海洋世纪。鉴于我领海周边国家  2020-06-27 …

我国政府倡导的国际新秩序的内容是什么?为什么说它实质上与周恩来在第一次亚非会议上提出的“求同存异”  2020-07-13 …

如图所示,装置提升重为900N的物体A,加在绳子自由端的拉力为400N,恰好可以使物体匀速上升(1  2020-07-16 …

根据要求写成语要求:结合方位顺序,依据提供的字写出三个成语.提供的字为:东西征战数.试题中提供的五  2020-07-24 …

已知三个不在一条直线的点可以确定一个圆,但是具体是如何来计算圆心的位置的?求教啊,呵呵!  2020-07-28 …