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 отдельных элементов (по строкам)

Статические поля

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

См. также

 Русский