Verwenden von Quaternion mit Python ~ numpy-quaternion ~

Einführung

Pyquaternion und Numpy-Quaternion scheinen die beiden besten Bibliotheken der Welt zu sein, die Quaternionen in Python verarbeiten. Wahrscheinlich ist die Quaternionsberechnung in Python jedoch überfüllt, da die Person, die die Referenzseite für Pyquaternion erstellt hat, die erste in Japan war Es ist nur Pyquaternion (gibt es nur?).

Numpy-Quaternion scheint jedoch geringere Berechnungskosten zu haben. Referenz: https://www.theoj.org/joss-papers/joss.00787/10.21105.joss.00787.pdf

Vergleicht man die Anzahl der Sterne auf Github, so gibt es auch mehr Numpy-Quaternion (ab dem 13. Dezember 2019 beträgt die Numpy-Quaternion 276 und die Pyquaternion 138).

Ich bin der Meinung, dass die Affinität zu Numpy aufgrund der einfachen Handhabung der Chargenkonvertierung auch besser ist als die von Pyquaternion. Möchten Sie es verwenden?

Github-Repository: https://github.com/moble/quaternion Dokumentation: https://quaternion.readthedocs.io/en/latest/ PyPI: https://pypi.org/project/numpy-quaternion/

Installation

pip install numpy-quaternion

Sie können leicht mit eingeben.

Ebenfalls,

import quaternion

Sie können die Bibliothek mit importieren.

Quarternion-Notation

quat = (w, x, y, z) = \left(\underbrace{\cos\frac{\theta}{2}}_{Realteil},\ \underbrace{\lambda_x\sin\frac{\theta}{2},\ \lambda_y\sin\frac{\theta}{2},\ \lambda_z\sin\frac{\theta}{2}}_{Imaginäre Zahl(Vektor)Abteilung}\right)

Wie benutzt man

Weniger als,

import numpy as np
import quaternion

Wird besorgt.

Machen Sie eine Quarternion

quat = np.quaternion(w, x, y, z)

Quaternion wird dem Attribut numpy hinzugefügt. Zum Beispiel

print(np.quaternion(1,0,0,0))
# -> quaternion(1, 0, 0, 0)

type(np.quaternion(1,0,0,0))
# -> quaternion.quaternion

Es wird.

Quarternionssynthese

q1 = np.quaternion(1, 2, 3, 4)
q2 = np.quaternion(4, 5, 6, 7)
print(q1*q2)
# -> quaternion(-52, 10, 24, 20)

Multiplikation ist definiert. Derzeit sind auch andere Operationen mit vier Regeln definiert, aber verwenden Sie manchmal Summen ... Sie sind nicht in Eigen von C ++ definiert.

Methode von np.quaternion

Es wird nur ein Teil aufgenommen. Es werden keine Dinge behandelt, die mit sphärischen Funktionen oder linearer Interpolation zusammenhängen. Referenz: https://quaternion.readthedocs.io/en/latest/_autosummary/quaternion.html

Mitgliedsvariablen

Mitgliedsvariablen Funktion
w Elemente des Realteils
x Das erste Element des Imaginärteils
y Zweites Element des Imaginärteils
z Drittes Element des Imaginärteils
components (w,x,y,z)Ist numpy.Wird als Array zurückgegeben
imag Imaginärteil(x,y,z)Ist numpy.Wird als Array zurückgegeben
vec Imaginärteil(x,y,z)Ist numpy.Wird als Array zurückgegeben
real Realteil(w)Ist zurück gekommen

Mitgliedsfunktion

