вращение системы координат через кватернион

У нас есть миллиард пространственных координат (x, y и z), представляющих атомы в трехмерном пространстве, и я создаю функцию, которая переведет эти точки в новую систему координат. Сдвинуть координаты в произвольное начало очень просто, но я не могу осмыслить следующий шаг: вычисление вращения трехмерной точки. Другими словами, я пытаюсь перевести точки из (x, y, z) в (x ', y ', z'), где x ', y' и z 'выражены в терминах i', j 'и k', новых векторов осей, которые я создаю с помощью модуля euclid python .

Я думаю все, что мне нужно, это кватернион евклида, чтобы сделать это, то есть

>>> q * Vector3(x, y, z)
Vector3(x', y', z')

, но чтобы сделать ЭТО, я считаю, что мне нужны вектор оси вращения и угол поворота. Но я понятия не имею, как вычислить их из i ', j' и k '. Это кажется простой процедурой для написания кода с нуля, но я подозреваю, что что-то в этом роде требует, чтобы линейная алгебра разобралась самостоятельно. Большое спасибо за толчок в правильном направлении.

33
задан Fancypants_MD 2 February 2011 в 03:04
поделиться