Matrix4
Matrix4 je 4×4 dvostruke preciznosti matrica pohranjena u redosledu po redovima sa 16 elemenata (m00–m33). Koristi se za izračunavanja transformacija sveta/lokalnih, prilagođene projekcije i dekompoziciju transformacija čvora u translaciju, rotaciju i skaliranje.
: aspose.threed.utilities
from aspose.threed.utilities import Matrix4Matrix4() | Jedinična matrica |
Matrix4(m00, m01, ..., m33) | Eksplicitni konstruktor sa 16 elemenata (redosled po redovima) |
Matrix4(values) | Konstruiše se iz liste od 16 float vrednosti |
Својства елемената
Elementi su imenovani mRC gde R je red (0–3) i C je kolona (0–3). Na primer, m03 je red 0, kolona 3 (X translacija kada matrica kodira transformaciju). Sva 16 svojstava (m00 do m33).
Matrica se takođe može pristupiti preko ravnog indeksa: mat[0]–mat[15].
Израчуната својства
determinant | float | Skalarni determinant matrice |
Statičke metode fabrike
| Tip povratne vrednosti | ||
|---|---|---|
Matrix4.get_identity() | Matrix4 | Vraća jediničnu matricu |
Matrix4.translate(tx, ty, tz) | Matrix4 | Matrica translacije; takođe prihvata Vector3 ili jedan skalar za uniformnu translaciju |
Matrix4.scale(sx, sy, sz) | Matrix4 | Matrica skaliranja; takođe prihvata Vector3 ili jedan skalar za uniformno skaliranje |
Matrix4.rotate(angle, axis) | Matrix4 | Matrica rotacije iz ugla (radijani) i Vector3 osa; takođe prihvata Quaternion kao jedini argument |
Matrix4.rotate_from_euler(rx, ry, rz) | Matrix4 | Rotaciona matrica iz Eulerovih uglova (radijani); takođe prihvata a Vector3 |
Metode instance
| Tip povratka | ||
|---|---|---|
concatenate(m2) | Matrix4 | Vraća proizvod matrice self × m2 |
normalize() | Matrix4 | Vraća kopiju sa ponovo ortonormiranim osama rotacije (skala uklonjena iz kolona rotacije) |
transpose() | Matrix4 | Vraća transponovanu matricu |
inverse() | Matrix4 | Vraća inverz; baca ValueError ako je matrica singularna |
decompose(translation, scaling, rotation) | None | Razlaže na TRS komponente. Rezultati se upisuju u liste sa jednim elementom: translation[0] → Vector3, scaling[0] → Vector3, rotation[0] → Quaternion |
set_trs(translation, rotation, scale) | None | Postavlja matricu na licu mesta iz translacije Vector3, rotacija Quaternion ili Vector3 (Euler), i skaliranje Vector3 |
to_array() | list[float] | Vraća 16 elemenata kao ravnu listu |
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