Quaternion

Methods

Quaternion mewakili quaternion satuan yang digunakan untuk mengkodekan rotasi 3D. Tidak seperti sudut Euler, quaternion menghindari gimbal lock dan melakukan interpolasi secara halus. The Transform.rotation properti pada node scene menyimpan sebuah Quaternion.

Komponen-komponen disimpan sebagai (w, x, y, z) di mana w adalah bagian skalar dan (x, y, z) membentuk bagian vektor.

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 identitas (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Konstruktor komponen eksplisit

Methods

MethodsMethodsMethods
wfloatBagian skalar (nyata)
xfloatKomponen x vektor
yfloatKomponen y vektor
zfloatKomponen z vektor
lengthfloatMagnitudo quaternion

Metode Pabrik Statis

MethodsTipe PengembalianMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionMembuat dari sudut Euler dalam radian (pitch=X, yaw=Y, roll=Z). Juga menerima sebuah Vector3 sebagai argumen pertama
Quaternion.from_angle_axis(angle, axis)QuaternionMembangun dari sudut (radian) dan sebuah Vector3 sumbu
Quaternion.from_rotation(orig, dest)QuaternionRotasi busur terpendek dari arah orig ke arah dest
Quaternion.interpolate(t, from_q, to_q)QuaternionInterpolasi SLERP; t di [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionAlias untuk interpolate

Metode Instansi

MethodsTipe PengembalianMethods
normalize()QuaternionMengembalikan salinan dengan panjang satu unit
conjugate()QuaternionMengembalikan konjugat (w, -x, -y, -z)
inverse()QuaternionMengembalikan invers perkalian; menimbulkan ValueError jika panjangnya nol
dot(q)floatProduk titik dengan quaternion lain
concat(rhs)QuaternionProduk Hamilton (komposisi dua rotasi)
euler_angles()Vector3Mengekstrak sudut Euler (radian) sebagai Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix4Mengonversi ke matriks rotasi 4×4; secara opsional menyisipkan translasi Vector3
to_angle_axis(angle, axis)NoneMendekomposisi menjadi sudut (radian) dan sumbu; hasil ditulis ke dalam daftar satu elemen angle[0] dan 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

Lihat Juga

 Bahasa Indonesia