OpenGL围绕场景中心旋转相机

时间:2013-01-02 11:38:18

标签: opengl camera rotation center

我的场景基本上是一个15x15的方形楼层(四边形坐标为(0,0,0)(0,0,15)(15,0,15)(15,0,0))。

我已将场景中心设置为(7.5,0,7.5)。问题是我无法弄清楚如何围绕该场景中心水平旋转相机(也就是让相机在场景中心周围做360度水平圆)。我知道你需要用罪和cos做点什么,但不知道到底是什么。

这是代码(普通C):

//set camera position
//camera height is 17
GLfloat camx=0, camy=17, camz=0;

//set center of scene
GLfloat xref=7.5, yref=0, zref=7.5;

gluLookAt(camx, camy, camz, xref, yref, zref, 0, 1, 0);

//projection is standard gluPerspective, nothing special
gluPerspective(45, (GLdouble)width/(GLdouble)height, 1, 1000);

2 个答案:

答案 0 :(得分:4)

您需要修改camx和camz变量。

您要穿过的点位于圆上,其坐标由x = r*sin(alpha) + 7.5, z = r*cos(alpha) + 7,5确定,其中r是圆的半径,alpha是xy平面与相机当前位置之间的角度。

当然,角度取决于旋转速度以及从动画开始的时间。基本上,您唯一需要做的就是设置正确的角度,然后根据上面的表达式计算坐标。

有关圆坐标的更多信息,请参阅Wiki:http://en.wikipedia.org/wiki/Unit_circle

答案 1 :(得分:1)

我认为有两种方法可以使用:

您可以使用sin / cos来计算camxcamz位置。 This图片就是一个很好的例子。

另一种方法是将相机移动到7.5, 0, 7.5,然后以您想要的相机角度旋转相机。之后,您将相机移动-7.5, 0, -7.5