본문 바로가기

프로그래밍 -----------------------/C,C++ 팁

[D3DBASIC] 평면의 방정식 간단한 정리



어떤 평면이 바라보는 법선 벡터 a,b,c와 평면상의 임의의 점 x, y, z와

원점 0,0,0 이 있을 경우 평면 방정식은 

ax + by + cz + d = 0 과 같다. 

여기서 x, y, z는 평면에 존재하는 무수히 많은 점들중 한개의

좌표 값이며, 이 점 x, y, z로 vector va 와 vector vb를 만들고,

va, 와 vb를 외적 cross product 연산을 해서 나온 평면의 법선 벡터

a, b, c 를 연산 하면 된다.

여기서 중요한 점은 법선 벡터는 nomalize된 vector 라야 한다. 

d = -(ax + by + cz) 

d3d 함수는  

D3DXPLANE *D3DXPlaneFromPoints( D3DXPLANE *pOut,

                                                     CONST D3DXVECTOR3 *pV1,

                                                     CONST D3DXVECTOR3 *pV2,

                                                     CONST D3DXVECTOR3 *pV3

                                                   );

 

ax + by + cz + d = 0 : 점이 평면상에 존재 한다.

ax + by + cz + d > 0 : 원점을 바라보는 평면이 있을 때 점이 평면 과 원점 사이에 존재 한다.

ax + by + cz + d < 0 : 점이 평면 뒤에 존재 한다.