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 );
평면은 + cz + dw = 0으로 ax +로 설명됩니다. 첫 번째 평면은 y + z = 0으로 설명된 평면인 (a,b,c,d) = (0,1,1,0)로 만들어집니다. 크기 조정 후 새 평면에는 (a,b,c,d) = (0, 0.353f, 0.235f, 0)가 포함됩니다. 이 평면은 0.353y + 0.235z = 0으로 설명될 새 평면을 보여 줍니다.
매개 변수 pM 에는 변환 행렬의 역변환이 포함됩니다. 변환된 평면의 일반 벡터도 올바르게 변환할 수 있도록 이 메서드에서 역변환이 필요합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|
추가 정보