Почему System.Numerics Matrix4x4 использует транспонированную запись?C#

Место общения программистов C#
Anonymous
Почему System.Numerics Matrix4x4 использует транспонированную запись?

Сообщение Anonymous »

Традиционно матрица преобразования обозначается следующим образом:

Код: Выделить всё

R1 R2 R3 T1
R4 R5 R6 T2
R7 R8 R9 T3
0  0  0  1
Класс C# System.Numerics.Matrix4x4, похоже, вместо этого использует это соглашение:
Структура Matrix4x4

Код: Выделить всё

R1 R4 R7 0
R2 R5 R8 0
R3 R6 R9 0
T1 T2 T3 1
Это именно транспонировано. Это означает, что умножения необходимо соответствующим образом скорректировать:
M1 * M2 необходимо изменить на M2_transpose * M1_transpose
Есть ли для этого какая-то причина? Я никогда не видел, чтобы эта транспонированная запись использовалась где-либо.

Подробнее здесь: https://stackoverflow.com/questions/715 ... d-notation

Вернуться в «C#»