Quaternion

Methods

Quaternion representa un unit quaternion utilitzat per codificar rotacions 3D. A diferència dels angles d’Euler, els quaternions eviten el bloqueig de gimball i interpolen de manera suau. El Transform.rotation propietat en un scene node emmagatzema un Quaternion.

Els components s’emmagatzemen com a (w, x, y, z) on w és la part escalar i (x, y, z) formen la part 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 d’identitat (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Constructor explícit de components

Methods

MethodsMethodsMethods
wfloatPart escalar (real)
xfloatComponent x del vector
yfloatComponent y del vector
zfloatComponent z del vector
lengthfloatMagnitud del quaternió

Mètodes de fàbrica estàtics

MethodsTipus de retornMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionConstrueix a partir d’angles d’Euler en radians (pitch=X, yaw=Y, roll=Z). També accepta un Vector3 com a primer argument
Quaternion.from_angle_axis(angle, axis)QuaternionConstrueix a partir d’un angle (radians) i un Vector3 eix
Quaternion.from_rotation(orig, dest)QuaternionRotació d’arc més curt des de la direcció orig cap a la direcció dest
Quaternion.interpolate(t, from_q, to_q)QuaternionInterpolació SLERP; t a [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionÀlies per a interpolate

Mètodes d’instància

MethodsTipus de retornMethods
normalize()QuaternionRetorna una còpia de longitud unitària
conjugate()QuaternionRetorna el conjugat (w, -x, -y, -z)
inverse()QuaternionRetorna l’invers multiplicatiu; genera ValueError si la longitud és zero
dot(q)floatProducte escalar amb un altre quaternió
concat(rhs)QuaternionProducte de Hamilton (composició de dues rotacions)
euler_angles()Vector3Extreu els angles d’Euler (radians) com a Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Converteix a una matriu de rotació 4×4; opcionalment incrusta una translació Vector3
to_angle_axis(angle, axis)NoneDescompon en angle (radians) i eix; els resultats s’escriuen en llistes d’un sol 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

Vegeu també

 Català