Я бы не использовал углы Эйлера, а скорее ось / угол Эйлера. В этом отношении OpenGL использует glRotate в качестве входных данных.
Если все, что вам нужно, это отобразить вектор на другой вектор, для этого существует бесконечное число поворотов. Для самого короткого (с наименьшим углом поворота) вы можете использовать вектор, найденный по перекрестному произведению ваших векторов from
и to
.
axis = from X to
отсюда угол поворота можно найти от from.to = cos(theta)
(при условии единичных векторов)
theta = arccos(from.to)
glRotate(axis, theta)
преобразует from
в to
.
Но, как я уже сказал, это только один из многих поворотов, которые могут сделать эту работу. Вам нужен полный референс, чтобы лучше определить, как вы хотите сделать преобразование.