Метод матричного умножения в C # - PullRequest
2 голосов
/ 12 января 2010

Я не очень понимаю метод Matrix.Multiply (Matrix m) в C #.

Допустим, у меня есть 2 матрицы. 1 матрица в мировом пространстве и 1 матрица в локальном пространстве, теперь я хочу преобразовать мировое пространство в локальное пространство или из локального пространства в мировое пространство, что мне делать с методом Multiply?

Matrix world = ....

Matrix local = ...

world.Multiply(local) 
// It means world*local or local*world and it will transform world space to 
// local or from local to world space?

Спасибо заранее.

1 Ответ

3 голосов
/ 12 января 2010

Вы не хотите умножать матрицы, если хотите преобразовать одну матрицу в другую. Вы хотите найти матрицу, которую нужно умножить на одно на , чтобы перейти от одного к другому. По сути, вы хотите решить уравнение:

W * X = L

Где W - матрица вашего мира, а L - локальная матрица. Вы ищете матрицу X. Решение для X:

W * X * 1/L = I 

Где I - единичная матрица, а 1/L - обратная L Итак:

X = 1/W * L

Обратите внимание, что матричное умножение не коммутативно, поэтому W * L в целом не то же самое, что L * W.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...