У нас есть gazillion пространственные координаты (x, y и z), представляющие атомы в 3d-пространстве, и я строю функцию, которая переведет эти точки в новую систему координат. Смещение координат к произвольному происхождению прост, но я не могу обернуть голову вокруг следующего шага: вычисления трехмерного вращения точки. Другими словами, я пытаюсь перевести точки из (x, y, z) в (x ', y', z '), где x', y 'и z' находятся в терминах я ', j' и k ', новые векторы оси, которые я создаю с помощью euplid python module.
Я думаю, что все, что мне нужно, это евклидский кватернион, чтобы сделать это, т.е.
>>> q * Vector3(x, y, z)
Vector3(x', y', z')
но для этого я считаю, что мне нужен вектор оси вращения и угол поворота. Но я не знаю, как вычислить их из я ', j' и k '. Это похоже на простую процедуру кодирования с нуля, но я подозреваю, что что-то вроде этого требует, чтобы линейная алгебра выяснялась сама по себе. Большое спасибо за толкание в правильном направлении.