我正在尝试学习这门有关计算机图形学的课程,但我被困在作业中 1. 我不明白向量eye
和up
. 作业的描述可以在这个链接中找到,还有第一个作业的骨架。
到目前为止,我有以下代码:
// Transform.cpp: implementation of the Transform class.
#include "Transform.h"
//Please implement the following functions:
// Helper rotation function.
mat3 Transform::rotate(const float degrees, const vec3& axis) {
// Please implement this.
float radians = degrees * M_PI / 180.0f;
mat3 r1(cos(radians));
mat3 r2(0, -axis.z, axis.y, axis.z, 0, -axis.x, -axis.y, axis.x, 0);
mat3 r3(axis.x*axis.x, axis.x*axis.y, axis.x*axis.z,
axis.x*axis.y, axis.y*axis.y, axis.y*axis.z,
axis.x*axis.z, axis.z*axis.y, axis.z*axis.z);
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
r2[i][j] = r2[i][j]*sin(radians);
r3[i][j] = r3[i][j]*(1-cos(radians));
}
}
return r1 + r2 + r3;
}
// Transforms the camera left around the "crystal ball" interface
void Transform::left(float degrees, vec3& eye, vec3& up) {
eye = eye * rotate(degrees, up);
}
// Transforms the camera up around the "crystal ball" interface
void Transform::up(float degrees, vec3& eye, vec3& up) {
vec3 newAxis = glm::cross(eye, up);
}
// Your implementation of the glm::lookAt matrix
mat4 Transform::lookAt(vec3 eye, vec3 up) {
return lookAtMatrix;
}
Transform::Transform()
{
}
Transform::~Transform()
{
}
对于该left
方法,它似乎在做正确的事情,即围绕 y 轴旋转对象(实际上我不确定对象是在移动还是我正在移动的是相机,有人可以澄清一下吗?) .
对于up
我无法使其工作的方法,它将围绕 x 轴旋转对象(或相机?)(至少我是这么认为的)。
最后,我不明白该lookAt
方法应该做什么。
有人可以帮助我了解要执行的操作吗?有人可以解释向量eye
和的作用是什么up
吗?