Тип матрицы
Матрица — это тип данных, содержащий от одного до шестнадцати скалярных компонентов в двухмерной сетке. Каждый компонент матрицы должен иметь одинаковый тип.
Объявление типа
Можно объявить матричные переменные с помощью скалярного типа имени содержимого матрицы с числом строк и столбцов, которые он содержит:
TypeRowsCols Name
Где Type
является скалярным типом каждого компонента, Rows
является константным целочисленным выражением от 1 до 4 включительно, указывающее количество строк, Cols
является константным целочисленным выражением от 1 до 4 включительно, указывающее количество столбцов и Name
является строкой ASCII, которая однозначно идентифицирует имя переменной.
Примеры:
int1x1 iMatrix; // integer matrix with 1 row, 1 column, 1 single component
int4x1 iMatrix; // integer matrix with 4 rows, 1 column, 4 total components
int1x4 iMatrix; // integer matrix with 1 row, 4 columns, 4 total components
double3x3 dMatrix; // double matrix with 3 rows, 3 columns, 9 total components
float3x2 fMatrix = { 0.0f, 0.1f, // row 1
2.1f, 2.2f, // row 2
4.1f, 4.2f // row 3
};
Объявление в стиле шаблона
Альтернативный синтаксис объявления использует аргументы matrix
ключевого слова и шаблона для указания скалярного типа, количества строк и количества столбцов:
matrix <Type=float, Rows=4, Cols=4> Name
Где Type
является скалярным типом каждого компонента, Rows
представляет собой целое число от 1 до 4 включительно, указывающее количество строк, Cols
— целое число от 1 до 4 включительно, указывающее количество столбцов, но они указываются в угловых скобках в стиле шаблона.
Name
— это строка ASCII, которая однозначно идентифицирует имя переменной.
Обратите внимание, что параметр шаблона по умолчанию позволяет указывать 4-столбцовые матрики заданного типа и количества строк, оставляя последний параметр, матрицу 4x4 заданного типа, оставляя последние два параметра шаблона или 4x4 с плавающей матрицей, оставляя все три.
Примеры:
matrix <int, 1, 1> iMatrix = { 1 };
matrix <float, 2, 3> fMatrix = { 0.0f, 0.1f, 0.2f, // row 1
2.1f, 2.2f, 2.3f // row 2
};
matrix<int16_t, 1> sMatrix = { 1, 2, 3, 4 }; // Defaults to 1x4 int16 matrix
matrix<float16_t> hMatrix = { 0.0f, 0.1f, 0.2f, 0.3f, // Defaults to 4x4 float16 matrix
1.0f, 1.1f, 1.2f, 1.3f,
2.0f, 2.1f, 2.2f, 2.3f,
3.0f, 3.1f, 3.2f, 3.3f };
matrix fMatrix = { 0.0f, 0.1f, 0.2f, 0.3f, // Defaults to 4x4 float matrix
1.0f, 1.1f, 1.2f, 1.3f,
2.0f, 2.1f, 2.2f, 2.3f,
3.0f, 3.1f, 3.2f, 3.3f };
См. также
типов данных (DirectX HLSL)