scipy.spatial.transform.Rotation.

__pow__#

Rotation.__pow__(self, float n, modulus)#

Diese Rotation n Mal mit sich selbst zusammensetzen.

Die Zusammensetzung einer Rotation p mit sich selbst kann auf nicht-ganzzahlige n erweitert werden, indem die Potenz n als Skalierungsfaktor für den Rotationswinkel um die feste Achse der Rotation betrachtet wird. Der Ausdruck q = p ** n kann auch als q = Rotation.from_rotvec(n * p.as_rotvec()) ausgedrückt werden.

Wenn n negativ ist, wird die Rotation vor Anwendung der Potenz invertiert. Mit anderen Worten, p ** -abs(n) == p.inv() ** abs(n).

Parameter:
nfloat

Die Anzahl der Male, die die Rotation mit sich selbst zusammengesetzt wird.

modulusNone

Dieses überschriebene Argument ist für Rotationen nicht anwendbar und muss None sein.

Rückgabe:
powerRotation Instanz

Wenn die Eingaberotation p N multiple Rotationen enthält, enthält die Ausgabe N Rotationen, wobei die i-te Rotation gleich p[i] ** n ist.

Hinweise

Zum Beispiel verdoppelt eine Potenz von 2 den Rotationswinkel, und eine Potenz von 0,5 halbiert den Winkel. Es gibt drei bemerkenswerte Fälle: Wenn n == 1, wird die ursprüngliche Rotation zurückgegeben, wenn n == 0, wird die Identitätsrotation zurückgegeben, und wenn n == -1, wird p.inv() zurückgegeben.

Beachten Sie, dass gebrochene Potenzen n, die effektiv eine Wurzel einer Rotation ziehen, dies unter Verwendung des kürzesten Pfades und der kleinsten Darstellung dieses Winkels (der Hauptwurzel) tun. Dies bedeutet, dass Potenzen von n und 1/n nicht unbedingt inverse voneinander sind. Zum Beispiel wird die 0,5-Potenz einer +240-Grad-Rotation als die 0,5-Potenz einer -120-Grad-Rotation berechnet, wobei das Ergebnis -60 statt +120 Grad ist.

Beispiele

>>> from scipy.spatial.transform import Rotation as R

Eine Rotation potenzieren

>>> p = R.from_rotvec([1, 0, 0])
>>> q = p ** 2
>>> q.as_rotvec()
array([2., 0., 0.])
>>> r = p ** 0.5
>>> r.as_rotvec()
array([0.5, 0., 0.])

Inverse Potenzen heben sich nicht unbedingt auf

>>> p = R.from_rotvec([0, 0, 120], degrees=True)
>>> ((p ** 2) ** 0.5).as_rotvec(degrees=True)
array([  -0.,   -0., -60.])