Disons que j'ai deux points dans l'espace 3D (a et b) et un vecteur axe/unité fixe appelé n. Je veux créer une matrice de rotation qui minimise la distance euclidan entre le point a (non tourné) et le point tourné b.Matrice de rotation qui minimise la distance
par exemple:
Q := matrix_from_axis_and_angle (n, alpha);
find the unknown alpha that minimizes sqrt(|a - b*Q|)
BTW - Si est plus facile exprimé une solution/algorithme avec l'unité-escouades aller de l'avant et de les utiliser. Je viens d'utiliser des matrices pour formuler ma question parce qu'elles sont plus largement utilisées.
Oh - Je sais qu'il ya certains cas dégénérés (a ou b couché exactement en ligne avec n ect.) Ceux-ci peuvent être ignorés. Je cherche juste le cas où une seule solution peut être calculée.
En supposant que toutes les rotations tournent autour de l'origine si vous faites une rotation b de sorte qu'elle tombe sur le vecteur, cela n'assure-t-il pas la distance minimale (ou maximale)? –
Ou supposons-nous n fixé? –
n est fixé ... malheureusement, je ne peux pas le changer. Sinon, ce serait très simple. –