Функция D3DXPlaneTransformArray (D3DX10Math.h)

Примечание

Служебная библиотека D3DX10 устарела. Вместо этого рекомендуется использовать DirectXMath .

Преобразует массив плоскостей матрицей. Векторы, описывающие каждую плоскость, должны быть нормализованы.

Синтаксис

D3DXPLANE* D3DXPlaneTransformArray(
  _Inout_       D3DXPLANE  *pOut,
  _In_          UINT       OutStride,
  _In_    const D3DXPLANE  *pP,
  _In_          UINT       PStride,
  _In_    const D3DXMATRIX *pM,
  _In_          UINT       n
);

Параметры

pOut [in, out]

Тип: D3DXPLANE*

Указатель на структуру D3DXPLANE , содержащую итоговую преобразованную плоскость. См. пример.

OutStride [in]

Тип: 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 содержит обратное транспонирование матрицы преобразования. Этот метод требует обратного транспонирования, чтобы можно было правильно преобразовать нормальный вектор преобразованной плоскости.

Требования

Требование Значение
Заголовок
D3DX10Math.h
Библиотека
D3DX10.lib

См. также раздел

Математические функции