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

空间(vector3)位置求旋转算法

前提不借助外部库,已知空间内任意一点求其以原点位置旋转的度数.

rotX,rotY,rotZ

唐鸣回答:
  //   voidrotAxis3D_Tech_Matrix(floattheta,floatnx,floatny,floatnz,float(&ptIn)[3],float(&ptOut)[3])   {   floatlen=sqrtf(nx*nx+ny*ny+nz*nz);//normalizevector   nx/=len;ny/=len;nz/=len;   ptOut[0]=ptIn[0]*(cosf(theta)+nx*nx*(1-cosf(theta)))+//transformbymatrix   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,那把上面公式中的矩阵提取出来,注意到这个矩阵是三阶的,最后一行是给你设置平移参数的.可以简单设置为0001   构造好矩阵之后,调用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)))这是第一列,其他两列也这么提取就可以了   当然这是假设没有平移和缩放变换的
最新更新
PC端 | 移动端 | mip端
字典翻译(zidianfy.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
电话:  邮箱:
Copyright©2009-2021 字典翻译 zidianfy.com 版权所有 闽ICP备2022014709号-7
lyric 頭條新聞