#include "math/View.h" void View::updateDirections(float lengthAngle, float widthAngle) { back.setAngles(lengthAngle, widthAngle); right = back.cross(Vector3(0.0f, 1.0f, 0.0f)); right.normalize(); up = right.cross(back); up.normalize(); back = -back; } void View::updateDirections(const Quaternion& q) { up = q * Vector3(0.0f, 1.0f, 0.0f); back = q * Vector3(-1.0f, 0.0f, 0.0f); right = up.cross(back); right.normalize(); } const Matrix& View::updateMatrix(const Vector3& pos) { view.set(0, Vector4(right[0], right[1], right[2], right.dot(-pos))); view.set(1, Vector4(up[0], up[1], up[2], up.dot(-pos))); view.set(2, Vector4(back[0], back[1], back[2], back.dot(-pos))); view.set(3, Vector4(0.0f, 0.0f, 0.0f, 1.0f)); return view; } Vector3 View::getUp() const { return up; } Vector3 View::getDown() const { return -up; } Vector3 View::getLeft() const { return -right; } Vector3 View::getRight() const { return right; } Vector3 View::getFront() const { return -back; } Vector3 View::getBack() const { return back; }