首先让我说我数学不是那么好,这就是为什么我来这里问我的问题。
我创建了一个程序,相机直接看着我的物体,但我现在想要围绕物体旋转相机。
当程序运行时它会创建一个图像,我将创建程序的多个版本,然后创建多个图像文件,然后我可以将它们放在一起,使其看起来像相机围绕对象旋转。
我对我的相机位置和它所看到的方向的两行代码如下:
Vect campos(3, 1.5, -4);
Vect look_at(0,0,0);
我没有要求如何编写代码以使这种旋转成为可能,我要问的是我将如何为这些值中的每一个计算出不同的X,Y,Z,以便我可以创建围绕物体旋转。
提前感谢您的任何答案。
答案 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);