我正在尝试在我的项目中使用对象创建一些旋转动画。
目前为了给对象设置动画,我编写了一些补间函数,它们将参数作为 value from, value to, value time
并将对象从 from Param
补间到to Param
并在给定时间内补间对象运动。但是,我需要创建一些如下所示的动画:
对象必须围绕某一边旋转补间。所以,如果按照这个算法,是这样的:
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/