Matrix4 — Aspose.3D FOSS for Java

Example

Matrix4 е 4x4 матрица с двойна точност, използвана за афинни трансформации в 3D пространство. Тя се връща от Transform.getTransformMatrix() и GlobalTransform.getTransformMatrix(), и може да бъде конструирана от разложения на транслация, ротация и мащаб (TRS).

Example: com.aspose.threed

import com.aspose.threed.*;

Example

ExampleExample
Matrix4()Конструира идентична матрица
Matrix4(double m00, double m01, ... double m33)Конструира от 16 отделни елемента (row-major)

Статични полета

ExampleExampleExample
IDENTITYMatrix44x4 идентична матрица

Публични полета (достъп до елемент)

Matrix4 използва публични полета за достъп до елемент: m00, m01, … m33 (общо 16 полета, подредба по редове).

Шаблон на полетатаExampleExample
m00m33doubleОтделните елементи на матрицата като публични полета. Достъп като mat.m00, mat.m01, и т.н.

Компонентите на транслацията са в последната колона: m03 (X), m13 (Y), m23 (Z).

Example

ExampleТип на връщанеExample
multiply(Matrix4 other)Matrix4Умножение на матрици; връща нова матрица
inverse()Matrix4Връща обратната матрица
transpose()Matrix4Връща транспонираната матрица
decompose(Vector3 translation, Vector3 scaling, Quaternion rotation)booleanШаблон: винаги връща false. Предназначено е да разложи матрицата на TRS компоненти, но все още не е реализирано.
determinant()doubleВръща детерминантата на матрицата
transformPoint(Vector3 point)Vector3Трансформира точка (прилага пълно транслация + ротация + мащаб)
transformDirection(Vector3 direction)Vector3Трансформира вектор на посока (прилага ротация + мащаб, игнорира транслацията)

Статични методи

ExampleТип на връщанеExample
Matrix4.translate(Vector3 t)Matrix4Създава транслационна матрица
Matrix4.translate(double x, double y, double z)Matrix4Създава транслационна матрица от компоненти
Matrix4.scale(Vector3 s)Matrix4Създава мащабна матрица
Matrix4.scale(double x, double y, double z)Matrix4Създава мащабна матрица от компоненти
Matrix4.rotateFromQuaternion(Quaternion q)Matrix4Създава ротационна матрица от кватернион

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);

Вижте също

 Български