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으로 설명됩니다. 첫 번째 평면은 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에는 변환 매트릭스의 역변환이 포함됩니다. 변환된 평면의 일반 벡터도 올바르게 변환할 수 있도록 이 메서드에서 역변환이 필요합니다.

요구 사항

요구 사항
헤더
D3DX10Math.h
라이브러리
D3DX10.lib

추가 정보

수학 함수