使用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即可
假设你要绕轴AB旋转
1、计算把轴AB一个点平衡原点(假如我这里是B点移动到原点)所需移动量为向量xyz,把立方体也移动向量xyz
2、把立方休按A点位置旋转(因为B点已经在原点了),即把A点坐标填入glRotate后面三个参数就是
3、把物体移动回向量xyz即可
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
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" 可以找到矩阵化的算法,向量和矩阵相乘你也可以找到一些资料的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询