[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..
더보기
billboard에서 D3DXMatrixInverse()
Y축 고정된 빌보드 카메라의 Y축 회전값 -> D3DXMATRIX의 _11, _13, _31, _33 m_vEye = *pvEye; m_vLookat = *pvLookat; m_vUp = *pvUp; D3DXVec3Normalize( &m_vView, &( m_vLookat - m_vEye ) ); //카메라의 위치부터 바라보는목표점까지의 거리... D3DXVec3Cross( &m_vCross, &m_vUp, &m_vView ); //m_vCross카메라위치의 x축벡터 D3DXMatrixLookAtLH( &m_matView, &m_vEye, &m_vLookat, &m_vUp); D3DXMatrixInverse( &m_matBill, NULL, &m_matView ); m_matBill._41 = 0.0f..
더보기
내적 외적
내적 [內積, inner product] 네이버 백과사전 스칼라곱(scalar product)이라고도 한다. 영(零)벡터가 아닌 두 벡터 x,y의 크기 |x|,|y|와 x,y가 이루는 각 θ의 cos과의 곱 |x||y|cos θ를 x,y의 내적이라 하고, x ·y 또는 (x,y)로 나타낸다. 즉, x ·y=(x,y)=|x||y|cos θ x=0 또는 y=0일 때는 x ·y=0이라 정한다. 기하학적으로는 [그림]의 |x|cos θ와 |y|를 곱한 값이 된다. 내적의 성질로는 ① 교환법칙 x ·y= y ·x, ② 1개의 스칼라 α에 대하여 결합법칙 (αx) ·y=α(x ·y), ③ 배분법칙 x ·(y+x)=x ·y+x ·x, ④ 벡터의 수직조건, x와 y가 수직이면 x ·y=0이 성립한다. 또, x ·x= ..
더보기