Во-первых, я много гуглил и проверял другие сообщения stackoverflow по этому поводу, но не могу получить рабочий ответ или фрагмент рабочего кода. Математика - не моя сила.
Мне нужна процедура, которая берет точку камеры (CX, CY, CZ) и вращает ее вокруг точки обзора (LX, LY, LZ) на три угла поворота (RX, RY, RZ). Использование вращения Эйлера в некоторых случаях приводит к блокировке кардана, чего мне следует избегать. Итак, я слышал об использовании кватернионов.
Я нашел это для преобразования вращений в кватернион http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/index.htm.
и это для преобразования из кватерниона обратно в вращения Эйлера по XYZ http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/index.htm
Кажется, они работают нормально, но мне нужно знать, как использовать кватернион для поворота CX, CY, CZ вокруг LX, LY, LZ, а затем вернуть новый CX, CY, CZ без проблем с блокировкой кардана.
Об этом так много сказано, что я уверен, что хорошее объяснение и фрагмент кода помогут не только мне, но и многим другим в будущем.
Так что, пожалуйста, помогите, если сможете. Большое спасибо.