2012-08-14 1 views
1

Как поворачивать точку (x, y, z) углы (rx, ry, rz) относительно их соответствующих осей?Рассчитать абсолютное положение точки, имеющей положение перед поворотом и углы поворота

То есть, как определить точку (x1, y1, z1) в результате вращения (x, y, z) с помощью углов поворота (rx, ry, rz)?

Есть ли какие-либо программы DirectX, которые это выполняют?

+2

Вам нужно найти формулу. Что этот вопрос имеет отношение к программированию и этому цитированию? – klm123

+4

К чему относятся эти углы? Являются ли они углы Эйлера? В общем, вы должны получить от этих углов матрицу вращения (путь зависит от того, что представляют эти углы, см., Например, [здесь] (http://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions#Conversion_formulae_between_formalisms)) и применить его к вектор положения. –

+3

читайте это http://en.wikipedia.org/wiki/Rotation_matrix – mathematician1975

ответ

3

Что вы спрашиваете о том, как использовать Euler Angles для выполнения поворотов. Есть несколько конвенций, которые вы можете выбрать, но мне кажется, что вы заинтересованы в применении вращения вокруг оси Z, за которым следуют вращение вокруг Y, а затем вращение вокруг X. Для этого вы будете умножать на матрицу

enter image description here

где

c1 = cos(rx) s1 = sin(rx) 
c2 = cos(ry) s2 = sin(ry) 
cs = cos(rz) s3 = sin(rz) 

Есть несколько проблем с этим подходом, одним из наиболее распространенных является gimbal lock. Предпочтительный подход заключается в использовании одной из угловых составов. Двумя наиболее распространенными из них являются Unit Quaternion Rotations и Euler-Rodreigues Rotation Matrices. Они могут быть сгенерированы для генерации любой из 12 матриц вращения Эйлера, явно определяя три оси вращения и связанные с ними углы поворота, а затем умножая результирующее представление вращения в обратном порядке, которое они должны применяться к векторам, подлежащим вращению.

DirectX использует Quaternions for performing rotations.

+0

+1 для понимания вопроса (я не мог) и за четкий и подробный ответ! – Ali

1

Во время моей электроники (EM) классов я узнал преобразования декартовых к полярным cordinates, используя формулу

х = г SINQ COSF, у = г SINQ sinf, г = г cosq

More Info Here

q is theta, f is phi.

+0

Я не думаю, что это то, о чем спрашивает плакат. Вы конвертируете между полярными и декартовыми координатами. ОП задает вопрос о повороте точки из одного места в другое с использованием углов Эйлера. – andand

Смежные вопросы