Я пытаюсь сделать упрощенный симулятор вертолета (на данный момент это куб) в 3D, и у меня возникли некоторые проблемы с вращением. Вертолет может вращаться вдоль трех осей:
- вращаться на себя, используя задний винт: вращение оси y
- наклон влево и вправо для перехода влево или вправо: вращение оси z
- наклоните вверх и вниз, чтобы двигаться назад или вперед: вращение оси x
Мне нужно иметь возможность контролировать каждую ось в отдельности. До сих пор я пытался использовать углы Эйлера, но независимо от того, какой порядок вращения я использую, я либо наталкиваюсь на замок карданного подвеса, либо некоторые оси «меняются местами».
Кажется, мне нужно использовать кватернионы, но я не знаю, как управлять каждой отдельной осью, поскольку кватернионы используют направление и угол. Должен ли я создать три кватерниона и умножить их вместе? Разве я не столкнулся бы с такими же проблемами?
Странно то, что если я использую свой палец, чтобы представить три оси своего вертолета (большой палец вверх = y, индекс = z, середина = x), я, похоже, не столкнусь с этими проблемами. Почему?