使用X,Y,Z旋转相机

时间:2014-03-16 16:48:06

标签: c++ math rotation

首先让我说我数学不是那么好,这就是为什么我来这里问我的问题。

我创建了一个程序,相机直接看着我的物体,但我现在想要围绕物体旋转相机。

当程序运行时它会创建一个图像,我将创建程序的多个版本,然后创建多个图像文件,然后我可以将它们放在一起,使其看起来像相机围绕对象旋转。

我对我的相机位置和它所看到的方向的两行代码如下:

Vect campos(3, 1.5, -4);

Vect look_at(0,0,0);

我没有要求如何编写代码以使这种旋转成为可能,我要问的是我将如何为这些值中的每一个计算出不同的X,Y,Z,以便我可以创建围绕物体旋转。

提前感谢您的任何答案。

1 个答案:

答案 0 :(得分:0)

要获得圆圈的参数化,您可以使用:

x = r cos( t )
y = r sin( t )
z = z

这将围绕中心r的半径为(0,0,0)的z轴旋转。您可以将相机放在t in [0, 2 pi]的任何位置。

然后,假设您感兴趣的对象位于坐标的中心((0,0,0)),那么您的观察已经正确设置。

编辑: 在C ++代码中,您可以使用以下内容:

// Add the math header to the top of the file with the includes
#include <math.h>

然后获取相机位置:

double r = 3.0;
double t = 0.0;
double x = r * cos(t);
double y = r * sin(t);
double z = -4.0;

Vect campos(x, y, z);
Vect look_at(0,0,0);