Matrix4 — Aspose.3D FOSS for Python API Reference

Example

Matrix4 هو مصفوفة مزدوجة الدقة بحجم 4×4 مخزنة بترتيب الصفوف مع 16 عنصرًا (m00m33). تُستخدم لحسابات التحويل العالمية/المحلية، والإسقاطات المخصصة، وتفكيك تحويلات العقد إلى إزاحة، دوران، ومقياس.

Example: aspose.threed.utilities

from aspose.threed.utilities import Matrix4

Example

ExampleExample
Matrix4()مصفوفة الهوية
Matrix4(m00, m01, ..., m33)منشئ صريح من 16 عنصرًا (ترتيب الصفوف)
Matrix4(values)يبني من قائمة مكوّنة من 16 float قيم

خصائص العنصر

العناصر مسماة mRC حيث R هو الصف (0–3) و C هو العمود (0–3). على سبيل المثال،, m03 هي الصف 0، العمود 3 (الترجمة X عندما يرمّز المصفوفة تحويلًا).m00 إلى m33) قابلة للقراءة والكتابة.

يمكن أيضًا الوصول إلى المصفوفة عبر الفهرس المسطح: mat[0]mat[15].

الخصائص المحسوبة

ExampleExampleExample
determinantfloatالمحدد القياسي للمصفوفة

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

Exampleنوع الإرجاعExample
Matrix4.get_identity()Matrix4يرجع مصفوفة هوية
Matrix4.translate(tx, ty, tz)Matrix4مصفوفة ترجمة؛ تقبل أيضًا Vector3 أو قيمة عددية واحدة للترجمة المتجانسة
Matrix4.scale(sx, sy, sz)Matrix4مصفوفة مقياس؛ تقبل أيضًا Vector3 أو عدد واحد للتدرج المتساوي
Matrix4.rotate(angle, axis)Matrix4مصفوفة الدوران من الزاوية (راديان) و Vector3 المحور؛ يقبل أيضًا a Quaternion كوسيط وحيد
Matrix4.rotate_from_euler(rx, ry, rz)Matrix4مصفوفة الدوران من زوايا أويلر (راديان)؛ تقبل أيضًا a Vector3

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

Exampleنوع الإرجاعExample
concatenate(m2)Matrix4يرجع حاصل ضرب المصفوفة self × m2
normalize()Matrix4يرجع نسخة مع إعادة توحيد محاور الدوران (إزالة التدرج من أعمدة الدوران)
transpose()Matrix4يرجع المصفوفة المحوّلة
inverse()Matrix4يرجع العكس؛ يرفع ValueError إذا كانت المصفوفة مفردة
decompose(translation, scaling, rotation)Noneيفكك إلى مكونات TRS. تُكتب النتائج في قوائم ذات عنصر واحد: translation[0]Vector3, scaling[0]Vector3, rotation[0]Quaternion
set_trs(translation, rotation, scale)Noneيضبط المصفوفة في موضعها من الترجمة Vector3, دوران Quaternion أو Vector3 (Euler)، والقياس Vector3
to_array()list[float]يرجع الـ 16 عنصرًا كقائمة مسطحة

Example

from aspose.threed.utilities import Matrix4, Vector3, Quaternion
import math

# Build a transform: translate (5, 0, 0), rotate 90 deg around Y, scale 2x
t = Matrix4.translate(5.0, 0.0, 0.0)
r = Matrix4.rotate(math.radians(90), Vector3(0, 1, 0))
s = Matrix4.scale(2.0, 2.0, 2.0)

# Combine: scale first, then rotate, then translate
combined = t.concatenate(r.concatenate(s))

# Decompose the result back into TRS
translation = [None]
scaling     = [None]
rotation    = [None]
combined.decompose(translation, scaling, rotation)

print(translation[0])   # Vector3(5.0, 0.0, 0.0)
print(scaling[0])       # Vector3(2.0, 2.0, 2.0)

# Retrieve from a node's global transform
from aspose.threed import Scene
scene = Scene()
node = scene.root_node.create_child_node("box")
node.transform.translation = Vector3(10.0, 0.0, 0.0)
world_mat = node.global_transform.transform_matrix
print(world_mat.m03)   # 10.0 — translation X

انظر أيضًا

 العربية