본문 바로가기

평면

[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.. 더보기
내적이란거 내적, 처음 봤을 때는 이런 해괴한 걸 어따 쓰냐라고 생각했었는데 공부를 해가면서, 특히 다른 사람들이 내적을 활용하는 것을 접하면서 내적이란 거 정말 대단한 녀석이구나;라는 것을 매번 느끼게 된다. (나란 녀석은 사소한 것에 잘 감동한다. ㅎㅎ) 이번에 놀란 내용은 내적을 이용하여 점과 평면과의 거리를 구하는 것이다. 흔히 알고 있는 공식은 위와 같다. 이래저래 복잡하다. 하지만 내적을 사용할 경우에는 평면 위의 임의의 점 하나와 평면 노멀, 그리고 거리를 알고자 하는 점만 있으면 된다. 주의할 점은 여기서 노멀은 노멀라이징되어야 한다. 거리 = |(다른점-평면위의점)·평면노멀| 글쎄, 내적을 공부한 사람이라면 누구나 알만큼 단순하다. 아니, 이미 이론적으로는 알고 있을터. 단지 그것을 실제로 활용하는.. 더보기
평면의 방정식, 평면의 공간적 해석 그래픽스에 관해 공부하면서 자주 부닥치게 되는 평면의 방정식! 맨나말 부딪힐 때마다 관련서적을 가볍게 훓고 넘어가는 터라 다음에 다시 평면의 방정식과 부딪히면 항상 또 책을 펼치고 마는 비생산적인 행위가 반복된다. 이번엔 좀 제발 외우고 넘어가야 겠다. 3차원에서 평면은 평면의 방정식으로 해석이 가능하다. 이 방정식등을 이용하여 공간상의 교차판정, 평면의 Normal, 평면의 전후면 판별등이 가능하다. 평면의 방정식은 다음과 같다. ax + by + cz + d = 0 즉, a, b, c는 평면안에 속해 있는 임의의 세 점을 선분으로 이은 두 벡터의 외적을 구한 후, 그 외적으로 부터 도출된 벡터의 세 성분이 되며, d는 위에서 언급했던 두 벡터의 내적으로서 구할 수 있다. Tip))) 1. 위에서 외적.. 더보기