Что означает матрица * вектор в отличие от матрицы * вектор - PullRequest
3 голосов
/ 25 февраля 2009

если я сделаю positionVector*worldMatrix, то позиция трансформируется в мировое пространство. Но что произойдет, если я сделаю это наоборот (worldMatrix*positionVector) с точки зрения трехмерного пространства?

Я заметил, что результат отличается от первого. Я уже погуглил про матрицу, по математике они многое объясняют, но не эту, по крайней мере, я не смог ее найти.

Ответы [ 4 ]

10 голосов
/ 25 февраля 2009

Как уже указывали другие - замена порядка умножения эквивалентна умножению на транспонирование. Как это бывает, матрицы вращения представляют собой особый тип матриц, известный как ортогональные матрицы , что дает вам ряд полезных свойств.

Самое интересное, вероятно, заключается в том, что транспонирование матрицы является ее обратной. Для вашего преобразования мира умножение на обратное равносильно тому, чтобы занять позицию в мировом пространстве и вытянуть ее в локальные координаты объекта, с которым связано преобразование.

В качестве примера рассмотрим прямоугольник, произвольно ориентированный в мире - умножение на обратное преобразование мира может (конечно, полностью зависит от приложения :)) поместить вас в пространство, где он выровнен по оси, и если вы заинтересованы в для столкновений с другими объектами выполнение вычислений в локальном пространстве ящика облегчит это.

8 голосов
/ 25 февраля 2009

В матрице вектор ваш вектор будет интерпретирован как вектор столбца. В матрице vector он будет интерпретирован как вектор строки. 2х2 примера:

/ a b \   / e \   / ae+bf \
|     | * |   | = |       |
\ c d /   \ f /   \ ce+df /

          / a b \
( e f ) * |     | = ( ea+fc eb+fd )
          \ c d /

Как видите, результат другой.

Между прочим, выполнение одного действия аналогично выполнению другого после транспонирования матрицы.

С точки зрения трехмерного пространства, если вы рассматриваете один из двух вариантов как линейное преобразование, я не знаю, есть ли разумная интерпретация для другого. Этот раздел Википедии говорит об этом, но это выходит за рамки моего понимания линейной алгебры.

2 голосов
/ 25 февраля 2009

(матрица * вектор) эквивалентно (вектор * транспонирование (матрица))

1 голос
/ 25 февраля 2009

Матрица математических правил:

Даны матрицы A и B , с размерами MxN и OxP,

  • Матричное произведение A * B определяется только, если N = O.
  • Результатом будет матрица с размером MxP.

Другое важное правило заключается в том, что умножение матриц не является коммутативным. A * B ! = B * A

Обычно в компьютерной графике вектор положения представляет собой матрицу 4x1, а матрица мировоззрения - квадратная, 4x4. Таким образом, следует ожидать, что предварительное умножение матрицы мировоззрения на вектор положения будет неопределенным. Правильный способ применения матрицы мировоззрения к вектору положения находится в другом порядке, предварительно умножив вектор положения на матрицу мировоззрения. (Здесь я говорю математически)

Чтобы получить больше удовольствия от математической математики, ознакомьтесь с этим учебником .

...