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 結構的指標,其中包含要轉換的平面陣列。 在呼叫此函式之前,必須先正規化描述平面的向量 (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,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

另請參閱

數學函式