Quaternion

Methods

Quaternion repräsentiert ein Einheitsquaternion, das zur Kodierung von 3D-Rotationen verwendet wird. Im Gegensatz zu Euler-Winkeln vermeiden Quaternionen Gimbal-Lock und interpolieren glatt. Das Transform.rotation Eigenschaft auf einem Szenenknoten speichert ein Quaternion.

Die Komponenten werden als (w, x, y, z) wobei w ist der skalare Teil und (x, y, z) bilden den Vektoranteil.

from aspose.threed.utilities import Quaternion
import math

# Identity quaternion (no rotation)
q = Quaternion()   # w=1, x=0, y=0, z=0

# Rotation of 90 degrees around the Y axis
q = Quaternion.from_euler_angle(0.0, math.radians(90), 0.0)

Methods: aspose.threed.utilities

from aspose.threed.utilities import Quaternion

Methods

MethodsMethods
Quaternion()Identitätsquaternion (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Expliziter Komponenten‑Konstruktor

Methods

MethodsMethodsMethods
wfloatSkalar (reeller) Teil
xfloatVektor x‑Komponente
yfloatVektor y‑Komponente
zfloatVektor Z-Komponente
lengthfloatBetrag des Quaternion

Statische Fabrikmethoden

MethodsRückgabetypMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionKonstruiert aus Euler-Winkeln im Bogenmaß (Pitch=X, Yaw=Y, Roll=Z). Akzeptiert außerdem ein Vector3 als erstes Argument
Quaternion.from_angle_axis(angle, axis)QuaternionKonstruiert aus einem Winkel (Bogenmaß) und einem Vector3 Achse
Quaternion.from_rotation(orig, dest)QuaternionKürzeste Bogenrotation von Richtung orig zu Richtung dest
Quaternion.interpolate(t, from_q, to_q)QuaternionSLERP-Interpolation; t in [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAlias für interpolate

Instanzmethoden

MethodsRückgabetypMethods
normalize()QuaternionGibt eine Kopie mit Einheitslänge zurück
conjugate()QuaternionGibt das Konjugierte zurück (w, -x, -y, -z)
inverse()QuaternionGibt das multiplikative Inverse zurück; wirft ValueError wenn die Länge null ist
dot(q)floatSkalarprodukt mit einem anderen Quaternion
concat(rhs)QuaternionHamilton-Produkt (Komposition zweier Rotationen)
euler_angles()Vector3Extrahiert Euler‑Winkel (Bogenmaß) als Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Konvertiert in eine 4×4‑Rotationsmatrix; bettet optional eine Translation ein Vector3
to_angle_axis(angle, axis)NoneZerlegt in Winkel (Bogenmaß) und Achse; Ergebnisse werden in ein‑elementige Listen geschrieben angle[0] und axis[0]

Methods

from aspose.threed import Scene
from aspose.threed.utilities import Quaternion, Vector3
import math

scene = Scene()
node = scene.root_node.create_child_node("rotated_box")

# Rotate 45 degrees around the Y axis
angle = math.radians(45)
q = Quaternion.from_euler_angle(0.0, angle, 0.0)
node.transform.rotation = q

# SLERP between two rotations
q_start = Quaternion.from_euler_angle(0, 0, 0)
q_end   = Quaternion.from_euler_angle(0, math.pi, 0)
q_mid   = Quaternion.slerp(0.5, q_start, q_end)

# Convert to matrix (useful for manual transforms)
mat = q.to_matrix()

# Extract Euler angles back
angles = q.euler_angles()   # Vector3(roll, pitch, yaw)
print(math.degrees(angles.y))   # ~45.0

Siehe auch

 Deutsch