Quaternion — Aspose.3D FOSS for Python API Reference

Enumerations

Quaternion يمثّل unit quaternion يُستخدم لتشفير دورانات ثلاثية الأبعاد. على عكس زوايا أويلر، تتجنّب الكواتيرنيونات قفل الجيمبال وتُجري الاستيفاء بسلاسة. الـ Transform.rotation الخاصية على scene node تخزن Quaternion.

المكوّنات مخزّنة كـ (w, x, y, z) حيث w هو scalar part و (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)

Enumerations: aspose.threed.utilities

from aspose.threed.utilities import Quaternion

Enumerations

EnumerationsEnumerations
Quaternion()الكوaternion الهوية (w=1, x=0, y=0, z=0)
Quaternion(w, x, y, z)منشئ المكوّن الصريح

Enumerations

EnumerationsEnumerationsEnumerations
wfloatالجزء القياسي (الحقيقي)
xfloatمكوّن x للمتجه
yfloatمكوّن y للمتجه
zfloatمكوّن z للمتجه
lengthfloatمقدار الكواتيرنيون

طرق المصنع الثابتة

Enumerationsنوع الإرجاعEnumerations
Quaternion.from_euler_angle(pitch, yaw, roll)Quaternionيبني من زوايا أويلر بالراديان (الارتفاع=X، الانحراف=Y، الالتفاف=Z). كما يقبل a 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

حمّل ملف OBJ واطبع عدد العقد الفرعية في جذر مخطط المشهد.

Enumerationsنوع الإرجاعEnumerations
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يحوّل إلى مصفوفة دوران 4×4؛ يدمج إزاحةً اختياريًا Vector3
to_angle_axis(angle, axis)Noneيفكك إلى زاوية (راديان) ومحور؛ تُكتب النتائج في قوائم ذات عنصر واحد angle[0] و axis[0]

Enumerations

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

انظر أيضًا

 العربية