Обзор
Эти функции позволяют манипулировать квадратными матрицами ранга 2x2, 3x3 и 4x4. Они особенно полезны для графических преобразований и совместимы с OpenGL.
Мы используем индекс, начинающийся с нуля, для строк и столбцов. Например, последний элемент rs_matrix4x4 находится в позиции (3, 3).
RenderScript использует матрицы со столбцами и векторы на основе столбцов. Преобразование вектора выполняется путем последующего умножения вектора, например (matrix * vector)
, как это предусмотрено rsMatrixMultiply ().
Чтобы создать матрицу преобразования, которая выполняет два преобразования одновременно, умножьте две исходные матрицы, при этом первое преобразование будет правым аргументом. Например, чтобы создать матрицу преобразования, которая применяет преобразование s1, за которым следует s2, вызовите rsMatrixLoadMultiply(&combined, &s2, &s1)
. Это происходит от s2 * (s1 * v)
, что равно (s2 * s1) * v
.
У нас есть два стиля функций для создания матриц преобразования: rsMatrixLoad Transformation и rsMatrix Transformation . Первый стиль просто сохраняет матрицу преобразования в первом аргументе. Последний изменяет уже существующую матрицу преобразования, так что новое преобразование происходит первым. Например, если вы вызываете rsMatrixTranslate () для матрицы, которая уже выполняет масштабирование, результирующая матрица при применении к вектору сначала выполнит перевод, а затем масштабирование.
Краткое содержание
Функции | |
---|---|
rsExtractFrustumPlanes | Вычисление усеченных плоскостей |
rsIsSphereInFrustum | Проверяет, находится ли сфера в пределах усеченных плоскостей. |
rsMatrixGet | Получить один элемент |
rsMatrixInverse | Инвертирует матрицу на месте |
rsMatrixInverseTranspose | Инвертирует и транспонирует матрицу на месте |
rsMatrixLoad | Загрузите или скопируйте матрицу |
rsMatrixLoadFrustum | Загрузите матрицу проекции усеченной пирамиды |
rsMatrixLoadIdentity | Загрузить идентификационную матрицу |
rsMatrixLoadMultiply | Умножить две матрицы |
rsMatrixLoadOrtho | Загрузите матрицу ортогональной проекции |
rsMatrixLoadPerspective | Загрузите матрицу перспективной проекции |
rsMatrixLoadRotate | Загрузите матрицу вращения |
rsMatrixLoadScale | Загрузите матрицу масштабирования |
rsMatrixLoadTranslate | Загрузить матрицу перевода |
rsMatrixMultiply | Умножить матрицу на вектор или другую матрицу |
rsMatrixRotate | Применение поворота к матрице преобразования |
rsMatrixScale | Примените масштабирование к матрице преобразования |
rsMatrixSet | Установить один элемент |
rsMatrixПеревести | Применить перевод к матрице преобразования |
rsMatrixTranspose | Транспонировать место матрицы |
Функции
rsExtractFrustumPlanes : Вычисление усеченных плоскостей.
void rsExtractFrustumPlanes(const rs_matrix4x4 * viewProj, float4 * слева, float4 * справа, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); | Добавлено на уровне API 24. |
void rsExtractFrustumPlanes(const rs_matrix4x4 * viewProj, float4 * слева, float4 * справа, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); | Удален из API уровня 24 и выше. |
Параметры
просмотрПродж | Матрица для извлечения самолетов. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом самолет. |
далеко | Дальний самолет. |
да |
Вычисляет 6 плоскостей усеченного конуса из матрицы проекции вида.
rsIsSphereInFrustum : проверяет, находится ли сфера в пределах усеченных плоскостей.
bool rsIsSphereInFrustum( float4 * сфера, float4 * влево, float4 * вправо, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); |
Параметры
сфера | float4, представляющий сферу. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом самолет. |
далеко | Дальний самолет. |
Возвращает true, если сфера находится в пределах шести плоскостей усеченного конуса.
rsMatrixGet : получить один элемент
float rsMatrixGet(const rs_matrix2x2 * m, uint32_t col, uint32_t row); | |
float rsMatrixGet(const rs_matrix3x3 * m, uint32_t col, uint32_t row); | |
float rsMatrixGet(const rs_matrix4x4 * m, uint32_t col, uint32_t row); |
Параметры
м | Матрица, из которой извлекается элемент. |
---|---|
столбец | Столбец извлекаемого элемента, отсчитываемый от нуля. |
ряд | Строка извлекаемого элемента, отсчитываемая от нуля. |
Возвращает один элемент матрицы.
Внимание: порядок параметров столбца и строки может быть неожиданным.
rsMatrixInverse : инвертирует матрицу на месте.
bool rsMatrixInverse( rs_matrix4x4 * m); |
Параметры
м | Матрица для инвертирования. |
---|
Возвращает true, если матрица была успешно инвертирована.
rsMatrixInverseTranspose : инвертирует и транспонирует матрицу на месте.
bool rsMatrixInverseTranspose( rs_matrix4x4 * m); |
Параметры
м | Матрица для изменения. |
---|
Матрица сначала инвертируется, а затем транспонируется. Возвращает true, если матрица была успешно инвертирована.
rsMatrixLoad : загрузить или скопировать матрицу.
void rsMatrixLoad( rs_matrix2x2 * назначение, массив const float*); | |
void rsMatrixLoad( rs_matrix2x2 * назначение, const rs_matrix2x2 * источник); | |
void rsMatrixLoad( rs_matrix3x3 * назначение, массив const float*); | |
void rsMatrixLoad( rs_matrix3x3 * назначение, const rs_matrix3x3 * источник); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, массив const float*); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, const rs_matrix2x2 * источник); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, const rs_matrix3x3 * источник); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, const rs_matrix4x4 * источник); |
Параметры
место назначения | Матрица для установки. |
---|---|
множество | Массив значений для установки матрицы. Эти массивы должны иметь длину 4, 9 или 16 чисел с плавающей запятой, в зависимости от размера матрицы. |
источник | Исходная матрица. |
Установите элементы матрицы из массива чисел с плавающей запятой или из другой матрицы.
При загрузке из массива числа с плавающей запятой должны располагаться в порядке строк, т. е. первым должен быть элемент в row 0, column 0
, за которым следует элемент в row 0, column 1
и т. д.
Если загрузка из матрицы и источник меньше места назначения, остальная часть места назначения заполняется элементами единичной матрицы. Например, загрузка rs_matrix2x2 в rs_matrix4x4 даст:
м00 | м01 | 0,0 | 0,0 |
м10 | м11 | 0,0 | 0,0 |
0,0 | 0,0 | 1.0 | 0,0 |
0,0 | 0,0 | 0,0 | 1.0 |
rsMatrixLoadFrustum : Загрузите матрицу усеченной проекции.
void rsMatrixLoadFrustum( rs_matrix4x4 * m, плавать влево, плавать вправо, плавать внизу, плавать вверху, плавать рядом, плавать далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Создает матрицу усеченной проекции, преобразуя прямоугольник, определяемый шестью плоскостями отсечения left, right, bottom, top, near, far
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixLoadIdentity : Загрузить идентификационную матрицу.
void rsMatrixLoadIdentity( rs_matrix2x2 * m); | |
void rsMatrixLoadIdentity( rs_matrix3x3 * m); | |
void rsMatrixLoadIdentity( rs_matrix4x4 * m); |
Параметры
м | Матрица для установки. |
---|
Установите элементы матрицы в единичную матрицу.
rsMatrixLoadMultiply : умножает две матрицы.
void rsMatrixLoadMultiply( rs_matrix2x2 * m, const rs_matrix2x2 * lhs, const rs_matrix2x2 * rhs); | |
void rsMatrixLoadMultiply( rs_matrix3x3 * m, const rs_matrix3x3 * lhs, const rs_matrix3x3 * rhs); | |
void rsMatrixLoadMultiply( rs_matrix4x4 * m, const rs_matrix4x4 * lhs, const rs_matrix4x4 * rhs); |
Параметры
м | Матрица для установки. |
---|---|
левая сторона | Левая матрица продукта. |
правый риск | Правая матрица произведения. |
Устанавливает m в матричное произведение lhs * rhs
.
Чтобы объединить две матрицы преобразования 4x4, умножьте вторую матрицу преобразования на первую матрицу преобразования. Например, чтобы создать матрицу преобразования, которая применяет преобразование s1, за которым следует s2, вызовите rsMatrixLoadMultiply(&combined, &s2, &s1)
.
Предупреждение. До версии 21 сохранение результата обратно в правую матрицу не поддерживается и приведет к неопределенному поведению. Вместо этого используйте rsMatrixMulitply. Например, вместо rsMatrixLoadMultiply (&m2r, &m2r, &m2l) используйте rsMatrixMultiply (&m2r, &m2l). rsMatrixLoadMultiply (&m2l, &m2r, &m2l) работает как положено.
rsMatrixLoadOrtho : Загрузите матрицу ортогональной проекции.
void rsMatrixLoadOrtho( rs_matrix4x4 * m, плавать влево, плавать вправо, плавать внизу, плавать вверху, плавать рядом, плавать далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Создает матрицу ортогональной проекции, преобразуя прямоугольник, идентифицируемый шестью плоскостями отсечения left, right, bottom, top, near, far
в единичный куб с углом в (-1, -1, -1)
и противоположным в (1, 1, 1)
. (1, 1, 1)
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
См. https://en.wikipedia.org/wiki/Orthographic_projection.
rsMatrixLoadPerspective : Загрузите матрицу перспективной проекции.
void rsMatrixLoadPerspective( rs_matrix4x4 * m, float fovy, плавающий аспект, плавающий рядом, плавающий далеко); |
Параметры
м | Матрица для установки. |
---|---|
фови | Поле зрения в градусах по оси Y. |
аспект | Отношение х/у. |
около | Рядом с плоскостью отсечения. |
далеко | Дальняя отсекающая плоскость. |
Создает матрицу перспективной проекции, предполагая симметричное поле зрения.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixLoadRotate : загрузить матрицу вращения.
void rsMatrixLoadRotate( rs_matrix4x4 * m, float rot, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
гнить | Сколько поворотов нужно сделать, в градусах. |
х | X-компонент вектора, который является осью вращения. |
й | Компонент Y вектора, который является осью вращения. |
я | Z-компонент вектора, который является осью вращения. |
Эта функция создает матрицу вращения. Ось вращения представляет собой вектор (x, y, z)
.
Чтобы повернуть вектор, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
См. https://en.wikipedia.org/wiki/Rotation_matrix.
rsMatrixLoadScale : загрузить матрицу масштабирования.
void rsMatrixLoadScale( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Множественное для масштабирования компонентов x. |
й | Множественный для масштабирования компонентов y. |
я | Множественное для масштабирования компонентов z. |
Эта функция создает матрицу масштабирования, в которой каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы масштабировать вектор, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixLoadTranslate : загрузить матрицу перевода.
void rsMatrixLoadTranslate( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Число, добавляемое к каждому компоненту x. |
й | Число, добавляемое к каждому компоненту y. |
я | Число, добавляемое к каждому компоненту z. |
Эта функция создает матрицу перевода, в которой к каждому элементу вектора добавляется число.
Чтобы перевести вектор, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixMultiply : умножить матрицу на вектор или другую матрицу.
float2 rsMatrixMultiply(const rs_matrix2x2 * m, float2 in); | Добавлено на уровне API 14. |
float2 rsMatrixMultiply( rs_matrix2x2 * m, float2 in); | Удален из API уровня 14 и выше. |
float3 rsMatrixMultiply(const rs_matrix3x3 * m, float2 in); | Добавлено на уровне API 14. |
float3 rsMatrixMultiply(const rs_matrix3x3 * m, float3 in); | Добавлено на уровне API 14. |
float3 rsMatrixMultiply( rs_matrix3x3 * m, float2 in); | Удален из API уровня 14 и выше. |
float3 rsMatrixMultiply( rs_matrix3x3 * m, float3 in); | Удален из API уровня 14 и выше. |
float4 rsMatrixMultiply(const rs_matrix4x4 * m, float2 in); | Добавлено на уровне API 14. |
float4 rsMatrixMultiply(const rs_matrix4x4 * m, float3 in); | Добавлено на уровне API 14. |
float4 rsMatrixMultiply(const rs_matrix4x4 * m, float4 in); | Добавлено на уровне API 14. |
float4 rsMatrixMultiply( rs_matrix4x4 * m, float2 in); | Удален из API уровня 14 и выше. |
float4 rsMatrixMultiply( rs_matrix4x4 * m, float3 in); | Удален из API уровня 14 и выше. |
float4 rsMatrixMultiply( rs_matrix4x4 * m, float4 in); | Удален из API уровня 14 и выше. |
void rsMatrixMultiply( rs_matrix2x2 * m, const rs_matrix2x2 * rhs); | |
void rsMatrixMultiply( rs_matrix3x3 * m, const rs_matrix3x3 * rhs); | |
void rsMatrixMultiply( rs_matrix4x4 * m, const rs_matrix4x4 * rhs); |
Параметры
м | Левая матрица продукта и матрица, которую нужно установить. |
---|---|
правый риск | Правая матрица произведения. |
в |
Для варианта «матрица по матрице» устанавливает m в матричное произведение m * rhs
.
При объединении двух матриц преобразования 4x4 с использованием этой функции результирующая матрица будет соответствовать выполнению сначала преобразования правой руки, за которым следует исходное преобразование m.
Для варианта «матрица на вектор» возвращает результат после умножения вектора на матрицу, т.е. m * in
.
При умножении float3 на rs_matrix4x4 вектор расширяется с помощью (1).
При умножении float2 на rs_matrix4x4 вектор расширяется до (0, 1).
При умножении float2 на rs_matrix3x3 вектор расширяется с помощью (0).
Начиная с API 14, эта функция принимает константную матрицу в качестве первого аргумента.
rsMatrixRotate : применить поворот к матрице преобразования.
void rsMatrixRotate( rs_matrix4x4 * m, float rot, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
гнить | Сколько поворотов нужно сделать, в градусах. |
х | X-компонент вектора, который является осью вращения. |
й | Компонент Y вектора, который является осью вращения. |
я | Z-компонент вектора, который является осью вращения. |
Умножьте матрицу m на матрицу вращения.
Эта функция изменяет матрицу преобразования, чтобы сначала выполнить вращение. Ось вращения представляет собой вектор (x, y, z)
.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixScale : применить масштабирование к матрице преобразования.
void rsMatrixScale( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Множественное для масштабирования компонентов x. |
й | Множественный для масштабирования компонентов y. |
я | Множественное для масштабирования компонентов z. |
Умножьте матрицу m на матрицу масштабирования.
Эта функция изменяет матрицу преобразования, чтобы сначала выполнить масштабирование. При масштабировании каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixSet : установить один элемент
void rsMatrixSet( rs_matrix2x2 * m, uint32_t col, uint32_t row, float v); | |
void rsMatrixSet( rs_matrix3x3 * m, uint32_t col, uint32_t row, float v); | |
void rsMatrixSet( rs_matrix4x4 * m, uint32_t col, uint32_t row, float v); |
Параметры
м | Матрица, которая будет изменена. |
---|---|
столбец | Столбец устанавливаемого элемента, отсчитываемый от нуля. |
ряд | Строка элемента, начинающегося с нуля, для установки. |
в | Значение для установки. |
Установите элемент матрицы.
Внимание: порядок параметров столбца и строки может быть неожиданным.
rsMatrixTranslate : применить перевод к матрице преобразования.
void rsMatrixTranslate( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Число, добавляемое к каждому компоненту x. |
й | Число, добавляемое к каждому компоненту y. |
я | Число, добавляемое к каждому компоненту z. |
Умножьте матрицу m на матрицу перевода.
Эта функция изменяет матрицу преобразования, чтобы сначала выполнить перевод. При переводе к каждому компоненту вектора добавляется число.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixTranspose : Транспонировать место матрицы.
void rsMatrixTranspose( rs_matrix2x2 * m); | |
void rsMatrixTranspose( rs_matrix3x3 * m); | |
void rsMatrixTranspose( rs_matrix4x4 * m); |
Параметры
м | Матрица для транспонирования. |
---|
Транспонируйте матрицу m на место.
Обзор
Эти функции позволяют манипулировать квадратными матрицами ранга 2x2, 3x3 и 4x4. Они особенно полезны для графических преобразований и совместимы с OpenGL.
Мы используем индекс, начинающийся с нуля, для строк и столбцов. Например, последний элемент rs_matrix4x4 находится в позиции (3, 3).
RenderScript использует матрицы со столбцами и векторы на основе столбцов. Преобразование вектора выполняется путем последующего умножения вектора, например (matrix * vector)
, как это предусмотрено rsMatrixMultiply ().
Чтобы создать матрицу преобразования, которая выполняет два преобразования одновременно, умножьте две исходные матрицы, при этом первое преобразование будет правым аргументом. Например, чтобы создать матрицу преобразования, которая применяет преобразование s1, за которым следует s2, вызовите rsMatrixLoadMultiply(&combined, &s2, &s1)
. Это происходит от s2 * (s1 * v)
, что равно (s2 * s1) * v
.
У нас есть два стиля функций для создания матриц преобразования: rsMatrixLoad Transformation и rsMatrix Transformation . Первый стиль просто сохраняет матрицу преобразования в первом аргументе. Последний изменяет уже существующую матрицу преобразования, так что новое преобразование происходит первым. Например, если вы вызываете rsMatrixTranslate () для матрицы, которая уже выполняет масштабирование, результирующая матрица при применении к вектору сначала выполнит перевод, а затем масштабирование.
Краткое содержание
Функции | |
---|---|
rsExtractFrustumPlanes | Вычисление усеченных плоскостей |
rsIsSphereInFrustum | Проверяет, находится ли сфера в пределах усеченных плоскостей. |
rsMatrixGet | Получить один элемент |
rsMatrixInverse | Инвертирует матрицу на месте |
rsMatrixInverseTranspose | Инвертирует и транспонирует матрицу на месте |
rsMatrixLoad | Загрузите или скопируйте матрицу |
rsMatrixLoadFrustum | Загрузите матрицу проекции усеченной пирамиды |
rsMatrixLoadIdentity | Загрузить идентификационную матрицу |
rsMatrixLoadMultiply | Умножить две матрицы |
rsMatrixLoadOrtho | Загрузите матрицу ортогональной проекции |
rsMatrixLoadPerspective | Загрузите матрицу перспективной проекции |
rsMatrixLoadRotate | Загрузите матрицу вращения |
rsMatrixLoadScale | Загрузите матрицу масштабирования |
rsMatrixLoadTranslate | Загрузить матрицу перевода |
rsMatrixMultiply | Умножить матрицу на вектор или другую матрицу |
rsMatrixRotate | Применение поворота к матрице преобразования |
rsMatrixScale | Примените масштабирование к матрице преобразования |
rsMatrixSet | Установить один элемент |
rsMatrixПеревести | Применить перевод к матрице преобразования |
rsMatrixTranspose | Транспонировать место матрицы |
Функции
rsExtractFrustumPlanes : Вычисление усеченных плоскостей.
void rsExtractFrustumPlanes(const rs_matrix4x4 * viewProj, float4 * слева, float4 * справа, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); | Добавлено на уровне API 24. |
void rsExtractFrustumPlanes(const rs_matrix4x4 * viewProj, float4 * слева, float4 * справа, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); | Удален из API уровня 24 и выше. |
Параметры
просмотрПродж | Матрица для извлечения самолетов. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом самолет. |
далеко | Дальний самолет. |
да |
Вычисляет 6 плоскостей усеченного конуса из матрицы проекции вида.
rsIsSphereInFrustum : проверяет, находится ли сфера в пределах усеченных плоскостей.
bool rsIsSphereInFrustum( float4 * сфера, float4 * влево, float4 * вправо, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); |
Параметры
сфера | float4, представляющий сферу. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом самолет. |
далеко | Дальний самолет. |
Возвращает true, если сфера находится в пределах шести плоскостей усеченного конуса.
rsMatrixGet : получить один элемент
float rsMatrixGet(const rs_matrix2x2 * m, uint32_t col, uint32_t row); | |
float rsMatrixGet(const rs_matrix3x3 * m, uint32_t col, uint32_t row); | |
float rsMatrixGet(const rs_matrix4x4 * m, uint32_t col, uint32_t row); |
Параметры
м | Матрица, из которой извлекается элемент. |
---|---|
столбец | Столбец извлекаемого элемента, отсчитываемый от нуля. |
ряд | Строка извлекаемого элемента, отсчитываемая от нуля. |
Возвращает один элемент матрицы.
Внимание: порядок параметров столбца и строки может быть неожиданным.
rsMatrixInverse : инвертирует матрицу на месте.
bool rsMatrixInverse( rs_matrix4x4 * m); |
Параметры
м | Матрица для инвертирования. |
---|
Возвращает true, если матрица была успешно инвертирована.
rsMatrixInverseTranspose : инвертирует и транспонирует матрицу на месте.
bool rsMatrixInverseTranspose( rs_matrix4x4 * m); |
Параметры
м | Матрица для изменения. |
---|
Матрица сначала инвертируется, а затем транспонируется. Возвращает true, если матрица была успешно инвертирована.
rsMatrixLoad : загрузить или скопировать матрицу.
void rsMatrixLoad( rs_matrix2x2 * назначение, массив const float*); | |
void rsMatrixLoad( rs_matrix2x2 * назначение, const rs_matrix2x2 * источник); | |
void rsMatrixLoad( rs_matrix3x3 * назначение, массив const float*); | |
void rsMatrixLoad( rs_matrix3x3 * назначение, const rs_matrix3x3 * источник); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, массив const float*); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, const rs_matrix2x2 * источник); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, const rs_matrix3x3 * источник); | |
void rsMatrixLoad( rs_matrix4x4 * назначение, const rs_matrix4x4 * источник); |
Параметры
место назначения | Матрица для установки. |
---|---|
множество | Массив значений для установки матрицы. Эти массивы должны иметь длину 4, 9 или 16 чисел с плавающей запятой, в зависимости от размера матрицы. |
источник | Исходная матрица. |
Установите элементы матрицы из массива чисел с плавающей запятой или из другой матрицы.
При загрузке из массива числа с плавающей запятой должны располагаться в порядке строк, т. е. первым должен быть элемент в row 0, column 0
, за которым следует элемент в row 0, column 1
и т. д.
Если загрузка из матрицы и источник меньше места назначения, остальная часть места назначения заполняется элементами единичной матрицы. Например, загрузка rs_matrix2x2 в rs_matrix4x4 даст:
м00 | м01 | 0,0 | 0,0 |
м10 | м11 | 0,0 | 0,0 |
0,0 | 0,0 | 1.0 | 0,0 |
0,0 | 0,0 | 0,0 | 1.0 |
rsMatrixLoadFrustum : Загрузите матрицу усеченной проекции.
void rsMatrixLoadFrustum( rs_matrix4x4 * m, плавать влево, плавать вправо, плавать внизу, плавать вверху, плавать рядом, плавать далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Создает матрицу усеченной проекции, преобразуя прямоугольник, определяемый шестью плоскостями отсечения left, right, bottom, top, near, far
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixLoadIdentity : Загрузить идентификационную матрицу.
void rsMatrixLoadIdentity( rs_matrix2x2 * m); | |
void rsMatrixLoadIdentity( rs_matrix3x3 * m); | |
void rsMatrixLoadIdentity( rs_matrix4x4 * m); |
Параметры
м | Матрица для установки. |
---|
Установите элементы матрицы в единичную матрицу.
rsMatrixLoadMultiply : умножает две матрицы.
void rsMatrixLoadMultiply( rs_matrix2x2 * m, const rs_matrix2x2 * lhs, const rs_matrix2x2 * rhs); | |
void rsMatrixLoadMultiply( rs_matrix3x3 * m, const rs_matrix3x3 * lhs, const rs_matrix3x3 * rhs); | |
void rsMatrixLoadMultiply( rs_matrix4x4 * m, const rs_matrix4x4 * lhs, const rs_matrix4x4 * rhs); |
Параметры
м | Матрица для установки. |
---|---|
левая сторона | Левая матрица продукта. |
правый риск | Правая матрица произведения. |
Устанавливает m в матричное произведение lhs * rhs
.
Чтобы объединить две матрицы преобразования 4x4, умножьте вторую матрицу преобразования на первую матрицу преобразования. Например, чтобы создать матрицу преобразования, которая применяет преобразование s1, за которым следует s2, вызовите rsMatrixLoadMultiply(&combined, &s2, &s1)
.
Предупреждение. До версии 21 сохранение результата обратно в правую матрицу не поддерживается и приведет к неопределенному поведению. Вместо этого используйте rsMatrixMulitply. Например, вместо rsMatrixLoadMultiply (&m2r, &m2r, &m2l) используйте rsMatrixMultiply (&m2r, &m2l). rsMatrixLoadMultiply (&m2l, &m2r, &m2l) работает как положено.
rsMatrixLoadOrtho : Загрузите матрицу ортогональной проекции.
void rsMatrixLoadOrtho( rs_matrix4x4 * m, плавать влево, плавать вправо, плавать внизу, плавать вверху, плавать рядом, плавать далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Создает матрицу ортогональной проекции, преобразуя прямоугольник, идентифицируемый шестью плоскостями отсечения left, right, bottom, top, near, far
в единичный куб с углом в (-1, -1, -1)
и противоположным в (1, 1, 1)
. (1, 1, 1)
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
См. https://en.wikipedia.org/wiki/Orthographic_projection.
rsMatrixLoadPerspective : Загрузите матрицу перспективной проекции.
void rsMatrixLoadPerspective( rs_matrix4x4 * m, float fovy, плавающий аспект, плавающий рядом, плавающий далеко); |
Параметры
м | Матрица для установки. |
---|---|
фови | Поле зрения в градусах по оси Y. |
аспект | Отношение х/у. |
около | Рядом с плоскостью отсечения. |
далеко | Дальняя отсекающая плоскость. |
Создает матрицу перспективной проекции, предполагая симметричное поле зрения.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixLoadRotate : загрузить матрицу вращения.
void rsMatrixLoadRotate( rs_matrix4x4 * m, float rot, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
гнить | Сколько поворотов нужно сделать, в градусах. |
х | X-компонент вектора, который является осью вращения. |
й | Компонент Y вектора, который является осью вращения. |
я | Z-компонент вектора, который является осью вращения. |
Эта функция создает матрицу вращения. Ось вращения представляет собой вектор (x, y, z)
.
Чтобы повернуть вектор, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
См. https://en.wikipedia.org/wiki/Rotation_matrix.
rsMatrixLoadScale : загрузить матрицу масштабирования.
void rsMatrixLoadScale( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Множественное для масштабирования компонентов x. |
й | Множественный для масштабирования компонентов y. |
я | Множественное для масштабирования компонентов z. |
Эта функция создает матрицу масштабирования, в которой каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы масштабировать вектор, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixLoadTranslate : загрузить матрицу перевода.
void rsMatrixLoadTranslate( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Число, добавляемое к каждому компоненту x. |
й | Число, добавляемое к каждому компоненту y. |
я | Число, добавляемое к каждому компоненту z. |
Эта функция создает матрицу перевода, в которой к каждому элементу вектора добавляется число.
Чтобы перевести вектор, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixMultiply : умножить матрицу на вектор или другую матрицу.
float2 rsMatrixMultiply(const rs_matrix2x2 * m, float2 in); | Добавлено на уровне API 14. |
float2 rsMatrixMultiply( rs_matrix2x2 * m, float2 in); | Удален из API уровня 14 и выше. |
float3 rsMatrixMultiply(const rs_matrix3x3 * m, float2 in); | Добавлено на уровне API 14. |
float3 rsMatrixMultiply(const rs_matrix3x3 * m, float3 in); | Добавлено на уровне API 14. |
float3 rsMatrixMultiply( rs_matrix3x3 * m, float2 in); | Удален из API уровня 14 и выше. |
float3 rsMatrixMultiply( rs_matrix3x3 * m, float3 in); | Удален из API уровня 14 и выше. |
float4 rsMatrixMultiply(const rs_matrix4x4 * m, float2 in); | Добавлено на уровне API 14. |
float4 rsMatrixMultiply(const rs_matrix4x4 * m, float3 in); | Добавлено на уровне API 14. |
float4 rsMatrixMultiply(const rs_matrix4x4 * m, float4 in); | Добавлено на уровне API 14. |
float4 rsMatrixMultiply( rs_matrix4x4 * m, float2 in); | Удален из API уровня 14 и выше. |
float4 rsMatrixMultiply( rs_matrix4x4 * m, float3 in); | Удален из API уровня 14 и выше. |
float4 rsMatrixMultiply( rs_matrix4x4 * m, float4 in); | Удален из API уровня 14 и выше. |
void rsMatrixMultiply( rs_matrix2x2 * m, const rs_matrix2x2 * rhs); | |
void rsMatrixMultiply( rs_matrix3x3 * m, const rs_matrix3x3 * rhs); | |
void rsMatrixMultiply( rs_matrix4x4 * m, const rs_matrix4x4 * rhs); |
Параметры
м | Левая матрица продукта и матрица, которую нужно установить. |
---|---|
правый риск | Правая матрица произведения. |
в |
Для варианта «матрица по матрице» устанавливает m в матричное произведение m * rhs
.
При объединении двух матриц преобразования 4x4 с использованием этой функции результирующая матрица будет соответствовать выполнению сначала преобразования правой руки, за которым следует исходное преобразование m.
Для варианта «матрица на вектор» возвращает результат после умножения вектора на матрицу, т.е. m * in
.
При умножении float3 на rs_matrix4x4 вектор расширяется с помощью (1).
При умножении float2 на rs_matrix4x4 вектор расширяется до (0, 1).
При умножении float2 на rs_matrix3x3 вектор расширяется с помощью (0).
Начиная с API 14, эта функция принимает константную матрицу в качестве первого аргумента.
rsMatrixRotate : применить поворот к матрице преобразования.
void rsMatrixRotate( rs_matrix4x4 * m, float rot, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
гнить | Сколько поворотов нужно сделать, в градусах. |
х | X-компонент вектора, который является осью вращения. |
й | Компонент Y вектора, который является осью вращения. |
я | Z-компонент вектора, который является осью вращения. |
Умножьте матрицу m на матрицу вращения.
Эта функция изменяет матрицу преобразования, чтобы сначала выполнить вращение. Ось вращения представляет собой вектор (x, y, z)
.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixScale : применить масштабирование к матрице преобразования.
void rsMatrixScale( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Множественное для масштабирования компонентов x. |
й | Множественный для масштабирования компонентов y. |
я | Множественное для масштабирования компонентов z. |
Умножьте матрицу m на матрицу масштабирования.
Эта функция изменяет матрицу преобразования, чтобы сначала выполнить масштабирование. При масштабировании каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixSet : установить один элемент
void rsMatrixSet( rs_matrix2x2 * m, uint32_t col, uint32_t row, float v); | |
void rsMatrixSet( rs_matrix3x3 * m, uint32_t col, uint32_t row, float v); | |
void rsMatrixSet( rs_matrix4x4 * m, uint32_t col, uint32_t row, float v); |
Параметры
м | Матрица, которая будет изменена. |
---|---|
столбец | Столбец устанавливаемого элемента, отсчитываемый от нуля. |
ряд | Строка элемента, начинающегося с нуля, для установки. |
в | Значение для установки. |
Установите элемент матрицы.
Внимание: порядок параметров столбца и строки может быть неожиданным.
rsMatrixTranslate : применить перевод к матрице преобразования.
void rsMatrixTranslate( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Число, добавляемое к каждому компоненту x. |
й | Число, добавляемое к каждому компоненту y. |
я | Число, добавляемое к каждому компоненту z. |
Умножьте матрицу m на матрицу перевода.
Эта функция изменяет матрицу преобразования, чтобы сначала выполнить перевод. При переводе к каждому компоненту вектора добавляется число.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу с помощью rsMatrixMultiply ().
rsMatrixTranspose : Транспонировать место матрицы.
void rsMatrixTranspose( rs_matrix2x2 * m); | |
void rsMatrixTranspose( rs_matrix3x3 * m); | |
void rsMatrixTranspose( rs_matrix4x4 * m); |
Параметры
м | Матрица для транспонирования. |
---|
Транспонируйте матрицу m на место.
Обзор
Эти функции позволяют манипулировать квадратными матрицами ранга 2x2, 3x3 и 4x4. Они особенно полезны для графических преобразований и совместимы с OpenGL.
Мы используем индекс, начинающийся с нуля, для строк и столбцов. Например, последний элемент rs_matrix4x4 находится в позиции (3, 3).
RenderScript использует матрицы со столбцами и векторы на основе столбцов. Преобразование вектора выполняется путем последующего умножения вектора, например (matrix * vector)
, как это предусмотрено rsMatrixMultiply ().
Чтобы создать матрицу преобразования, которая выполняет два преобразования одновременно, умножьте две исходные матрицы, при этом первое преобразование будет правым аргументом. Например, чтобы создать матрицу преобразования, которая применяет преобразование s1, за которым следует s2, вызовите rsMatrixLoadMultiply(&combined, &s2, &s1)
. Это происходит от s2 * (s1 * v)
, что равно (s2 * s1) * v
.
У нас есть два стиля функций для создания матриц преобразования: rsMatrixLoad Transformation и rsMatrix Transformation . Первый стиль просто сохраняет матрицу преобразования в первом аргументе. Последний изменяет уже существующую матрицу преобразования, так что новое преобразование происходит первым. Например, если вы вызываете rsMatrixTranslate () для матрицы, которая уже выполняет масштабирование, результирующая матрица при применении к вектору сначала выполнит перевод, а затем масштабирование.
Краткое содержание
Функции | |
---|---|
rsExtractFrustumPlanes | Вычисление усеченных плоскостей |
rsIsSphereInFrustum | Проверяет, находится ли сфера в пределах усеченных плоскостей. |
rsMatrixGet | Получить один элемент |
rsMatrixInverse | Инвертирует матрицу на месте |
rsMatrixInverseTranspose | Инвертирует и транспонирует матрицу на месте |
rsMatrixLoad | Загрузите или скопируйте матрицу |
rsMatrixLoadFrustum | Загрузите матрицу проекции усеченной пирамиды |
rsMatrixLoadIdentity | Загрузить идентификационную матрицу |
rsMatrixLoadMultiply | Умножить две матрицы |
rsMatrixLoadOrtho | Загрузите матрицу ортогональной проекции |
rsMatrixLoadPerspective | Загрузите матрицу перспективной проекции |
rsMatrixLoadRotate | Загрузите матрицу вращения |
rsMatrixLoadScale | Загрузите матрицу масштабирования |
rsMatrixLoadTranslate | Загрузить матрицу перевода |
rsMatrixMultiply | Умножить матрицу на вектор или другую матрицу |
rsMatrixRotate | Применение поворота к матрице преобразования |
rsMatrixScale | Примените масштабирование к матрице преобразования |
rsMatrixSet | Установить один элемент |
rsMatrixПеревести | Применить перевод к матрице преобразования |
rsMatrixTranspose | Транспонировать место матрицы |
Функции
rsExtractFrustumPlanes : Вычисление усеченных плоскостей.
void rsExtractFrustumPlanes(const rs_matrix4x4 * viewProj, float4 * слева, float4 * справа, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); | Добавлено на уровне API 24. |
void rsExtractFrustumPlanes(const rs_matrix4x4 * viewProj, float4 * слева, float4 * справа, float4 * сверху, float4 * снизу, float4 * рядом, float4 * далеко); | Удален из API уровня 24 и выше. |
Параметры
просмотрПродж | Матрица для извлечения самолетов. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом самолет. |
далеко | Дальний самолет. |
да |
Вычисляет 6 плоскостей усеченного конуса из матрицы проекции вида.
rsIsSphereInFrustum : проверяет, находится ли сфера в пределах усеченных плоскостей.
bool rsissphereinfrustum ( float4 * sphere, float4 * left, float4 * правый, float4 * top, float4 * внизу, float4 * рядом, float4 * far); |
Параметры
сфера | float4, представляющий сферу. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом с самолетом. |
далеко | Дальний самолет. |
Возвращает True, если сфера находится в пределах 6 плоскостей Frustum.
rsmatrixget : получить один элемент
float rsmatrixget (const rs_matrix2x2 * m, uint32_t col, uint32_t row); | |
float rsmatrixget (const rs_matrix3x3 * m, uint32_t col, uint32_t row); | |
float rsmatrixget (const rs_matrix4x4 * m, uint32_t col, uint32_t row); |
Параметры
м | Матрица, чтобы извлечь элемент из. |
---|---|
столбец | Столбец на основе нуля элемента, который будет извлечен. |
ряд | Ноль строка элемента для извлечения. |
Возвращает один элемент матрицы.
ПРЕДУПРЕЖДЕНИЕ: Порядок столбца и параметров строки может быть неожиданным.
rsmatrixinverse : инвертирует матрицу на месте
bool rsmatrixinverse ( rs_matrix4x4 * m); |
Параметры
м | Матрица, чтобы инвертировать. |
---|
Возвращает True, если матрица была успешно перевернута.
rsmatrixinversetranspose : инверты и транспонировать матрицу на месте
Bool rsmatrixInversTranspose ( rs_matrix4x4 * m); |
Параметры
м | Матрица для изменения. |
---|
Матрица сначала перевернута, затем транспонируется. Возвращает True, если матрица была успешно перевернута.
rsmatrixload : загрузить или скопировать матрицу
void rsmatrixload ( rs_matrix2x2 * destination, const float * массив); | |
void rsmatrixload ( rs_matrix2x2 * destination, const rs_matrix2x2 * source); | |
void rsmatrixload ( rs_matrix3x3 * destination, const float * массив); | |
void rsmatrixload ( rs_matrix3x3 * destination, const rs_matrix3x3 * source); | |
void rsmatrixload ( rs_matrix4x4 * destination, const float * массив); | |
void rsmatrixload ( rs_matrix4x4 * destination, const rs_matrix2x2 * source); | |
void rsmatrixload ( rs_matrix4x4 * destination, const rs_matrix3x3 * source); | |
void rsmatrixload ( rs_matrix4x4 * destination, const rs_matrix4x4 * source); |
Параметры
место назначения | Матрица для установки. |
---|---|
множество | Массив значений, чтобы установить матрицу на. Эти массивы должны составлять 4, 9 или 16 поплавок, в зависимости от размера матрицы. |
источник | Матрица источника. |
Установите элементы матрицы из массива поплавков или из другой матрицы.
Если загрузка из массива, поплавки должны находиться в порядке строки мажор, то есть элемент row 0, column 0
должен быть первым, за которым следует элемент в row 0, column 1
и т. Д. И т. Д.
Если загрузка из матрицы и источник меньше пункта назначения, остальная часть пункта назначения заполнена элементами матрицы идентификации. Например, загрузка rs_matrix2x2 в rs_matrix4x4 даст:
мм | M01 | 0,0 | 0,0 |
М10 | М11 | 0,0 | 0,0 |
0,0 | 0,0 | 1.0 | 0,0 |
0,0 | 0,0 | 0,0 | 1.0 |
Rsmatrixloadfrustum : загрузить матрицу проекции Frustum
void rsmatrixloadfrustum ( rs_matrix4x4 * m, плавание влево, плавает вправо, плавает внизу, плавает, плавает рядом, плавает далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Создает матрицу проекции Frustum, преобразуя коробку, идентифицированную шестью плоскостями left, right, bottom, top, near, far
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
RSMatrixloadIdentity : MATR IDEDITY MATRIX
void rsmatrixloadientity ( rs_matrix2x2 * m); | |
void rsmatrixloadientity ( rs_matrix3x3 * m); | |
void rsmatrixloadientity ( rs_matrix4x4 * m); |
Параметры
м | Матрица для установки. |
---|
Установите элементы матрицы в матрицу личности.
rsmatrixloadmultiply : умножьте две матрицы
void rsmatrixloadmultiply ( rs_matrix2x2 * m, const rs_matrix2x2 * lhs, const rs_matrix2x2 * rhs); | |
void rsmatrixloadmultiply ( rs_matrix3x3 * m, const rs_matrix3x3 * lhs, const rs_matrix3x3 * rhs); | |
void rsmatrixloadmultiply ( rs_matrix4x4 * m, const rs_matrix4x4 * lhs, const rs_matrix4x4 * rhs); |
Параметры
м | Матрица для установки. |
---|---|
LHS | Левая матрица продукта. |
правый риск | Правая матрица продукта. |
Устанавливает M на матричный продукт lhs * rhs
.
Чтобы объединить две матрицы преобразования 4x4, умножьте вторую матрицу преобразования на первую матрицу преобразования. Например, чтобы создать матрицу преобразования, которая применяет преобразование S1, за которым следует S2, Call rsMatrixLoadMultiply(&combined, &s2, &s1)
.
Предупреждение: до версии 21 хранение результата обратно в правую матрицу не поддерживается и приведет к неопределенному поведению. Вместо этого используйте rsmatrixmulitply. Например, вместо того, чтобы делать rsmatrixloadmultiply (& m2r, & m2r, & m2l), используйте Rsmatrixmultiply (& M2R, & M2L). RSMatrixloadMultiply (& M2L, & M2R, & M2L) работает, как и ожидалось.
Rsmatrixloadortho : загрузить орфографическую проекционную матрицу
void rsmatrixloadortho ( rs_matrix4x4 * m, плавание влево, плавает вправо, внизу плавает, плавает, плавает рядом, плавает далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Конструирует матрицу орфографической проекции, преобразуя коробку, идентифицированную шестью плоскостями, left, right, bottom, top, near, far
в кубик устройства с углом в (-1, -1, -1)
и противоположность (1, 1, 1)
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
См.
RSMatrixloadperseperive : загрузить перспективную проекционную матрицу
void rsmatrixloadpersperive ( rs_matrix4x4 * m, float fovy, аспект плавания, плавание рядом, плавает далеко); |
Параметры
м | Матрица для установки. |
---|---|
Фови | Поле зрения, в градусах вдоль оси Y. |
аспект | Соотношение x / y. |
около | Рядом с самолетом отсечения. |
далеко | Самолет с дальней подключением. |
Создает перспективную проекционную матрицу, предполагая симметричное поле зрения.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
RSMatrixLoadRotate : загрузите матрицу вращения
void rsmatrixloadrotate ( rs_matrix4x4 * m, плавучий гниль, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
гнить | Сколько вращения нужно сделать, в градусах. |
х | X компонент вектора, который является осью вращения. |
й | Y компонент вектора, который является осью вращения. |
я | Z -компонент вектора, который является осью вращения. |
Эта функция создает матрицу вращения. Ось вращения - вектор (x, y, z)
.
Чтобы повернуть вектор, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
См. Https://en.wikipedia.org/wiki/rotation_matrix.
RSMatrixLoadScale : загрузите матрицу масштабирования
void rsmatrixloadscale ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Множественные, чтобы масштабировать компоненты x. |
й | Множественные, чтобы масштабировать компоненты Y. |
я | Множественные, чтобы масштабировать компоненты Z. |
Эта функция создает матрицу масштабирования, где каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы масштабировать вектор, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
rsmatrixloadtranslate : загрузить матрицу перевода
void rsmatrixloadtranslate ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Номер, чтобы добавить в каждый x компонент. |
й | Номер, чтобы добавить в каждый компонент Y. |
я | Номер для добавления в каждый z -компонент. |
Эта функция создает матрицу перевода, где число добавляется в каждый элемент вектора.
Чтобы перевести вектор, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
Rsmatrixmultiply : умножьте матрицу на вектор или другую матрицу
float2 rsmatrixmultiply (const rs_matrix2x2 * m, float2 in); | Добавлен на уровне API 14 |
float2 rsmatrixmultiply ( rs_matrix2x2 * m, float2 in); | Удален с уровня API 14 и выше |
float3 rsmatrixmultiply (const rs_matrix3x3 * m, float2 in); | Добавлен на уровне API 14 |
float3 rsmatrixmultiply (const rs_matrix3x3 * m, float3 in); | Добавлен на уровне API 14 |
float3 rsmatrixmultiply ( rs_matrix3x3 * m, float2 in); | Удален с уровня API 14 и выше |
float3 rsmatrixmultiply ( rs_matrix3x3 * m, float3 in); | Удален с уровня API 14 и выше |
float4 rsmatrixmultiply (const rs_matrix4x4 * m, float2 in); | Добавлен на уровне API 14 |
float4 rsmatrixmultiply (const rs_matrix4x4 * m, float3 in); | Добавлен на уровне API 14 |
float4 rsmatrixmultiply (const rs_matrix4x4 * m, float4 in); | Добавлен на уровне API 14 |
float4 rsmatrixmultiply ( rs_matrix4x4 * m, float2 in); | Удален с уровня API 14 и выше |
float4 rsmatrixmultiply ( rs_matrix4x4 * m, float3 in); | Удален с уровня API 14 и выше |
float4 rsmatrixmultiply ( rs_matrix4x4 * m, float4 in); | Удален с уровня API 14 и выше |
void rsmatrixmultiply ( rs_matrix2x2 * m, const rs_matrix2x2 * rhs); | |
void rsmatrixmultiply ( rs_matrix3x3 * m, const rs_matrix3x3 * rhs); | |
void rsmatrixmultiply ( rs_matrix4x4 * m, const rs_matrix4x4 * rhs); |
Параметры
м | Левая матрица продукта и матрицы, которая должна быть установлена. |
---|---|
правый риск | Правая матрица продукта. |
в |
Для матрицы по варианту матрицы устанавливает M на матричный продукт m * rhs
.
При объединении двух матриц преобразования 4x4 с использованием этой функции полученная матрица будет соответствовать выполнению преобразования RHS, с последующим исходным M -преобразованием.
Для матрицы от Vector Variant возвращает пост-мультиплизацию вектора матрицей, т.е. m * in
.
При умножении Float3 на RS_MATRIX4X4 вектор расширяется (1).
При умножении Float2 на RS_MATRIX4X4 вектор расширяется (0, 1).
При умножении Float2 на RS_MATRIX3X3 вектор расширяется (0).
Начиная с API 14, эта функция принимает константную матрицу в качестве первого аргумента.
RSMatrixRotate : примените вращение на матрицу преобразования
void rsmatrixRotate ( rs_matrix4x4 * m, float hrot, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
гнить | Сколько вращения нужно сделать, в градусах. |
х | X компонент вектора, который является осью вращения. |
й | Y компонент вектора, который является осью вращения. |
я | Z -компонент вектора, который является осью вращения. |
Умножьте матрицу M на матрицу вращения.
Эта функция изменяет матрицу преобразования, чтобы сначала сделать вращение. Ось вращения - вектор (x, y, z)
.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
Rsmatrixscale : примените масштабирование к матрице преобразования
void rsmatrixscale ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Множественные, чтобы масштабировать компоненты x. |
й | Множественные, чтобы масштабировать компоненты Y. |
я | Множественные, чтобы масштабировать компоненты Z. |
Умножьте матрицу M на матрицу масштабирования.
Эта функция изменяет матрицу преобразования, чтобы сначала сделать масштабирование. При масштабировании каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
rsmatrixset : установить один элемент
void rsmatrixset ( rs_matrix2x2 * m, uint32_t col, uint32_t row, float v); | |
void rsmatrixset ( rs_matrix3x3 * m, uint32_t col, uint32_t row, float v); | |
void rsmatrixset ( rs_matrix4x4 * m, uint32_t col, uint32_t row, float v); |
Параметры
м | Матрица, которая будет изменена. |
---|---|
столбец | Столбец на основе нуля элемента, который будет установлен. |
ряд | Ноль строка элемента будет установлен. |
в | Значение для установки. |
Установите элемент матрицы.
ПРЕДУПРЕЖДЕНИЕ: Порядок столбца и параметров строки может быть неожиданным.
Rsmatrixtranslate : примените перевод к матрице преобразования
void rsmatrixtranslate ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Номер, чтобы добавить в каждый x компонент. |
й | Номер, чтобы добавить в каждый компонент Y. |
я | Номер для добавления в каждый z -компонент. |
Умножьте матрицу M на матрицу перевода.
Эта функция изменяет матрицу преобразования, чтобы сначала сделать перевод. При переводе в каждый компонент вектора добавляется число.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
Rsmatrixtranspose : Transpepe A Matrix Place
void rsmatrixtranspose ( rs_matrix2x2 * m); | |
void rsmatrixtranspose ( rs_matrix3x3 * m); | |
void rsmatrixtranspose ( rs_matrix4x4 * m); |
Параметры
м | Матрица для транспонирования. |
---|
Транспонировать матрицу М на месте.
Обзор
Эти функции позволяют вам манипулировать квадратными матрицами ранга 2x2, 3x3 и 4x4. Они особенно полезны для графических преобразований и совместимы с OpenGL.
Мы используем индекс на основе нуля для строк и столбцов. Например, последний элемент rs_matrix4x4 находится в (3, 3).
Renderscript использует матрицы столбцов и векторы на основе столбцов. Преобразование вектора осуществляется путем постмультировки вектора, например (matrix * vector)
, как это обеспечивает rsmatrixmultiply ().
Чтобы создать матрицу преобразования, которая выполняет два преобразования одновременно, умножьте две матрицы источника, с первым преобразованием в качестве правильного аргумента. Например, чтобы создать матрицу преобразования, которая применяет преобразование S1, за которым следует S2, Call rsMatrixLoadMultiply(&combined, &s2, &s1)
. Это происходит от s2 * (s1 * v)
, который (s2 * s1) * v
.
У нас есть два стиля функций для создания матриц преобразования: преобразование RSMatrixload и преобразование RSMatrix. Бывший стиль просто хранит матрицу трансформации в первом аргументе. Последнее изменяет ранее существовавшую матрицу преобразования, чтобы новое преобразование происходило первым. Например, если вы называете rsmatrixtranslate () на матрицу, которая уже выполняет масштабирование, полученная матрица при применении к вектору сначала сделает перевод, а затем масштабирование.
Краткое содержание
Функции | |
---|---|
rsextractfrustumplanes | Вычислить плоскости Frustum |
rsissphereinfrustum | Проверяет, находится ли сфера в плоскостях Frustum |
rsmatrixget | Получите один элемент |
rsmatrixinverse | Переворачивать матрицу на месте |
rsmatrixinversetranspose | Инверты и транспонировать матрицу на месте |
rsmatrixload | Загрузите или скопируйте матрицу |
rsmatrixloadfrustum | Загрузите матрицу проекции Frustum |
RSMatrixloadIentity | Загружать матрицу идентификации |
rsmatrixloadmultiply | Умножьте две матрицы |
rsmatrixloadortho | Загрузить орфографическую проекционную матрицу |
rsmatrixloadpersperive | Загрузить перспективную проекционную матрицу |
rsmatrixloadrotate | Загрузить матрицу вращения |
RSMatrixLoadScale | Загрузите матрицу масштабирования |
rsmatrixloadtranslate | Загрузить матрицу перевода |
rsmatrixmultiply | Умножьте матрицу на вектор или другую матрицу |
RSMatrixRotate | Нанесите вращение на матрицу преобразования |
RSMatrixscale | Применить масштабирование к матрице преобразования |
rsmatrixset | Установите один элемент |
rsmatrixtranslate | Примените перевод к матрице преобразования |
Rsmatrixtranspose | Транспонировать матричное место |
Функции
rsextractfrustumplanes : вычислить плоскости Frustum
void rsextractfrustumplanes (const rs_matrix4x4 * viewproj, float4 * слева, float4 * righ, float4 * top, float4 * внизу, float4 * рядом, float4 * far); | Добавлен на уровне API 24 |
void rsextractfrustumplanes (const rs_matrix4x4 * viewproj, float4 * влево, float4 * справа, float4 * top, float4 * внизу, float4 * рядом, float4 * far); | Удален с уровня API 24 и выше |
Параметры
ViewProj | Матрица для извлечения плоскостей из. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом с самолетом. |
далеко | Дальний самолет. |
ручный |
Вычисляет 6 плоскостей Frustum из матрицы проекции View
rsissphereinfrustum : проверяет, находится ли сфера в плоскостях Frustum
bool rsissphereinfrustum ( float4 * sphere, float4 * left, float4 * правый, float4 * top, float4 * внизу, float4 * рядом, float4 * far); |
Параметры
сфера | float4, представляющий сферу. |
---|---|
левый | Левый самолет. |
верно | Правый самолет. |
вершина | Верхний самолет. |
нижний | Нижняя плоскость. |
около | Рядом с самолетом. |
далеко | Дальний самолет. |
Возвращает True, если сфера находится в пределах 6 плоскостей Frustum.
rsmatrixget : получить один элемент
float rsmatrixget (const rs_matrix2x2 * m, uint32_t col, uint32_t row); | |
float rsmatrixget (const rs_matrix3x3 * m, uint32_t col, uint32_t row); | |
float rsmatrixget (const rs_matrix4x4 * m, uint32_t col, uint32_t row); |
Параметры
м | Матрица, чтобы извлечь элемент из. |
---|---|
столбец | Столбец на основе нуля элемента, который будет извлечен. |
ряд | Ноль строка элемента для извлечения. |
Возвращает один элемент матрицы.
ПРЕДУПРЕЖДЕНИЕ: Порядок столбца и параметров строки может быть неожиданным.
rsmatrixinverse : инвертирует матрицу на месте
bool rsmatrixinverse ( rs_matrix4x4 * m); |
Параметры
м | Матрица, чтобы инвертировать. |
---|
Возвращает True, если матрица была успешно перевернута.
rsmatrixinversetranspose : инверты и транспонировать матрицу на месте
Bool rsmatrixInversTranspose ( rs_matrix4x4 * m); |
Параметры
м | Матрица для изменения. |
---|
Матрица сначала перевернута, затем транспонируется. Возвращает True, если матрица была успешно перевернута.
rsmatrixload : загрузить или скопировать матрицу
void rsmatrixload ( rs_matrix2x2 * destination, const float * массив); | |
void rsmatrixload ( rs_matrix2x2 * destination, const rs_matrix2x2 * source); | |
void rsmatrixload ( rs_matrix3x3 * destination, const float * массив); | |
void rsmatrixload ( rs_matrix3x3 * destination, const rs_matrix3x3 * source); | |
void rsmatrixload ( rs_matrix4x4 * destination, const float * массив); | |
void rsmatrixload ( rs_matrix4x4 * destination, const rs_matrix2x2 * source); | |
void rsmatrixload ( rs_matrix4x4 * destination, const rs_matrix3x3 * source); | |
void rsmatrixload ( rs_matrix4x4 * destination, const rs_matrix4x4 * source); |
Параметры
место назначения | Матрица для установки. |
---|---|
множество | Массив значений, чтобы установить матрицу на. Эти массивы должны составлять 4, 9 или 16 поплавок, в зависимости от размера матрицы. |
источник | Матрица источника. |
Установите элементы матрицы из массива поплавков или из другой матрицы.
Если загрузка из массива, поплавки должны находиться в порядке строки мажор, то есть элемент row 0, column 0
должен быть первым, за которым следует элемент в row 0, column 1
и т. Д. И т. Д.
Если загрузка из матрицы и источник меньше пункта назначения, остальная часть пункта назначения заполнена элементами идентификационной матрицы. Например, загрузка rs_matrix2x2 в rs_matrix4x4 даст:
мм | M01 | 0,0 | 0,0 |
М10 | М11 | 0,0 | 0,0 |
0,0 | 0,0 | 1.0 | 0,0 |
0,0 | 0,0 | 0,0 | 1.0 |
Rsmatrixloadfrustum : загрузить матрицу проекции Frustum
void rsmatrixloadfrustum ( rs_matrix4x4 * m, плавание влево, плавает вправо, плавает внизу, плавает, плавает рядом, плавает далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Создает матрицу проекции Frustum, преобразуя коробку, идентифицированную шестью плоскостями left, right, bottom, top, near, far
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
RSMatrixloadIdentity : MATR IDEDITY MATRIX
void rsmatrixloadientity ( rs_matrix2x2 * m); | |
void rsmatrixloadientity ( rs_matrix3x3 * m); | |
void rsmatrixloadientity ( rs_matrix4x4 * m); |
Параметры
м | Матрица для установки. |
---|
Установите элементы матрицы в матрицу личности.
rsmatrixloadmultiply : умножьте две матрицы
void rsmatrixloadmultiply ( rs_matrix2x2 * m, const rs_matrix2x2 * lhs, const rs_matrix2x2 * rhs); | |
void rsmatrixloadmultiply ( rs_matrix3x3 * m, const rs_matrix3x3 * lhs, const rs_matrix3x3 * rhs); | |
void rsmatrixloadmultiply ( rs_matrix4x4 * m, const rs_matrix4x4 * lhs, const rs_matrix4x4 * rhs); |
Параметры
м | Матрица для установки. |
---|---|
LHS | Левая матрица продукта. |
правый риск | Правая матрица продукта. |
Устанавливает M на матричный продукт lhs * rhs
.
Чтобы объединить две матрицы преобразования 4x4, умножьте вторую матрицу преобразования на первую матрицу преобразования. Например, чтобы создать матрицу преобразования, которая применяет преобразование S1, за которым следует S2, Call rsMatrixLoadMultiply(&combined, &s2, &s1)
.
Предупреждение: до версии 21 хранение результата обратно в правую матрицу не поддерживается и приведет к неопределенному поведению. Вместо этого используйте rsmatrixmulitply. Например, вместо того, чтобы делать rsmatrixloadmultiply (& m2r, & m2r, & m2l), используйте Rsmatrixmultiply (& M2R, & M2L). RSMatrixloadMultiply (& M2L, & M2R, & M2L) работает, как и ожидалось.
Rsmatrixloadortho : загрузить орфографическую проекционную матрицу
void rsmatrixloadortho ( rs_matrix4x4 * m, плавание влево, плавает вправо, внизу плавает, плавает, плавает рядом, плавает далеко); |
Параметры
м | Матрица для установки. |
---|---|
левый | |
верно | |
нижний | |
вершина | |
около | |
далеко |
Конструирует матрицу орфографической проекции, преобразуя коробку, идентифицированную шестью плоскостями, left, right, bottom, top, near, far
в кубик устройства с углом в (-1, -1, -1)
и противоположность (1, 1, 1)
.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
См.
RSMatrixloadperseperive : загрузить перспективную проекционную матрицу
void rsmatrixloadpersperive ( rs_matrix4x4 * m, float fovy, аспект плавания, плавание рядом, плавает далеко); |
Параметры
м | Матрица для установки. |
---|---|
Фови | Поле зрения, в градусах вдоль оси Y. |
аспект | Соотношение x / y. |
около | Рядом с самолетом отсечения. |
далеко | Самолет с дальней подключением. |
Создает перспективную проекционную матрицу, предполагая симметричное поле зрения.
Чтобы применить эту проекцию к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
RSMatrixLoadRotate : загрузите матрицу вращения
void rsmatrixloadrotate ( rs_matrix4x4 * m, плавучий гниль, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
гнить | Сколько вращения нужно сделать, в градусах. |
х | X компонент вектора, который является осью вращения. |
й | Y компонент вектора, который является осью вращения. |
я | Z -компонент вектора, который является осью вращения. |
Эта функция создает матрицу вращения. Ось вращения - вектор (x, y, z)
.
Чтобы повернуть вектор, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
См. Https://en.wikipedia.org/wiki/rotation_matrix.
RSMatrixLoadScale : загрузите матрицу масштабирования
void rsmatrixloadscale ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Множественные, чтобы масштабировать компоненты x. |
й | Множественные, чтобы масштабировать компоненты Y. |
я | Множественные, чтобы масштабировать компоненты Z. |
Эта функция создает матрицу масштабирования, где каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы масштабировать вектор, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
rsmatrixloadtranslate : загрузить матрицу перевода
void rsmatrixloadtranslate ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для установки. |
---|---|
х | Номер, чтобы добавить в каждый x компонент. |
й | Номер, чтобы добавить в каждый компонент Y. |
я | Номер для добавления в каждый z -компонент. |
Эта функция создает матрицу перевода, где число добавляется в каждый элемент вектора.
Чтобы перевести вектор, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
Rsmatrixmultiply : умножьте матрицу на вектор или другую матрицу
float2 rsmatrixmultiply (const rs_matrix2x2 * m, float2 in); | Добавлен на уровне API 14 |
float2 rsmatrixmultiply ( rs_matrix2x2 * m, float2 in); | Удален с уровня API 14 и выше |
float3 rsmatrixmultiply (const rs_matrix3x3 * m, float2 in); | Добавлен на уровне API 14 |
float3 rsmatrixmultiply (const rs_matrix3x3 * m, float3 in); | Добавлен на уровне API 14 |
float3 rsmatrixmultiply ( rs_matrix3x3 * m, float2 in); | Удален с уровня API 14 и выше |
float3 rsmatrixmultiply ( rs_matrix3x3 * m, float3 in); | Удален с уровня API 14 и выше |
float4 rsmatrixmultiply (const rs_matrix4x4 * m, float2 in); | Добавлен на уровне API 14 |
float4 rsmatrixmultiply (const rs_matrix4x4 * m, float3 in); | Добавлен на уровне API 14 |
float4 rsmatrixmultiply (const rs_matrix4x4 * m, float4 in); | Добавлен на уровне API 14 |
float4 rsmatrixmultiply ( rs_matrix4x4 * m, float2 in); | Удален с уровня API 14 и выше |
float4 rsmatrixmultiply ( rs_matrix4x4 * m, float3 in); | Удален с уровня API 14 и выше |
float4 rsmatrixmultiply ( rs_matrix4x4 * m, float4 in); | Удален с уровня API 14 и выше |
void rsmatrixmultiply ( rs_matrix2x2 * m, const rs_matrix2x2 * rhs); | |
void rsmatrixmultiply ( rs_matrix3x3 * m, const rs_matrix3x3 * rhs); | |
void rsmatrixmultiply ( rs_matrix4x4 * m, const rs_matrix4x4 * rhs); |
Параметры
м | Левая матрица продукта и матрицы, которая должна быть установлена. |
---|---|
правый риск | Правая матрица продукта. |
в |
Для матрицы по варианту матрицы устанавливает M на матричный продукт m * rhs
.
При объединении двух матриц преобразования 4x4 с использованием этой функции полученная матрица будет соответствовать выполнению преобразования RHS, с последующим исходным M -преобразованием.
Для матрицы от Vector Variant возвращает пост-мультиплизацию вектора матрицей, т.е. m * in
.
При умножении Float3 на RS_MATRIX4X4 вектор расширяется (1).
При умножении Float2 на RS_MATRIX4X4 вектор расширяется (0, 1).
При умножении Float2 на RS_MATRIX3X3 вектор расширяется (0).
Начиная с API 14, эта функция принимает константную матрицу в качестве первого аргумента.
RSMatrixRotate : примените вращение на матрицу преобразования
void rsmatrixRotate ( rs_matrix4x4 * m, float hrot, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
гнить | Сколько вращения нужно сделать, в градусах. |
х | X компонент вектора, который является осью вращения. |
й | Y компонент вектора, который является осью вращения. |
я | Z -компонент вектора, который является осью вращения. |
Умножьте матрицу M на матрицу вращения.
Эта функция изменяет матрицу преобразования, чтобы сначала сделать вращение. Ось вращения - вектор (x, y, z)
.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
Rsmatrixscale : примените масштабирование к матрице преобразования
void rsmatrixscale ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Множественные, чтобы масштабировать компоненты x. |
й | Множественные, чтобы масштабировать компоненты Y. |
я | Множественные, чтобы масштабировать компоненты Z. |
Умножьте матрицу M на матрицу масштабирования.
Эта функция изменяет матрицу преобразования, чтобы сначала сделать масштабирование. При масштабировании каждый компонент вектора умножается на число. Это число может быть отрицательным.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
rsmatrixset : установить один элемент
void rsmatrixset ( rs_matrix2x2 * m, uint32_t col, uint32_t row, float v); | |
void rsmatrixset ( rs_matrix3x3 * m, uint32_t col, uint32_t row, float v); | |
void rsmatrixset ( rs_matrix4x4 * m, uint32_t col, uint32_t row, float v); |
Параметры
м | Матрица, которая будет изменена. |
---|---|
столбец | Столбец на основе нуля элемента, который будет установлен. |
ряд | Ноль строка элемента будет установлен. |
в | Значение для установки. |
Установите элемент матрицы.
ПРЕДУПРЕЖДЕНИЕ: Порядок столбца и параметров строки может быть неожиданным.
Rsmatrixtranslate : примените перевод к матрице преобразования
void rsmatrixtranslate ( rs_matrix4x4 * m, float x, float y, float z); |
Параметры
м | Матрица для изменения. |
---|---|
х | Номер, чтобы добавить в каждый x компонент. |
й | Номер, чтобы добавить в каждый компонент Y. |
я | Номер для добавления в каждый z -компонент. |
Умножьте матрицу M на матрицу перевода.
Эта функция изменяет матрицу преобразования, чтобы сначала сделать перевод. При переводе в каждый компонент вектора добавляется число.
Чтобы применить это комбинированное преобразование к вектору, умножьте вектор на созданную матрицу, используя rsmatrixmultiply ().
Rsmatrixtranspose : Transpepe A Matrix Place
void rsmatrixtranspose ( rs_matrix2x2 * m); | |
void rsmatrixtranspose ( rs_matrix3x3 * m); | |
void rsmatrixtranspose ( rs_matrix4x4 * m); |
Параметры
м | Матрица для транспонирования. |
---|
Транспонировать матрицу М на месте.