+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);
+ object_matrix = Matrix::from_columns(columns);
+ view_matrix = invert(object_matrix);