0
我想在我的游戏中进行一种鱼眼剔除。因此,对于列出的每个对象进行绘制,我想检查是否处于相机的黑暗中。 我这样做:三维空间中两个向量之间的角度
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)得出什么:( ,如果是我的角度计算,或者是我不舒尔漂浮问题:(任何
因为看起来你需要大量的矢量计算,所以你可能需要使用像Boost这样的库。 –
nvm我被推迟了。 – Machiaweliczny
请注意atan2版本更精确http://www.mathworks.com/matlabcentral/answers/16243-angle-between-two-vectors-in-3d – mrgloom