Quaternion

Methods

Quaternion pārstāv vienības kvaternionu, ko izmanto 3D rotāciju kodēšanai. Atšķirībā no Eilera leņķiem, kvaternioni izvairās no gimbal lock un interpolē gludi. Šis Transform.rotation īpašība ainas mezglā saglabā Quaternion.

komponentes tiek saglabātas kā (w, x, y, z) kur w ir skalārā daļa un (x, y, z) veido vektora daļu.

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()Identitātes kvaternions (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Eksplīcīts komponentu konstruktors

Methods

MethodsMethodsMethods
wfloatSkalārā (reālā) daļa
xfloatVektora x-komponente
yfloatVektora y-komponente
zfloatVektora z-komponente
lengthfloatKvaterniona lielums

Statiskās ražotāja metodes

MethodsAtgriešanas tipsMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionIzveido no Eilera leņķiem radiānos (pitch=X, yaw=Y, roll=Z). Arī pieņem Vector3 kā pirmo argumentu
Quaternion.from_angle_axis(angle, axis)QuaternionKonstrukcijas no leņķa (radiānos) un Vector3 ass
Quaternion.from_rotation(orig, dest)QuaternionĪsākā loka rotācija no virziena orig uz virzienu dest
Quaternion.interpolate(t, from_q, to_q)QuaternionSLERP interpolācija; t iekš [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAizstājvārds priekš interpolate

Instanču metodes

MethodsAtgriešanas tipsMethods
normalize()QuaternionAtgriež vienības garuma kopiju
conjugate()QuaternionAtgriež konjugātu (w, -x, -y, -z)
inverse()QuaternionAtgriež reizināšanas inversu; izsauc ValueError ja garums ir nulle
dot(q)floatPunktu reizinājums ar citu kvaterniona
concat(rhs)QuaternionHamiltona produkts (divu rotāciju kompozīcija)
euler_angles()Vector3Izvelk Eilera leņķus (radiānos) kā Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Pārvērš uz 4×4 rotācijas matricu; pēc izvēles iekļauj translāciju Vector3
to_angle_axis(angle, axis)NoneDekomponē leņķi (radiānos) un asi; rezultāti ierakstīti vienas elementa sarakstos angle[0] un 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

Skatīt arī

 Latviešu