Vector4 Camera::unproject(const Vector4 &p) const
{
- Vector4 r = invert(proj_matrix)*LinAl::Vector<double, 4>(p.x, p.y, p.z, 1.0f);
+ Vector4 r = invert(proj_matrix)*Vector4(p.x, p.y, p.z, 1.0f);
r = object_matrix*Vector4(r.x, r.y, r.z, p.w);
return r;
}
void Camera::update_object_matrix()
{
Vector3 right_dir = normalize(cross(look_dir, up_dir));
- LinAl::Vector<double, 4> columns[4];
- columns[0] = LinAl::Vector<double, 4>(right_dir, 0.0f);
- columns[1] = LinAl::Vector<double, 4>(cross(right_dir, look_dir), 0.0f);
- columns[2] = LinAl::Vector<double, 4>(-look_dir, 0.0f);
- columns[3] = LinAl::Vector<double, 4>(position, 1.0f);
+ Vector4 columns[4];
+ columns[0] = Vector4(right_dir, 0.0f);
+ columns[1] = Vector4(cross(right_dir, look_dir), 0.0f);
+ columns[2] = Vector4(-look_dir, 0.0f);
+ columns[3] = Vector4(position, 1.0f);
object_matrix = Matrix::from_columns(columns);
view_matrix = invert(object_matrix);
}