4

我有一个场景,基本上是一个正方形的地板,尺寸为 15x15(坐标为 (0,0,0) (0,0,15) (15,0,15) (15,0,0) 的四边形)。

我已将场景中心设置为 (7.5,0,7.5)。问题是我无法弄清楚如何围绕场景中心水平旋转相机(也就是让相机围绕场景中心进行 360 度水平旋转)。我知道你需要对 sin 和 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);
4

2 回答 2

5

您需要修改 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

于 2013-01-02T11:50:58.343 回答
1

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

您可以使用 sin/cos 来计算您的camxcamz位置。这张图片是一个很好的例子,它是如何工作的。

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

于 2013-01-02T11:50:45.087 回答