我正在尝试创建一些旋转动画在我的项目与对象。
目前,为了使对象具有动画效果,我已经编写了一些补间函数,它们将参数作为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();
}
我仍然没有得到所需的效果,因为矩形而不是围绕某个特定的边旋转,看起来就像是绕着某个大圆的圆周旋转,然后又回来了。真的欢迎在这里提出一些关于如何实现上述目标的建议?
发布于 2012-12-01 15:51:42
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();
}
https://stackoverflow.com/questions/13657436
复制相似问题