Matrix4

Matrix4 je 4×4 dvostruke preciznosti matrica pohranjena u redosledu po redovima sa 16 elemenata (m00m33). 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 Matrix4

Matrix4()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].

Израчуната својства

determinantfloatSkalarni determinant matrice

Statičke metode fabrike

Tip povratne vrednosti
Matrix4.get_identity()Matrix4Vraća jediničnu matricu
Matrix4.translate(tx, ty, tz)Matrix4Matrica translacije; takođe prihvata Vector3 ili jedan skalar za uniformnu translaciju
Matrix4.scale(sx, sy, sz)Matrix4Matrica skaliranja; takođe prihvata Vector3 ili jedan skalar za uniformno skaliranje
Matrix4.rotate(angle, axis)Matrix4Matrica rotacije iz ugla (radijani) i Vector3 osa; takođe prihvata Quaternion kao jedini argument
Matrix4.rotate_from_euler(rx, ry, rz)Matrix4Rotaciona matrica iz Eulerovih uglova (radijani); takođe prihvata a Vector3

Metode instance

Tip povratka
concatenate(m2)Matrix4Vraća proizvod matrice self × m2
normalize()Matrix4Vraća kopiju sa ponovo ortonormiranim osama rotacije (skala uklonjena iz kolona rotacije)
transpose()Matrix4Vraća transponovanu matricu
inverse()Matrix4Vraća inverz; baca ValueError ako je matrica singularna
decompose(translation, scaling, rotation)NoneRazlaž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)NonePostavlja 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

Vidi takođe

 Српски