[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..
더보기
평면의방정식을 이용한 면<->점 충돌채크
// 노멀값을 구하기 위한 벡터 빼기 순서 // 루프를 돌려서 처리하고 싶기에 이렇게 인덱스를 만듬 // 면 0 1 2 3 4 5 WORD wIndex[] = { 2, 3, 4, /* | */ 5, 7, 6, 3, 4, 2, /* | */ 7, 6, 5}; // 폴리곤의 법선을 구한다. D3DXVECTOR3 vV1,vV2; float d1,d2,dir; int nCnt=0; int nCollCount=0; // 충돌한 면의 카운트 for(j=0; j=3) nCnt=1; // 세점에서 법선 구하기 vV1 = vPoint[ wIndex[j] ] - vPoint[ nCnt ]; vV2 = vPoint[ wIndex[j+6] ] - vPoint[ nCnt ]; D3DXVec3Cross(&vNormal[j],&v..
더보기