Quaternion

Methods

Quaternion rappresenta un quaternion unitario usato per codificare rotazioni 3D. A differenza degli angoli di Eulero, i quaternion evitano il gimbal lock e interpolano in modo fluido. Il Transform.rotation proprietà su un nodo della scena memorizza un Quaternion.

I componenti sono memorizzati come (w, x, y, z) dove w è la parte scalare e (x, y, z) formano la parte vettoriale.

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 di identità (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Costruttore esplicito di componenti

Methods

MethodsMethodsMethods
wfloatParte scalare (reale)
xfloatComponente x del vettore
yfloatComponente y del vettore
zfloatComponente z del vettore
lengthfloatMagnitudine del quaternion

Metodi di fabbrica statici

MethodsTipo di ritornoMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionCostruisce da angoli di Eulero in radianti (pitch=X, yaw=Y, roll=Z). Accetta anche un Vector3 come primo argomento
Quaternion.from_angle_axis(angle, axis)QuaternionCostruisce da un angolo (radianti) e un Vector3 asse
Quaternion.from_rotation(orig, dest)QuaternionRotazione ad arco più breve da direzione orig a direzione dest
Quaternion.interpolate(t, from_q, to_q)QuaternionInterpolazione SLERP; t in [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAlias per interpolate

Metodi di istanza

MethodsTipo di ritornoMethods
normalize()QuaternionRestituisce una copia di lunghezza unitaria
conjugate()QuaternionRestituisce il coniugato (w, -x, -y, -z)
inverse()QuaternionRestituisce l’inverso moltiplicativo; solleva ValueError se la lunghezza è zero
dot(q)floatProdotto scalare con un altro quaternione
concat(rhs)QuaternionProdotto di Hamilton (composizione di due rotazioni)
euler_angles()Vector3Estrae gli angoli di Eulero (radianti) come Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Converte in una matrice di rotazione 4×4; opzionalmente incorpora una traslazione Vector3
to_angle_axis(angle, axis)NoneDecompone in angolo (radianti) e asse; i risultati sono scritti in liste a singolo elemento angle[0] e 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

Vedi anche

 Italiano