Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество

Матрицы

Опубликованно: 01.06.2017, 23:39
Последняя редакция, Andry: 02.06.2017 11:57

Смотрите Matrix3f Javadoc и Matrix4f Javadoc

Описание

Матрица обычно используется как линейное преобразование для преобразования векторов в векторы. То есть: Y = MX, где X — вектор, а M — матрица, выполняющая какое либо преобразование(масштабирование, поворот, трансляция).

Существует несколько специальных матриц:

Нулевая матрица — это матрица со всеми нулевыми элементами.

 0 0 0
 0 0 0
 0 0 0

Единичная Матрица — это матрица с 1 на диагонали и 0 для всех остальных элементов.

 1 0 0
 0 1 0
 0 0 1

Матрица является обратимой, если существует матрица M-1, где MM-1 = M-1M = I.

Транспонирование матрицы M = [mij] равна MT = [mji]. Оно приводит к тому, что строки M становятся столбцами в MT.

 1 1 1 1 2 3
 2 2 2 1 2 3
 3 3 3 1 2 3

Матрица симметрична, если M = MT. То есть элементы симметричны относительно главной диагонали.

 X A B
 A X C
 B C X

JME включает в себя два типа матричных классов: Matrix3f и Matrix4f. Matrix3f является матрицей 3×3 и является наиболее часто используемым (способным обрабатывать масштабирование и вращение), в то время как Matrix4f является матрицей 4×4, которая также может обрабатывать перемещение.

Преобразования

Умножение на матрицу вектора позволяет осуществить преобразование вектора. Также вращение, масштабирование или перемещение этого вектора.

Масштабирование(Scaling)

Если диагональная Матрица, определенная D = [dij] и dij = 0 для i! = j, имеет все положительные элементы, то она является масштабируемой матрицей. Если di больше 1, тогда результирующий вектор будет расти, а если di меньше 1, он уменьшится.

Вращение(Rotation)

Для матрицы поворота требуется, чтобы транспонированная и инверсия матрицы были одной и той же матрицей (R-1 = RT). Затем матрицу вращения R можно вычислить как: R = I + (sin(angle))S + (1 — cos(angle))S2, где S:

 0 u2 -u1
 -u2 0 u0
 u1 -u0 0

Перемещение(Translation)

Для перемещения требуется матрица 4×4, где вектор (x, y, z) сопоставляется с (x, y, z, 1) для умножения. Матрица перемещения затем определяется как:

 M T
 ST 1

Где M — матрица 3×3 (содержащая любую информацию о ротации/масштабе), T — вектор перемещения, а ST — транспонированный вектор T. 1 — это просто константа.

jME класс

Оба Matrix3f и Matrix4f сохраняют свои значения в виде чисел типа float и являются общедоступными как (m00, m01, m02, …, mNN), где N равно 2 или 3.

Большинство методов являются прямыми, и я оставлю документацию в Javadoc.


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

Содержание

jMonkeyEngine.ru © 2017. Все права сохранены.