Quaternion

Methods

Quaternion representerer en unit quaternion som brukes til å kode 3D-rotasjoner. I motsetning til Euler‑vinkler unngår kvaternioner gimbal lock og interpolerer jevnt. Den Transform.rotation egenskap på en scene node lagrer en Quaternion.

Komponentene lagres som (w, x, y, z) hvor w er den scalar delen og (x, y, z) utgjør vector-delen.

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()Identity quaternion (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Eksplisitt component-konstruktør

Methods

MethodsMethodsMethods
wfloatScalar (reell) del
xfloatVector x-komponent
yfloatVector y-komponent
zfloatVector z-komponent
lengthfloatMagnitude av quaternionen

Statiske fabrikkmetoder

MethodsReturn TypeMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionKonstruerer fra Euler angles i radianer (pitch=X, yaw=Y, roll=Z). Aksepterer også en Vector3 som første argument
Quaternion.from_angle_axis(angle, axis)QuaternionKonstruksjoner fra en vinkel (radianer) og en Vector3 akse
Quaternion.from_rotation(orig, dest)QuaternionKorteste-bue rotasjon fra retning orig til retning dest
Quaternion.interpolate(t, from_q, to_q)QuaternionSLERP-interpolasjon; t i [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAlias for interpolate

Instansmetoder

MethodsReturtypeMethods
normalize()QuaternionReturnerer en kopi med enhetslengde
conjugate()QuaternionReturnerer konjugatet (w, -x, -y, -z)
inverse()QuaternionReturnerer den multiplikative inversen; kaster ValueError hvis lengden er null
dot(q)floatSkalarprodukt med en annen kvaternion
concat(rhs)QuaternionHamilton-produkt (sammensetning av to rotasjoner)
euler_angles()Vector3Ekstraherer Euler‑vinkler (radianer) som Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Konverterer til en 4×4 rotasjonsmatrise; kan eventuelt innlemme en translasjon Vector3
to_angle_axis(angle, axis)NoneDekomponerer i vinkel (radianer) og akse; resultater skrives til lister med ett element angle[0] og 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

Se også

 Norsk