c++ - 物体围绕其侧面旋转

标签 c++ opengl 3d

我正在尝试在我的项目中使用对象创建一些旋转动画。

目前为了给对象设置动画,我编写了一些补间函数,它们将参数作为 value from, value to, value time 并将对象从 from Param 补间到to Param 并在给定时间内补间对象运动。但是,我需要创建一些如下所示的动画:

enter image description here

对象必须围绕某一边旋转补间。所以,如果按照这个算法,是这样的:

for(int rotationAmount = 0;rotationAmount<=90;rotationAmount++){
glPushMatrix();
glRotatef(rotationAmount,1,0,0);
Rectangle(500,500,200,100);
glPopMatrix();
}

我仍然没有得到所需的效果,因为矩形不是围绕某一边旋转而是围绕某个大圆的圆周旋转然后返回。真的欢迎就如何实现上述目标提出一些建议吗?

最佳答案

glRotatef 将当前矩阵乘以旋转矩阵。旋转矩阵围绕坐标原点旋转。你需要将原点平移到物体的一侧,进行旋转,平移回来。

point_type point_on_the_side;
for(int rotationAmount = 0;rotationAmount<=90;rotationAmount++){
    glPushMatrix();
    glTranslatef(-point_on_the_side.x, -point_on_the_side.y, -point_on_the_side.z);
    glRotatef(rotationAmount,1,0,0);
    glTranslatef(point_on_the_side.x, point_on_the_side.y, point_on_the_side.z);
    Rectangle(500,500,200,100);
    glPopMatrix();
}

关于c++ - 物体围绕其侧面旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13657436/

相关文章:

c++ - 对 vector 中的正 NaN 和负 NaN 进行排序

c++ - glVertexAttribPointer 覆盖

math - 与向量 * 矩阵相比,矩阵 * 向量是什么意思

c++ - Qt 渲染的几种方式

c++ - 多边形内的点(不包括边界)

c++ - 添加额外的渲染调用时 GLFW 在关闭时挂起

c++ - FFmpeg C++ 在单独的线程中解码

java - libGDX 3D 阴影伪像

java - 如何在 java/c++ 中从 3d 场景渲染高质量图像

c++ - 不推荐从字符串文字到 'char*' 的转换