Mitgliedsfunktion Funktion
abs() Absolutwert der Quaternion (euklidischer Abstand)
absolute() Absoluter Wert der Quaternion
angle() Drehwinkel
conj() Gibt das komplexe Konjugat der Quaternion zurück
conjugate() Gibt das komplexe Konjugat der Quaternion zurück
equal(quat) Entspricht es der Quaternion des Inhalts des Arguments?
exp Gibt exponentiell zurück (e^q
inverse() Gibt die umgekehrte Quaternion zurück
isfinite() Sind alle Elemente endlich?
ininf() Gibt es überhaupt ein inf-Element?
innan() Gibt es überhaupt ein Nanelement?
log() Gibt das Quarternionsprotokoll zurück
nonzero() Sind alle Elemente 0
norm() Quarternion Cayley Norm (absolute Quadratroute)
normalized() Gibt eine normalisierte Quaternion zurück
notequal(quat) Ist es nicht gleich der Quaternion im Argument?
sqrt() Quarternion Quadrat-root(quat=q*qTreffenq)Gib es zurück
square() Quarternion im Quadrat(quat*quat)Gib es zurück

Quaternionsmethode

Der Punkt ist, dass die Methoden in diesem Bereich nicht eindimensional sind, sondern auch für mehrdimensionale Arrays verwendet werden können. Wenn die Größe der letzten Dimension eine Quaternion erfordert, sollte sie 4 sein, wenn es 3 Dimensionen sind, sollte es 3 Dimensionen sein, wenn es 3x3 ist, sollten die letzten 2 Dimensionen 3x3 sein.

Mitgliedsfunktion Funktion
quaternion.as_quat_array(a) numpy.Konvertieren Sie das Array in Quaternion. Die Größe der letzten Dimension von a muss 4 sein
quaternion.as_float_array(a) numpy.Quaternion numpy.In Array konvertieren. Die Dimension der Ausgabe ist eine größer als die der Eingabe.
quaternion.from_float_array(a) as_quat_Gleich wie Array
quaternion.as_rotation_matrix(q) numpy.Konvertieren Sie die Quaternion in eine 3x3-Rotationsmatrix.
quaternion.from_rotation_matrix(rot, nonorthogonal=True) Numpy eine 3x3 Rotationsmatrix.In Quaternion konvertieren
quaternion.as_rotation_vector(q) Finden Sie die Rotationsachse aus dem Viertel. Die Größe der letzten Dimension der Ausgabe beträgt 3.
quaternion.from_rotation_vector(rot) Von Rotationsachse der Größe 3 in Quaternion konvertieren.
quaternion.as_euler_angles(q) Von Quaternion auf Ölerwinkel umstellen. Informationen zur Umrechnungsreihenfolge der Euler-Winkel finden Sie im Dokument.
quaternion.from_euler_angles(alpha_beta_gamma, beta=None, gamma=None) Vom Euler-Winkel in Quarternion konvertieren. Informationen zur Umrechnungsreihenfolge der Euler-Winkel finden Sie im Dokument.
quaternion.rotate_vectors(R, v, axis=-1) R ist eine Quaternion und v ist ein Vektor. Drehen Sie den Vektor entsprechend der Quaternion.
quaternion.allclose(a, b, rtol=8.881784197001252e-16, atol=0.0, equal_nan=False, verbose=False) Vergleichen Sie zwei Quaternionen
quaternion.integrate_angular_velocity(Omega, t0, t1, R0=None, tolerance=1e-12) Entsprechend der Winkelgeschwindigkeit drehen

Offizielle Dokumentation

https://quaternion.readthedocs.io/en/latest/index.html

Übrigens scheint der Autor dieser Bibliothek einen großen Ölerwinkel zu haben. Wenn Sie jemanden sehen, der es benutzt, hören Sie auf! Sag das und geh weg von der Stelle und leg dich mit deiner Mutter an! Ist geschrieben

Schließlich

Wo ist die Nachfrage nach Quaternionen in Python? Unity ist C #, und ich spreche zunächst davon, die Funktionen von Unity zu verwenden, und Python ist für Roboter zu langsam, was nicht in Frage kommt ...

Recommended Posts

Verwenden von Quaternion mit Python ~ numpy-quaternion ~
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Python] Verwenden von OpenCV mit Python (Basic)
Verwenden von OpenCV mit Python @Mac
Senden Sie mit Python mit Google Mail
Vervollständigung von Python mit Emacs mit Company-Jedi
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Verwenden von Rstan aus Python mit PypeR
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
[Python] Verwenden von OpenCV mit Python (Kantenerkennung)
Hinweise zur Verwendung von rstrip mit Python.
Bei Verwendung von MeCab mit virtualenv python
Vorsichtsmaßnahmen bei Verwendung von sechs mit Python 2.5
[AWS] Verwenden von INI-Dateien mit Lambda [Python]
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Versuchen Sie eine Formel mit Σ mit Python
Scraping mit Python
Python mit Go
Verwenden von Python und MeCab mit Azure Databricks
Socket-Kommunikation über Socket-Server mit Python jetzt
Twilio mit Python
In Python integrieren
Starten Sie Python
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Spielen Sie mit 2016-Python
AES256 mit Python
Überprüfen Sie die Aktienkurse mit Slackbot mit Python
Arbeiten mit OpenStack mit dem Python SDK
Getestet mit Python
Python beginnt mit ()
Tipps zur Verwendung von Python + Caffe mit TSUBAME
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Ich verwende Tox und Python 3.3 mit Travis-CI
Scraping mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
[Persönliches Memo] julia - Verwenden Sie die Python-Bibliothek mit julia unter Verwendung von PyCall
Debuggen mit VS-Code mit Boost Python Numpy
Ich habe versucht, Mecab mit Python2.7, Ruby2.3, PHP7 zu verwenden
Letzte Ranglistenerstellung mit der Qiita-API mit Python
Was verwenden Sie beim Testen mit Python?
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
Bearbeiten Sie Redmine mit Python Redmine
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python