어떤 평면이 바라보는 법선 벡터 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 : 점이 평면 뒤에 존재 한다.
'프로그래밍 ----------------------- > C,C++ 팁' 카테고리의 다른 글
SetRenderState 정리 (0) | 2008.10.13 |
---|---|
2바이트케릭터 <-> 1바이트케릭터 문자열 변환 (0) | 2008.10.13 |
평면의방정식을 이용한 면<->점 충돌채크 (0) | 2008.10.13 |
내적이란거 (0) | 2008.10.13 |
윈도우에서 사용하는 문자 코드에 대한 이해 (0) | 2008.10.13 |