欢迎来到天天文库
浏览记录
ID:33401256
大小:286.07 KB
页数:15页
时间:2019-02-25
《ai游戏人工智能浓缩版(袖珍考试参考)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一.追逐与闪躲Bresenham算法的原理是,计算每一点与终点之间的的横轴与纵轴,然后比较两轴的长度,哪个轴比较长,就往该方向前进,如果两轴等长,则往斜边前进。if(deltaCol>deltaRow){fraction=deltaRow*2-deltaCol;while(nextCol!=endCol){if(fraction>=0){nextRow+=stepRow;fraction-=deltaCol:}nextCol+=stepCol;fraction+=deltaRow;pathRow[currentstep]=nextRow;p
2、athCol[currentStep]=nextCol:currentstep++;}}else{fraction=deltaCol*2-deltaRow;while(nextRow!=endRow){if(fraction>=0){nextCol+=stepCol;fraction-=deltaRow:}nextRow+=stepRow;fraction+=deltaCol;pathRow[currentStep]=nextRow;pathCol[currentStep]=nextCol:currentstep++;}}}连续环境中的视线
3、算法:在函数屮定义了4的局部变戢。u和是Vector类型的,Vector类是一个自定义类(见附录A),负责处理基本向最算术,比如向最加法,减法,数最积,交叉乘积,和苴他操作。另两个局部变戢是一对布尔变戢,left和righto它们是用来分析哪个操纵力启动,两个初始都是false。定义局部变最的下一行是计算从掠夺者到被掠夺者的视线。实际上,这条线不仅仅是计算线的位灵。它还会计算宏观上掠夺者到被掠夺者之间相对位出•的向量,通过使用代码(Prey.vPosition-Predator.vPosition)»然后把结果向量传递给VRotate2D函
4、数,把它转换成掠夺者本地,本体坐标。VRotate2D表现成一个标准的结合系统,把有关earth-fixed的系统转换成bodyfixed对应系统方向(看下边的“全局与局部坐标系统”结果保存在u里,然后规格化u即(u.Normalize()),把它转换成单位长度向量。最后一行代码调用刚性体类的SetThrusters成员函数,在模拟循环的当前反复中为掠夺者提供转向力。voidDoLineOfSightChase(void){Vectoru,v;boolleft=false:boolright=false;u=VRotate2D(-Preda
5、tor.fOrientation,(Prey.yPosition-Predator・vPosition));u.NormalizeO:if(u.x<-_TOL)left=true:elseif(u.x>_TOL)right=true:Predator・SetThrusters(left,right);是45度,可见区域}二.群聚规则首先根据角度检测,对于不同的视野检测方法是不同的(比如,宽视野,窄视野),下面的例宽广视野的检测•计算d=目标单位位宙.-当刖单位位灵,W为d以目标单位反方向的坐标系中的向戢坐标。•如果w.y>0,则目标单位必然
6、在视野范围内。•如果w.y<0,则耍看x,y坐标构成的线段斜率,是否在设定的视野区域Z外,如果fabs(w.x)>fab(w.y)*BACKVIEWANGLEFACTOR,则目标单位在视野范围内。其中的BACK_VIEWANGLEFACTOR就是视野和度系数。该系数等于1时,视野弧线的直线与x轴夹用该系数越大,两条线越接近x轴,不可见区域越大,反之,系数越小,两条线越接近y轴,不越小。视野检查if(WideView)〃宽广视野的检査{InView=((w.y>0)
7、
8、((w.y<0)&&(fabs(w.x)>fabs(w.y)*BACKVI
9、EWANGLEFACTOR)));RadiusFactor=_WIDEVIEWRADIUS_FACTOR:}if(Limitedview)//有限视野的检查{InView=(w.y>0):RadiusFactor=_LIMITEDVIEWRADIUS_FACTOR:}if(NarrowView)//狭窄视野的检查{InView(((w.y>口)&&(fabs(w.x)10、inti){intj:intN;//邻近单位数最VectorPave;//平均位贸向虽VectorVave;//乎均速度向最VectorFs;//总净转向力VectorPfs;/
10、inti){intj:intN;//邻近单位数最VectorPave;//平均位贸向虽VectorVave;//乎均速度向最VectorFs;//总净转向力VectorPfs;/
此文档下载收益归作者所有