Quaternion

Methods

Quaternion reprezintă un quaternion unitate utilizat pentru a codifica rotații 3D. Spre deosebire de unghiurile Euler, quaternionii evită blocajul gimbal și interpolează lin. The Transform.rotation proprietatea pe un nod de scenă stochează un Quaternion.

Componentele sunt stocate ca (w, x, y, z) unde w este partea scalară și (x, y, z) formează partea vectorială.

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()Quaternion de identitate (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Constructor explicit de componente

Methods

MethodsMethodsMethods
wfloatPartea scalară (reală)
xfloatComponenta x a vectorului
yfloatComponenta y a vectorului
zfloatComponentă z a vectorului
lengthfloatMagnitudinea cuaternionului

Metode de fabrică statice

MethodsTip de returnareMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionConstruiește din unghiuri Euler în radiani (pitch=X, yaw=Y, roll=Z). De asemenea acceptă un Vector3 ca primul argument
Quaternion.from_angle_axis(angle, axis)QuaternionConstruiește dintr-un unghi (radiani) și un Vector3 axă
Quaternion.from_rotation(orig, dest)QuaternionRotire pe cel mai scurt arc din direcția orig către direcție dest
Quaternion.interpolate(t, from_q, to_q)QuaternionInterpolare SLERP; t în [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAlias pentru interpolate

Metode de instanță

MethodsTip de returnareMethods
normalize()QuaternionReturnează o copie cu lungime unitate
conjugate()QuaternionReturnează conjugatul (w, -x, -y, -z)
inverse()QuaternionReturnează inversul multiplicativ; aruncă ValueError dacă lungimea este zero
dot(q)floatProdus scalar cu un alt cuaternion
concat(rhs)QuaternionProdus Hamilton (compoziția a două rotații)
euler_angles()Vector3Extrage unghiurile Euler (radiani) ca Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Convertește la o matrice de rotație 4×4; opțional încorporează o translație Vector3
to_angle_axis(angle, axis)NoneDescompune în unghi (radiani) și axă; rezultatele sunt scrise în liste cu un singur element angle[0] și 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

Vezi și

 Română