Matrix4 — Aspose.3D FOSS for Java

Example

Matrix4 je 4x4 matice s dvojitou přesností používaná pro afinní transformace ve 3D prostoru. Vrací ji Transform.getTransformMatrix() a GlobalTransform.getTransformMatrix(), a může být vytvořena z rozkladů translace, rotace a měřítka (TRS).

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Matrix4()Vytvoří jednotkovou matici
Matrix4(double m00, double m01, ... double m33)Vytvoří z 16 jednotlivých prvků (řádkově orientovaná)

Statické pole

ExampleExampleExample
IDENTITYMatrix44x4 jednotková matice

Veřejná pole (přístup k prvkům)

Matrix4 používá veřejná pole pro přístup k prvkům: m00, m01, … m33 (celkem 16 polí, řádkové uspořádání).

Vzor poleExampleExample
m00m33doubleJednotlivé prvky matice jako veřejná pole. Přístup jako mat.m00, mat.m01, atd.

Komponenty translace jsou v posledním sloupci: m03 (X), m13 (Y), m23 (Z).

Example

ExampleNávratový typExample
multiply(Matrix4 other)Matrix4Násobení matic; vrací novou matici
inverse()Matrix4Vrací inverzní matici
transpose()Matrix4Vrací transponovanou matici
decompose(Vector3 translation, Vector3 scaling, Quaternion rotation)booleanZástupný kód: vždy vrací false. Účelem je rozložit matici na komponenty TRS, ale zatím není implementováno.
determinant()doubleVrací determinant matice
transformPoint(Vector3 point)Vector3Transformuje bod (aplikuje úplný posun + rotaci + měřítko)
transformDirection(Vector3 direction)Vector3Transformuje směrový vektor (aplikuje rotaci + měřítko, ignoruje posun)

Statické metody

ExampleNávratový typExample
Matrix4.translate(Vector3 t)Matrix4Vytvoří matici posunu
Matrix4.translate(double x, double y, double z)Matrix4Vytvoří matici posunu ze složek
Matrix4.scale(Vector3 s)Matrix4Vytvoří matici měřítka
Matrix4.scale(double x, double y, double z)Matrix4Vytvoří škálovací matici ze součástí
Matrix4.rotateFromQuaternion(Quaternion q)Matrix4Vytvoří rotační matici z kvaternionu

Example

import com.aspose.threed.*;

Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("box");
node.getTransform().setTranslation(1.0, 2.0, 3.0);
node.getTransform().setEulerAngles(0.0, 45.0, 0.0);

// Read the transform matrix
Matrix4 m = node.getTransform().getTransformMatrix();
System.out.println("Translation X: " + m.m03);   // 1.0

// Matrix multiplication
Matrix4 translate = Matrix4.translate(5.0, 0.0, 0.0);
Matrix4 scale = Matrix4.scale(2.0, 2.0, 2.0);
Matrix4 combined = translate.multiply(scale);

// Inverse
Matrix4 inv = m.inverse();

// Transform a point
Vector3 point = new Vector3(1.0, 0.0, 0.0);
Vector3 transformed = m.transformPoint(point);
System.out.println(transformed);

Viz také

 Čeština