使用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,可以让立方体绕中心轴旋转;如果我想让立方体绕体外的任意轴旋转,我该怎么办呢?
展开
2个回答
推荐于2018-04-23
展开全部
可以这样
假设你要绕轴AB旋转
1、计算把轴AB一个点平衡原点(假如我这里是B点移动到原点)所需移动量为向量xyz,把立方体也移动向量xyz
2、把立方休按A点位置旋转(因为B点已经在原点了),即把A点坐标填入glRotate后面三个参数就是
3、把物体移动回向量xyz即可
假设你要绕轴AB旋转
1、计算把轴AB一个点平衡原点(假如我这里是B点移动到原点)所需移动量为向量xyz,把立方体也移动向量xyz
2、把立方休按A点位置旋转(因为B点已经在原点了),即把A点坐标填入glRotate后面三个参数就是
3、把物体移动回向量xyz即可
华领精密机电
2024-10-10 广告
2024-10-10 广告
PI旋转定位台是精密机电领域的一款高端产品,以其卓越的性能和精度赢得了广泛认可。该产品采用先进的驱动和控制系统,确保旋转运动的高精度和高稳定性。同时,其紧凑的设计和优化的结构使其适用于各种空间限制较大的应用场景。在深圳市华领精密机电有限公司...
点击进入详情页
本回答由华领精密机电提供
展开全部
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" 可以找到矩阵化的算法,向量和矩阵相乘你也可以找到一些资料的。
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" 可以找到矩阵化的算法,向量和矩阵相乘你也可以找到一些资料的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询