У меня есть камера, прикрепленная к самолету.
Вращение 0,0,0 - самолет летит на север, ровно и ровно.
Камера 0,0,0 направлена прямо вперед (через нос).
Когда самолет поворачивает (меняет курс на 270 ° к западу) и уходит в пикирование на 45 °, углы Эйлера для рыскания, тангажа и крена равны (-270, 45, 0).
В этот момент камера находится под теми же углами (-270, 45, 0).
Однако теперь оператор камеры поднимает точку обзора камеры на 90 ° и поворачивает вправо на 90 °.
Моя интуиция подсказывает мне, что теперь камера должна быть направлена (0, 0, 45).
NB Меня не слишком беспокоят признаки вращения, атм
Я могу преобразовать оба набора углов в кватернионы, чтобы упростить вращение, но я не знаю, как повернуть движение камеры относительно положения самолета. Я должен вращать вращение, но с земной системы отсчета.
Как мне повернуть кватернион относительно текущего 3D вращения другого?
var absoloutePlatform = Quaternion.RotationYawPitchRoll((float)ToRadians(yaw), (float)ToRadians(pitch), (float)ToRadians(roll));
var relativeSensor = Quaternion.RotationYawPitchRoll((float)ToRadians(yaw2), (float)ToRadians(pitch2), (float)ToRadians(roll2));
var absoluteQuaterion = [[ some calculation! ]]
var absoluteSensorAngles = absoluteQuaterion.GetYawPitchRoll();
relativeSensor * absoloutePlatform
это не то, что вы имеете в виду? Я действительно не понимаю, что еще вы могли иметь в виду - person harold   schedule 13.06.2021