Quaternion

Methods

Quaternion представлява единичен кватернион, използван за кодиране на 3D завъртания. За разлика от ъглите на Юлер, кватернионите избягват блокиране на гимбал и интерполират плавно. Това Transform.rotation свойството на възел от сцената съхранява Quaternion.

Компонентите се съхраняват като (w, x, y, z) където w е скаларната част и (x, y, z) оформят векторната част.

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()Единичен кватернион (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Явно конструктор за компоненти

Methods

MethodsMethodsMethods
wfloatСкалярна (реална) част
xfloatВекторна x-компонента
yfloatВекторна y-компонента
zfloatВекторна z-компонента
lengthfloatМодул на кватерниона

Статични фабрични методи

MethodsТип на връщанеMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionКонструира от ъгли на Юлер в радиани (pitch=X, yaw=Y, roll=Z). Също приема a Vector3 като първи аргумент
Quaternion.from_angle_axis(angle, axis)QuaternionКонструира от ъгъл (радиани) и Vector3 ос
Quaternion.from_rotation(orig, dest)QuaternionНай-кратко-дугово завъртане от посока orig към посока dest
Quaternion.interpolate(t, from_q, to_q)QuaternionSLERP интерполация; t в [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionПсевдоним за interpolate

Методи на екземпляра

MethodsТип на връщанеMethods
normalize()QuaternionВръща копие с единична дължина
conjugate()QuaternionВръща конюгата (w, -x, -y, -z)
inverse()QuaternionВръща мултипликативната обратна стойност; повдига ValueError ако дължината е нула
dot(q)floatСкалярно произведение с друг кватернион
concat(rhs)QuaternionХамилтоново произведение (композиция на две завъртания)
euler_angles()Vector3Извлича ъглите на Юлер (в радиани) като Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Конвертира в 4×4 матрица за завъртане; по избор вгражда транслация Vector3
to_angle_axis(angle, axis)NoneРазлага се на ъгъл (радиани) и ос; резултатите се записват в списъци с един елемент angle[0] и 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

Вижте също

 Български