Функция D3DXPlaneTransformArray (D3dx9math.h)
Примечание
Служебная библиотека D3DX устарела. Вместо этого рекомендуется использовать DirectXMath .
Преобразует массив плоскостей матрицей. Векторы, описывающие каждую плоскость, должны быть нормализованы.
Синтаксис
D3DXPLANE* D3DXPlaneTransformArray(
_Inout_ D3DXPLANE *pOut,
_Out_ UINT OutStride,
_In_ const D3DXPLANE *pP,
_In_ UINT PStride,
_In_ const D3DXMATRIX *pM,
_In_ UINT n
);
Параметры
-
pOut [in, out]
-
Тип: D3DXPLANE*
Указатель на структуру D3DXPLANE , содержащую итоговую преобразованную плоскость. См. пример.
-
OutStride [out]
-
Тип: UINT
Шаг каждого преобразованного плоскости.
-
pP [in]
-
Тип: const D3DXPLANE*
Указатель на входную структуру D3DXPLANE , которая содержит массив плоскостей для преобразования. Вектор (a,b,c), описывающий плоскость, должен быть нормализован перед вызовом этой функции. См. пример.
-
PStride [in]
-
Тип: UINT
Шаг каждой не преобразованной плоскости.
-
pM [in]
-
Тип: const D3DXMATRIX*
Указатель на исходную структуру D3DXMATRIX , которая содержит обратное транспонирование значений преобразования.
-
n [in]
-
Тип: UINT
Количество плоскостей для преобразования.
Возвращаемое значение
Тип: D3DXPLANE*
Указатель на структуру D3DXPLANE , представляющую преобразованную плоскость. Это то же значение, которое возвращается в параметре POut , поэтому эту функцию можно использовать в качестве параметра для другой функции.
Комментарии
В этом примере показано преобразование одной плоскости путем применения неоднородной шкалы.
#define ARRAYSIZE 4
D3DXPLANE planeNew[ARRAYSIZE];
D3DXPLANE plane[ARRAYSIZE];
for(int i = 0; i < ARRAYSIZE; i++)
{
plane = D3DXPLANE( 0.0f, 1.0f, 1.0f, 0.0f );
D3DXPlaneNormalize( &plane[i], &plane[i] );
}
D3DXMATRIX matrix;
D3DXMatrixScaling( &matrix, 1.0f, 2.0f, 3.0f );
D3DXMatrixInverse( &matrix, NULL, &matrix );
D3DXMatrixTranspose( &matrix, &matrix );
D3DXPlaneTransformArray( &planeNew, sizeof (D3DXPLANE), &plane,
sizeof (D3DXPLANE), &matrix, ARRAYSIZE );
Плоскость описывается ax + by + cz + dw = 0. Первая плоскость создается с помощью (a,b,c,d) = (0,1,1,0), которая является плоскостью, описанной y + z = 0. После масштабирования новая плоскость содержит (a,b,c,d) = (0, 0,353f, 0,235f, 0), которая показывает новую плоскость для описания 0,353y + 0,235z = 0.
Параметр pM содержит обратное транспонирование матрицы преобразования. Этот метод требует обратного транспонирования, чтобы можно было правильно преобразовать нормальный вектор преобразованной плоскости.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел