système de coordonnées en rotation par l'intermédiaire d'un quaternion

Nous avons une foule de coordonnées spatiales (x, y et z) représentant les atomes dans l'espace 3d, et je suis de la construction d'une fonction qui va traduire ces points à un nouveau système de coordonnées. Déplaçant les coordonnées d'une origine arbitraire est simple, mais je ne peut pas envelopper la tête autour de la prochaine étape: le point 3d de la rotation des calculs. En d'autres termes, je suis en train de traduire les points de (x, y, z) à (x', y', z'), où x', y' et z' sont en termes de i', j' et k', le nouvel axe des vecteurs, je suis en train de faire avec l'aide de la euclide module python.

Je pense tout ce que je besoin est un euclid quaternion pour ce faire, c'est à dire

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

mais pour faire ce QUE je crois que j'ai besoin d'un vecteur de l'axe de rotation et l'angle de rotation. Mais je n'ai aucune idée de la façon de calculer ces de i', j' et k'. Cela semble être une procédure simple de code à partir de zéro, mais je soupçonne que quelque chose comme ceci nécessite d'algèbre linéaire de la figure sur mon propre. Un grand merci pour un coup de pouce dans la bonne direction.

  • juste pour clarifier, vous voulez une transformation linéaire d'un euclidienne 3-espace à un autre euclidienne 3-l'espace?
  • Voici un indice: Quelles seraient les vecteurs (0, 0, 1), (0, 1, 0) et (1, 0, 0) être traduite?
  • Matrice de Rotation est le meilleur choix ici. La matrice de rotation relative de coordonner les images est facile à obtenir et efficace d'appliquer. L'obtention et l'application d'un quaternion ici aurait essentiellement pour effet d'exiger la conversion de matrice de rotation et de le convertir ensuite retour à la matrice de rotation. Évidemment, il est préférable de simplement utiliser la matrice de rotation. Les Quaternions ont leurs forces ailleurs. Leurs points forts sont qu'ils sont seulement 4 numéros peuvent être composés et appliquée sans trig, sont simples et les contraintes (amplitude de l'unité), et sont bien adaptés pour l'interpolation.