Drehen Sie den normalen-Vektor auf die Achsen Flugzeug

Habe ich eine Reihe von Daten-Punkte im 3D-Raum, die anscheinend alle fallen auf einer bestimmten Ebene. Ich benutze PCA zur Berechnung der Fläche Parameter. Die 3. Komponente der PCA gibt mir den Normalenvektor der Ebene (schwächste Komponente).

Was ich will Nächstes zu tun ist, zu transformieren alle Punkte, die auf Sprach-Ebene und betrachten Sie es in 2D.

Meine Idee war, den folgenden zu tun:

  • Finden Sie ein Zentrum in Punkt (Durchschnitt) auf der Ebene
  • Subtrahieren es von allen Datenpunkten, um Sie zu arrangieren um den Ursprung
  • Drehen Sie den normalen, so daß es zu (0,0,-1)
  • Gelten diese Drehung auf alle Daten Punkte
  • Orthogonale Projektion (im Grunde überspringen z-Achse)

Jetzt bin ich stecken bei der Suche nach der richtigen Drehung Betrieb. Ich habe versucht, die Arbeit mit acos oder atan und der Errichtung zweier-rotation-Matrizen. Scheint beide Methoden (mit acos, mit atan), geben mir das falsche Ergebnis. Vielleicht können Sie mir helfen hier raus!

Matlab-code folgt:

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:

Erwarte ich n2 zu haben, die y-Komponente null. Jedoch nicht, dass bereits für den Vektor (-0.6367, 0.7697, 0.0467).

  • Warum gehst du nicht einfach projizieren alle Punkte auf der Ebene und dann drehen Sie alles so, dass Sie können einfach ziehen Sie die Punkte mit Ihrer xz (oder xy-Koordinaten)?
  • Oder befestigen Sie die Kamera direkt an das Flugzeug, so dass es den Blick direkt auf Sie.
  • Die Kamera-Idee ist gut. Sie die Kamera bewegen, heraus aus der Ebene, die von der Herkunft einiger Entfernung entlang der normalen. Dann zeigen Sie die Kamera auf den Ursprung. Natürlich, dies setzt Voraus, dass Sie haben Kamera-Projektions-code, die getan werden kann mit mit Rotationen oder Vektoren.
  • Guter Vorschlag. Traurig genug, ich habe keine Kamera-code und das möchte ich nicht einführen Operationen, die ich nicht vollständig kontrollieren.
InformationsquelleAutor ypnos | 2009-06-21
Schreibe einen Kommentar