我想在我的游戏中进行鱼眼剔除。因此,对于列出的每个要绘制的对象,我想检查是否在相机的截锥体中。我这样做:
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)在任何地方都可以绘制,但没有我想要的地方,所以鱼眼是空的。!(angle < 50.0f) 画出我想要的。但是(角度<40)什么也没画:(如果是我的角度计算还是浮动问题,我不放心:(有人吗?