Quaternion

Methods

Quaternion 3B dönüşümleri kodlamak için kullanılan bir birim kuaterniyonu temsil eder. Euler açılarına kıyasla, kuaterniyonlar gimbal kilidini önler ve sorunsuz bir şekilde ara değer alır. The Transform.rotation bir sahne düğümündeki özellik bir … saklar Quaternion.

Bileşenler şu şekilde saklanır: (w, x, y, z) burada w skaler kısmıdır ve (x, y, z) vektör kısmını oluşturur.

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()Birlik kuaterniyonu (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)Açık bileşen yapıcı

Methods

MethodsMethodsMethods
wfloatSkaler (gerçek) kısım
xfloatVektör x-bileşeni
yfloatVektör y-bileşeni
zfloatVektör z-bileşeni
lengthfloatKuaterniyonun büyüklüğü

Statik Fabrika Yöntemleri

MethodsDönüş TipiMethods
Quaternion.from_euler_angle(pitch, yaw, roll)QuaternionRadyan cinsinden Euler açıları (pitch=X, yaw=Y, roll=Z) ile oluşturur. Ayrıca bir … kabul eder Vector3 ilk argüman olarak
Quaternion.from_angle_axis(angle, axis)QuaternionBir açıdan (radyan) ve bir Vector3 eksen
Quaternion.from_rotation(orig, dest)QuaternionYönünden en kısa yay dönüşü orig yönüne dest
Quaternion.interpolate(t, from_q, to_q)QuaternionSLERP enterpolasyonu; t içinde [0, 1]
Quaternion.slerp(t, v1, v2)QuaternionTakma adı interpolate

Nesne Metotları

MethodsDönüş TipiMethods
normalize()QuaternionBirim uzunluklu bir kopya döndürür
conjugate()QuaternionKonjugatını döndürür (w, -x, -y, -z)
inverse()QuaternionÇarpımsal tersini döndürür; hata fırlatır ValueError eğer uzunluk sıfırsa
dot(q)floatBaşka bir kuaterniyonla nokta çarpımı
concat(rhs)QuaternionHamilton çarpımı (iki dönüşün bileşimi)
euler_angles()Vector3Euler açılarını (radyan) olarak çıkarır Vector3(roll, pitch, yaw)
to_matrix(translation=None)Matrix44×4 dönüşüm matrisine dönüştürür; isteğe bağlı olarak bir öteleme ekler Vector3
to_angle_axis(angle, axis)NoneAçıya (radyan) ve eksene ayırır; sonuçlar tek elemanlı listelere yazılır angle[0] ve 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

Ayrıca Bakınız

 Türkçe