|
|
发表于 2008-2-1 17:57:00
|
显示全部楼层
Re:snhun进!有问题请教
如果要想“绝对公平”,就是按照你的意思,让4:3比例的玩家和16:10的玩家都看到同样面积?
OK!
没问题。
最先得出宽高比 ration=wid/hei;//这个好理解
然后设置投影的时候用以下方法:
gluPerspective(sqrt(1200/ration),ration,0.5,500);
因为,屏幕面积=屏幕宽度x屏幕高度,而且,屏幕宽度=屏幕高度x宽高比(就是ration)
所以,我们设置一个1200的定值,作为“公平的面积”。
那么,宽x高=1200,且,宽=高x宽高比。
得出,高=平方根(1200/宽高比)
在 4比3的屏幕上,得出“高”=30度。那么“宽”就=40度了。
在 16比10的屏幕上,得出“高”=27.386度左右,“宽”=43.818度左右。
你看,4比3的时候,上下看多一点,左右看少一点。16比10的时候,左右看多一点,上下看少一点。
这只是用角度来算的一个“粗略的计算”。如果要算准确的,那得用“投影面积”来算。要用到arctan函数。
祝你好运! |
|