使用OpenGL如何实现物体绕体外任意轴旋转?

我用glRotatef(m_fAngleX,1.0f,0.0f,0.0f);然后让m_fAngleX循环加10,可以让立方体绕中心轴旋转;如果我想让立方体绕体外的任意轴旋... 我用glRotatef(m_fAngleX,1.0f,0.0f,0.0f);然后让m_fAngleX循环加10,可以让立方体绕中心轴旋转;如果我想让立方体绕体外的任意轴旋转,我该怎么办呢? 展开
 我来答
匿名用户
推荐于2018-04-23
展开全部
可以这样
假设你要绕轴AB旋转
1、计算把轴AB一个点平衡原点(假如我这里是B点移动到原点)所需移动量为向量xyz,把立方体也移动向量xyz
2、把立方休按A点位置旋转(因为B点已经在原点了),即把A点坐标填入glRotate后面三个参数就是
3、把物体移动回向量xyz即可
dragon__y
推荐于2016-12-02 · TA获得超过435个赞
知道小有建树答主
回答量:547
采纳率:50%
帮助的人:288万
展开全部
glQuaternion m_qHeading; //四元数
float m_HeadingDegrees; //转动角度
Vector3 eye, center; //摄像机参数
Vector3 m_Position; //轴位置
Matrix matrix; //矩阵

m_qHeading.CreateFromAxisAngle(0.0f, 1.0f, 0.0f, m_HeadingDegrees); //将转动角变成四元数
m_qHeading.CreateMatrix(matrix); //将四元数矩阵化

eye *= Matrix;
center *= Matrix;

gluLookAt(eye.x + m_Position.x,eye.y + m_Position.y,eye.z + m_Position.z, center.x + m_Position.x,center.y + m_Position.y,center.z + m_Position.z,0,1,0);

其中四元数可以直接百度“glQuaternion" 可以找到矩阵化的算法,向量和矩阵相乘你也可以找到一些资料的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式