|
|
模拟飞行空降-----模拟飞行的模拟空气动力学 一
此文献给本论坛的各位,看着各位吵架中,不知不觉地还喜欢上了这论坛,也真是厉害,吵架吵出花来的还真是少有,都出马甲了,不过比起其他论坛的吵架之风真是文气,毕竟都是读书人,翩翩不失君子之风,不会说些什么失体之话。不过大家吵归吵,技术仍然让大家提高,许多学贴也照样发,在加上一些友情客串的热心人,真学了不少东西,(要感谢蜜蜂巢,出此文之初缘于他写的OPENGL的入门基础),本人说话比较损人,可能和以前学过心理学有关系,能看到人的内心深处,有时候都觉得很过分,出此文献给大家,希望大家见谅。 此文并非有什么高升的数学知识,对大家只能算是个引导,本人对空气动力学了解也不是很多,但是我觉得如果既然是写游戏,只要能够模拟出飞行的效果就行了,真正的玩家实际上很少有机会体会蓝天翱翔的感觉,如果有人第一次玩你的飞行游戏的话,那么恭喜你,即使你把开飞机做得和开极品飞车一样,他也不会怀疑,还可能会想:如果我把我的汽车方向盘改成摇杆,那么我肯定是一个优秀的飞行员。
好了,我也是废话比文化还多,开始正题吧。
在模拟飞行中,空气动力学是主要的计算方法,其中涉及到的许多方面的知识我们可以忽略,只取其中最重要的,如图所示:
我们先不考虑它是一架飞机,而是一张飞机图片,我们给它定位一个坐标(x,y),那么如果它的飞行状态就由这个坐标控制plane.x 和 plane.y ,那么这架飞机的移动就是plane.x=plane.x+A 和 plane.y=plane.y+B ,因此,我们只要控制着A的数值那么就是飞机的升和降,从坐标中定义的坐标看出,+A是爬升,-A是下降,而B中,因为飞机不可能后退,那么它肯定是个正数,它代表着飞机的速度。好了现在有了大概的数值那么我们来定义它们的最大限度和最低限度(不这么做的话,你的飞机要不就象火箭,要不就象蜗牛),我要做的是模拟飞行空降,那么不考虑太大的环境,先重实际来看,一架客机降落的瞬间速度和F1方程式赛车的最大速度是一样的,就是300km左右,降落距离和高度我们得以最佳路线来考虑,假设是3000尺高度3000米距离,正方形的降落方法对角线是45度,这个角度太高,会插地上的,应该小于30度,那么距离应该是高度的一倍以上,那么我们就定为高度3000尺,距离6000米,太远了,1500尺,3000米正好,速度300km还有个飞机仰角,30度-45度之间,值,我们就以这个数据是标准数据。1500尺飞多长时间?1500/(300*1000)=18秒(过程略)太快了,火箭,实际上这个速度是参照速度可以改变的,游戏中,3分钟飞到正好,那么我们来算A的最小值1500/180=8.3左右,就是说,地图2000大小,一秒移动8.3的象素,OK。基本数据都出来了,那么开始最重要的分析,飞机移动计算。
写不动了,改天在写,以上所有数据是经过java测试过的(学习java中),等我把其他的数值计算好了再贴给大家。
[em5] [em5] [em5] [em5] [em5] [em5] [em5] |
|