Quaternion

Methods

Quaternion نمایانگر یک کوآترن واحد است که برای رمزگذاری چرخش‌های سه‌بعدی استفاده می‌شود. برخلاف زوایای اویلر، کوآترن‌ها از قفل گیمبال جلوگیری می‌کنند و به‌صورت صاف درون‌خطی می‌شوند. The 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اندازهٔ quaternion

متدهای کارخانه‌ای ایستا

Methodsنوع بازگشتMethods
Quaternion.from_euler_angle(pitch, yaw, roll)Quaternionاز زاویه‌های اویلر به رادیان (pitch=X, yaw=Y, roll=Z) ساخته می‌شود. همچنین یک Vector3 به عنوان آرگومان اول
Quaternion.from_angle_axis(angle, axis)Quaternionاز یک زاویه (رادیان) و یک Vector3 محور
Quaternion.from_rotation(orig, dest)Quaternionچرخش کوتاه‌ترین قوس از جهت orig به جهت dest
Quaternion.interpolate(t, from_q, to_q)Quaternionدرون‌یابی SLERP؛; 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به یک ماتریس چرخش ۴×۴ تبدیل می‌کند؛ به‌صورت اختیاری یک انتقال را درون‌گذاری می‌کند 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

موارد مرتبط

 فارسی