Fungsi D3DXPlaneTransformArray (D3dx9math.h)

Catatan

Pustaka utilitas D3DX tidak digunakan lagi. Kami menyarankan agar Anda menggunakan DirectXMath sebagai gantinya.

Mengubah array bidang dengan matriks. Vektor yang menggambarkan setiap bidang harus dinormalisasi.

Sintaks

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

Parameter

pOut [masuk, keluar]

Jenis: D3DXPLANE*

Penunjuk ke struktur D3DXPLANE yang berisi bidang transformasi yang dihasilkan. Lihat Contoh.

OutStride [out]

Jenis: UINT

Langkah masing-masing bidang yang diubah.

pP [in]

Jenis: const D3DXPLANE*

Arahkan ke struktur input D3DXPLANE , yang berisi array bidang yang akan diubah. Vektor (a,b,c) yang menjelaskan bidang harus dinormalisasi sebelum fungsi ini dipanggil. Lihat Contoh.

PStride [in]

Jenis: UINT

Langkah dari setiap bidang yang tidak diubah.

pM [in]

Jenis: const D3DXMATRIX*

Penunjuk ke struktur D3DXMATRIX sumber, yang berisi urutan terbalik dari nilai transformasi.

n [in]

Jenis: UINT

Jumlah bidang yang akan diubah.

Nilai kembali

Jenis: D3DXPLANE*

Penunjuk ke struktur D3DXPLANE , mewakili bidang yang diubah. Ini adalah nilai yang sama yang dikembalikan dalam parameter pOut sehingga fungsi ini dapat digunakan sebagai parameter untuk fungsi lain.

Keterangan

Contoh ini mengubah satu bidang dengan menerapkan skala yang tidak seragam.

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

Bidang dijelaskan oleh ax + by + cz + dw = 0. Bidang pertama dibuat dengan (a,b,c,d) = (0,1,1,0), yang merupakan bidang yang dijelaskan oleh y + z = 0. Setelah penskalakan, bidang baru berisi (a,b,c,d) = (0, 0,353f, 0,235f, 0), yang menunjukkan bidang baru yang akan dijelaskan oleh 0,353y + 0,235z = 0.

Parameter pM berisi urutan terbalik dari matriks transformasi. Transpose terbalik diperlukan oleh metode ini sehingga vektor normal dari bidang yang diubah juga dapat diubah dengan benar.

Persyaratan

Persyaratan Nilai
Header
D3dx9math.h
Pustaka
D3dx9.lib

Lihat juga

Fungsi matematika

D3DXPlaneNormalize

D3DXMatrixRotationX

D3DXMatrixRotationY

D3DXMatrixRotationZ

D3DXMatrixInverse

D3DXMatrixTranspose