Рассчитать повороты, чтобы посмотреть на 3D-точку?

Мне нужно рассчитать 2 угла (рыскание и тангаж) для трехмерного объекта, чтобы столкнуться с произвольной трехмерной точкой Эти повороты известны как «Эйлер». вращается просто потому, что после первого вращения (скажем, Z, на основе рисунка ниже) ось Y также вращается вместе с объектом.

Это код, который я использую, но он не работает полностью. Находясь на плоскости земли (Y = 0), объект правильно вращается, чтобы повернуться к точке, но как только я переместил точку вверх по Y, вращения не будут выглядеть правильно.

// x, y, z represent a fractional value between -[1] and [1]
// a "unit vector" of the point I need to rotate towards

yaw = Math.atan2( y, x )
pitch = Math.atan2( z, Math.sqrt( x * x + y * y ) )

Знаете ли вы, как рассчитать 2 угла Эйлера для данной точки?

На рисунке ниже показано, как я вращаюсь. Это углы, которые мне нужно рассчитать. (Единственное отличие состоит в том, что я вращаю объект в порядке X, Y, Z, а не Z, Y, X)

рис http://i53.tinypic.com/33lo6jp.jpg

enter image description here

Это моя система.

coordinate system is x = to the right, y = downwards, z = further back an object is by default at (0,0,1) which is facing backward rotations are in the order X, Y, Z where rotation upon X is pitch, Y is yaw and Z is roll

my system

Ответы на вопрос(4)

Ваш ответ на вопрос