본문 바로가기

벡터

[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.. 더보기
내적이란거 내적, 처음 봤을 때는 이런 해괴한 걸 어따 쓰냐라고 생각했었는데 공부를 해가면서, 특히 다른 사람들이 내적을 활용하는 것을 접하면서 내적이란 거 정말 대단한 녀석이구나;라는 것을 매번 느끼게 된다. (나란 녀석은 사소한 것에 잘 감동한다. ㅎㅎ) 이번에 놀란 내용은 내적을 이용하여 점과 평면과의 거리를 구하는 것이다. 흔히 알고 있는 공식은 위와 같다. 이래저래 복잡하다. 하지만 내적을 사용할 경우에는 평면 위의 임의의 점 하나와 평면 노멀, 그리고 거리를 알고자 하는 점만 있으면 된다. 주의할 점은 여기서 노멀은 노멀라이징되어야 한다. 거리 = |(다른점-평면위의점)·평면노멀| 글쎄, 내적을 공부한 사람이라면 누구나 알만큼 단순하다. 아니, 이미 이론적으로는 알고 있을터. 단지 그것을 실제로 활용하는.. 더보기