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

Remarks

В этом примере выполняется преобразование одной плоскости путем применения неоднородной шкалы.

#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 );

Плоскость описывается топором + по + 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

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

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