D3DXPlaneTransform 함수(D3DX10Math.h)
참고
D3DX10 유틸리티 라이브러리는 더 이상 사용되지 않습니다. 대신 DirectXMath 를 사용하는 것이 좋습니다.
행렬로 평면을 변환합니다. 입력 행렬은 실제 변환의 역변환입니다.
구문
D3DXPLANE* D3DXPlaneTransform(
_Inout_ D3DXPLANE *pOut,
_In_ const D3DXPLANE *pP,
_In_ const D3DXMATRIX *pM
);
매개 변수
-
pOut [in, out]
-
형식: D3DXPLANE*
결과 변환된 평면을 포함하는 D3DXPLANE 에 대한 포인터입니다. 예제를 참조하세요.
-
pP [in]
-
형식: const D3DXPLANE*
변환할 평면을 포함하는 입력 D3DXPLANE 구조체에 대한 포인터입니다. 평면을 설명하는 벡터(a,b,c)는 이 함수가 호출되기 전에 정규화되어야 합니다. 예제를 참조하세요.
-
pM [in]
-
형식: const D3DXMATRIX*
변환 값을 포함하는 원본 D3DXMATRIX 구조체에 대한 포인터입니다. 이 행렬은 변환 값의 역변환을 포함해야 합니다.
반환 값
형식: D3DXPLANE*
변환된 평면을 나타내는 D3DXPLANE 구조체에 대한 포인터입니다. 이 함수를 다른 함수의 매개 변수로 사용할 수 있도록 pOut 매개 변수에 반환된 값과 동일합니다.
설명
예제
다음은 균일하지 않은 배율을 적용하여 평면을 변환하는 예제입니다.
D3DXPLANE planeNew;
D3DXPLANE plane(0,1,1,0);
D3DXPlaneNormalize(&plane, &plane);
D3DXMATRIX matrix;
D3DXMatrixScaling(&matrix, 1.0f,2.0f,3.0f);
D3DXMatrixInverse(&matrix, NULL, &matrix);
D3DXMatrixTranspose(&matrix, &matrix);
D3DXPlaneTransform(&planeNew, &plane, &matrix);
평면은 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에는 변환 매트릭스의 역변환이 포함됩니다. 변환된 평면의 일반 벡터도 올바르게 변환할 수 있도록 이 메서드에서 역변환이 필요합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 |
|
라이브러리 |
|
추가 정보