Quaternion

Methods

Quaternion representa um quaternion unitário usado para codificar rotações 3D. Ao contrário dos ângulos de Euler, os quaternions evitam o bloqueio de cardan e interpolam suavemente. O Transform.rotation propriedade em um nó de cena armazena um Quaternion.

Os componentes são armazenados como (w, x, y, z) onde w é a parte escalar e (x, y, z) formam a parte vetorial.

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 identidade (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Construtor explícito de componentes

Methods

MethodsMethodsMethods
wfloatParte escalar (real)
xfloatComponente x do vetor
yfloatComponente y do vetor
zfloatComponente z do vetor
lengthfloatMagnitude do quaternion

Métodos de Fábrica Estáticos

MethodsTipo de retornoMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionConstrói a partir de ângulos de Euler em radianos (pitch=X, yaw=Y, roll=Z). Também aceita um Vector3 como o primeiro argumento
Quaternion.from_angle_axis(angle, axis)QuaternionConstrói a partir de um ângulo (radianos) e um Vector3 eixo
Quaternion.from_rotation(orig, dest)QuaternionRotação de arco mais curto a partir da direção orig para a direção dest
Quaternion.interpolate(t, from_q, to_q)QuaternionInterpolação SLERP; t em [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAlias para interpolate

Métodos de Instância

MethodsTipo de RetornoMethods
normalize()QuaternionRetorna uma cópia de comprimento unitário
conjugate()QuaternionRetorna o conjugado (w, -x, -y, -z)
inverse()QuaternionRetorna o inverso multiplicativo; levanta ValueError se o comprimento for zero
dot(q)floatProduto escalar com outro quaternion
concat(rhs)QuaternionProduto de Hamilton (composição de duas rotações)
euler_angles()Vector3Extrai ângulos de Euler (radianos) como Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Converte para uma matriz de rotação 4×4; opcionalmente incorpora uma translação Vector3
to_angle_axis(angle, axis)NoneDecompõe em ângulo (radianos) e eixo; resultados escritos em listas de um único 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

Veja Também

 Português