Einzelnen Beitrag anzeigen

Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Rotation anhand eines Vektors

  Alt 30. Okt 2009, 08:58
So hier nun die endgültige und meiner Meinung nach einfachste Lösung für dein Problem:

Wir brauchen einen Vektor, der unsere Drehachse bildet, da wir ja nicht unbedingt die Einheitsvektoren x,y,z zum Drehen benutzen wollen.

Dieser Vektor muss senkrecht auf "Richtungsvektor" und dem "Zielvektor", auf den der "Richtungsvektor" gedreht werden soll, stehen. Wie schon gesagt, erhälst du diesen Drehvektor, wenn du das Kreuzprodukt zwischen "Richtungsvektor" und "Zielvektor" bildest, und sicherheitshalber, noch normierst:

http://upload.wikimedia.org/math/c/e...d308010e54.png

Code:
Normierung eines Vektors (Länge des Vektors auf 1 setzen): x' = x / |x|
Dieser Vektor ist nun also deine Drehachse und kann in die Drehmatrix für die Drehung um eine beliebige Achse eingesetzt werden:

http://upload.wikimedia.org/math/e/d...4f396333ac.png

Den Winkel alpha erhälst du in diesem Fall direkt aus dem Skalarprodukt zwischen "Richtungsvektor" und "Zielvektor":

http://upload.wikimedia.org/math/b/d...11b61e2743.png

Anschließend können alle Ortsvektoren deines "Objektes" mit der fertigen Drehmatrix multipliziert werden und du müsstest dann das gedrehte Objekt erhalten
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat