Tourner vecteur normal sur l'axe de l'avion

J'ai un ensemble de points de données dans l'espace 3D qui, apparemment, tous tombent sur un plan spécifique. J'utilise de l'APC pour calculer les paramètres du plan. La 3ème composante de l'ACP, me donne le vecteur normal du plan (le plus faible).

Ce que je veux faire est de transformer tous les points sur ledit plan et de le regarder en 2D.

Mon idée était de faire ce qui suit:

  • Trouver un point central (point moyen) sur le plan
  • Soustraire de tous les points de données afin de les organiser autour de l'origine
  • Rotation de la normale, de sorte qu'il devient (0,0,-1)
  • Appliquer cette rotation à tous les points de données
  • Utiliser la projection orthogonale (en gros, passez de l'axe z)

Maintenant, je suis coincé à trouver la bonne rotation de l'opération. J'ai essayé de travailler avec acos ou atan et mise en place de deux matrices de rotation. Semble que les deux méthodes (à l'aide d'acos, à l'aide de atan) donnez-moi le mauvais résultat. Peut-être que vous pouvez m'aider ici!

Code Matlab suivant:

b = atan(n(1) /n(2));
rotb = [cos(b) -sin(b) 0; sin(b) cos(b) 0; 0 0 1];
n2 = n * rotb;
a = atan(n(1) /n(3));
rota = [cos(a) 0 sin(a); 0 1 0; -sin(a) 0 cos(a)];
n3 = n2 * rotaows:

J'attends n2 d'avoir composante y de zéro. Cependant qui ne déjà pour le vecteur (-0.6367, 0.7697, 0.0467).

Pourquoi ne pas simplement le projet, tous les points dans l'avion, et puis tourner tout de sorte que vous pouvez simplement dessiner les points à l'aide de leur xz (ou xy), qui coordonne?
Que, ou connectez l'appareil photo directement à l'avion tel qu'il est en train de regarder directement.
La caméra idée est bonne. Vous déplacez l'appareil photo de l'avion à partir de l'origine à une certaine distance le long de la normale. Vous pointez l'appareil photo à l'origine. Bien sûr, cela suppose que vous avez de la projection de caméra code, ce qui peut être fait avec des avec des rotations ou des vecteurs.
Bonne suggestion. Malheureusement, je n'ai pas de caméra de code et je ne veux pas introduire toutes les opérations que je ne suis pas entièrement le contrôle.

OriginalL'auteur ypnos | 2009-06-21