Матрицы
Типы
- FMatrix2x2…FMatrix4x4 плюс прямоугольные FMatrix2x3, FMatrix3x2, FMatrix3x4, FMatrix4x3.
- DMatrix* для double-точности.
Создание и трансформации
// Прямое заполнение 4x4 (строки подряд)
var m = new FMatrix4x4(
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1);
// Готовые операции меняют матрицу по ссылке
FMatrix4x4.Translate(ref m, new FVector3(0, 1, 0));
FMatrix4x4.RotateY(ref m, MathF.PI * 0.5f);
FMatrix4x4.Scale(ref m, new FVector3(2, 1, 1));
// Умножение на вектор в однородных координатах
var p = new FVector4(1, 0, 0, 1);
var tp = m * p; // FVector4
Детерминант, инверсия, транспонирование
var det = m.Determinant;
var inv = m.Inverse; // матричная инверсия через алгебраические дополнения
var tr = m.Transpose; // перестановка строк/столбцов
Практика
- Статическая
Identityудобна как база для TRS; операцииTranslate/Scale/Rotate*умножают справа. - В
Inverseнет проверки на вырожденность — перед использованием контролируйте детерминант или норму. - Для 2D однородных координат используйте 3x3: меньше памяти и чётче семантика.
© 2026 Igdrasil Project. Все права защищены.