У меня есть физический симулятор, у которого есть вектор направления, и мне нужно рассчитать вращение объекта, чтобы следовать за ним.Вращение объекта OpenGL с использованием вектора направления и матрицы трансформации
Vec3f up_vector = Vec3f(0,1,0);
Vec3f direction_vector = directionVector(position, previous_position);
Vec3f crossproduct = normaliseVector(Vec3f(up[0] * direction[0], up[1] * direction[1], up[2] * direction[2]));
Vec3f crossproduct2 = normaliseVector(Vec3f(crossproduct[0] * direction_vector[0], crossproduct[1] * direction_vector[1], crossproduct[2] * direction_vector[2]));
rotation = Matrix44f(
{ crossproduct[0], crossproduct[1], crossproduct[2], 0 },
{ crossproduct2[0], crossproduct2[1], crossproduct2[2], 0 },
{ direction_vector[0], direction_vector[1], direction_vector[2], 0 },
{ 0, 0, 0, 1 });
glMultMatrixf(rotation);
Объект кажется вращаться в правильном направлении, но обращается только на одной оси (выглядит как 2D-объект и не может быть виден из оси х, когда в начале координат). Я не знаю, связано ли это с тем, как работает OpenGL?