Mathe :: Quaternion.

Math :: Quaternion ist eine Perl-Klasse, um Quaternionen darzustellen.
Jetzt downloaden

Mathe :: Quaternion. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Jonathan Chin
  • Website des Verlags:
  • http://search.cpan.org/~jchin/

Mathe :: Quaternion. Stichworte


Mathe :: Quaternion. Beschreibung

Math :: Quaternion ist ein Perl-Klasse quaternions darzustellen. Math :: Quaternion ist ein Perl-Klasse quaternions.SYNOPSIS Verwendung Math :: Quaternion qw (Slerp) zu vertreten; my $ q = Math :: Quaternion-> neu; Machen # eine neue Einheit quaternion # eine Drehung um die Achse Stellen (0,1,0) my $ q2 = Math :: Quaternion-> new ({Achse => , Winkel => 0,1}) ; mein @v = (1,2,3); # Ein Vektor. meine @vrotated = $ Q2-> rotate_vector (@v); # Drehen @v über (0,1,0). my $ q3 = Math :: Quaternion :: Rotation (0.7,2,1,4); # A unterschiedliche Rotation. my $ q4 = Slerp ($ q2, $ q3,0.5); # Interpolated Rotation. meine @vinterp = $ q4-> rotate_vector (@v); Dieses Paket können Sie quaternions erstellen und bearbeiten. Eine Quaternion ist ein mathematisches Objekt als eine Art Verallgemeinerung der komplexen Zahlen entwickelt, in der Regel durch eine Anordnung von vier reellen Zahlen dargestellt und wird oft in einem dreidimensionalen space.See, zum Beispiel zur Darstellung Rotationen verwendet, http: // MathWorld. wolfram.com/Quaternion.html für weitere Details über die Mathematik der quaternions.Quaternions können addiert, subtrahiert, und wie komplexe Zahlen oder Vektoren skaliert - sie können auch zu multiplizieren, aber Quaternionenmultiplikation DOES NOT pendeln. Das heißt, wenn Sie Quaternionen $ q1 und $ q2 haben, dann in der Regel $ q1 * $ q2! = $ Q2 * $ q1. Dies wird bei der Darstellung Drehungen auf ihre Verwendung im Zusammenhang, die auch nicht tun commute.If Sie nur Drehungen darstellen wollen und kümmern sich nicht um die internen mathematischen Details, sollte dies alles, was Sie brauchen, zu wissen: Alle Quaternionen haben eine Menge genannt Norm, ähnlich der Länge eines Vektors. A Quaternion mit norm gleich 1 ist eine "Einheit Quaternion" genannt. Alle Quaternionen, die Drehungen Einheit darstellen quaternions.If Sie neue () aufrufen, ohne Argumente, es wird Ihnen eine Einheitsquaternion geben, die keine Rotation darstellt: $ q = Math :: Quaternion-> new; Sie können eine quaternion machen, die eine darstellt Drehung eines gegebenen Winkels (in Radiant) um eine gegebene Achse: $ qrot = Math :: Quaternion-> new ({Achse => 0,1, Winkel => }); Sagen Sie zwei Umdrehungen haben, $ q1 und $ q2, und Sie wollen ein Quaternion, um eine Rotation von $ q1 darstellt, die von $ q2 gefolgt. Dann Sie tun: $ q3 $ q2 = * $ q1; # Drehen von $ q1, gefolgt von $ q2.Remember, dass dies als $ q1 nicht das gleiche ist * $ q2, die die Reihenfolge der rotations.If umkehren werden Sie viele iterierter quaternion Operationen durchführen, kann das Ergebnis nicht ganz eine Einheit sein, quaternion aufgrund numerischer Ungenauigkeiten. Sie können sicherstellen, dass jede quaternion hat Einheitslänge, indem Sie: $ unitquat = $ anyquat-> normalisieren; Wenn Sie eine Rotation quaternion haben, und Sie möchten die 3x3-Matrix finden, die die entsprechende Drehung darstellt, dann gilt: @matrix = $ q -> MATRIX3X3; Ebenso können Sie eine 4x4-Matrix der Art erzeugen Sie OpenGL passieren würde: @glmatrix = $ q-> MATRIX4X4; Wenn Sie einen Vektor, der eine Richtung haben, und Sie wollen den Vektor durch eine Quaternion drehen $ q: my @vector = (0,0,1); # Zeigt Vektor in Z-Richtung. meine @newvec = $ q-> rotate_vector (@vector); # New direction.Say Sie verwenden quaternions die Ausrichtung einer Kamera darstellen, und Sie haben zwei Quaternionen: man eine Start Orientierung darzustellen, und eine andere eine Endplatzierung darzustellen. Wenn Sie alle die Quaternionen, die die Ausrichtungen dazwischen finden, so dass Sie Ihre Kamera reibungslos von Anfang bis Ende zu bewegen, verwenden Sie die Slerp () Routine: Verwendung Math :: Quaternion qw (Slerp); my ($ QSTART, $ qend) = ...; # Set $ Tween auf 9 Punkte zwischen Anfang und Ende, exklusiv. für meine $ t (1..9) {my $ Tweens = Slerp ($ QSTART, $ qend, 0,1 * $ t); ... } Anforderungen: · Perl.


Mathe :: Quaternion. Zugehörige Software