Quaternion

Methods

Quaternion reprezintuoja vienetinio kvaterniono, naudojamo 3D sukimams koduoti. Skirtingai nuo Eulerio kampų, kvaternionai išvengia gimbal lock ir sklandžiai interpoliuoja. The Transform.rotation savybė scenos mazge saugo a Quaternion.

Komponentai saugomi kaip (w, x, y, z) kur w yra skaliarinė dalis ir (x, y, z) sudaro vektorinę dalį.

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()Identiteto kvaternionas (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Aiškus komponentų konstruktorius

Methods

MethodsMethodsMethods
wfloatSkaliarinė (reali) dalis
xfloatVektoriaus x komponentas
yfloatVektoriaus y komponentas
zfloatVektoriaus z komponentas
lengthfloatKvaterniono magnitudė

Statiniai gamykliniai metodai

MethodsGrąžinimo tipasMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionKuria iš Eulerio kampų radianais (pakrypimas=X, pasukimas=Y, sukimas=Z). Taip pat priima a Vector3 kaip pirmą argumentą
Quaternion.from_angle_axis(angle, axis)QuaternionKonstrukcijos iš kampo (radijusų) ir a Vector3 ašis
Quaternion.from_rotation(orig, dest)QuaternionTrumpiausio lankelio sukimas nuo krypties orig į kryptį dest
Quaternion.interpolate(t, from_q, to_q)QuaternionSLERP interpoliacija; t į [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAliasas interpolate

Instanciniai metodai

MethodsGrąžinimo tipasMethods
normalize()QuaternionGrąžina vienetinio ilgio kopiją
conjugate()QuaternionGrąžina konjugatą (w, -x, -y, -z)
inverse()QuaternionGrąžina daugybos inversiją; iškelia ValueError jei ilgis yra nulis
dot(q)floatSkaliarinis sandauga su kitu kvaternionu
concat(rhs)QuaternionHamiltono sandauga (dviejų sukimosi kompozicija)
euler_angles()Vector3Išgauna Eulerio kampus (radijus) kaip Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Konvertuoja į 4×4 sukimosi matricą; neprivalomai įterpia perkėlimą Vector3
to_angle_axis(angle, axis)NoneIšskaido į kampą (radijus) ir ašį; rezultatai įrašomi į vieno elemento sąrašus angle[0] ir 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

Žr. taip pat

 Lietuvių