내 게임에서 물고기 눈 갈퀴를하고 싶습니다. 그래서 각 객체를 그리기 위해 내가 카메라의 절정에 있는지 확인하고 싶습니다. 내가 이런 식으로 수행3D 공간에서 두 벡터 사이의 각도
D3DXVECTOR3 cameraPos;
D3DXVECTOR3 pos;
D3DXVECTOR3 cameraVector;//where camera is looking(camera->eye() - camera->pos())
D3DXVECTOR3 direction = pos - cameraPos;
normalize(&direction);
normalize(&cameraVector);
float dot = cameraVector.x * direction.x + cameraVector.y * direction.y + cameraVector.z * direction.z;
//float cosvalue = cos(dot); // i was calculatin cos of cos :)
float cosvalue = dot;
float angle = acos (cosvalue) * 180.0f/PI;
if(angle < 45.0f) draw();
을하지만 이상한 결과를 얻을 수 있습니다. 예를 들어 (각도 < 50.0f) 어디에나 그려 지지만 원하는 곳은 없으므로 물고기 눈이 비어 있습니다. ! (각도 < 50.0f)는 내가 원하는 것을 그려냅니다. 그러나 (각 < 40) 내 각 계산의 나입니다 경우는 슈어 아니에요 :( 아무 문제 :(누구나 수레하지립니다
어쨌든 많은 벡터 계산이 필요해 보이므로 부스트와 같은 라이브러리를 사용하고 싶을 수 있습니다. –
nvm 지연됨. – Machiaweliczny
atan2 버전이 더 정확합니다. http://www.mathworks.com/matlabcentral/answers/16243-angle-between-two-vectors-in-3d – mrgloom