当前位置: 首页 > news >正文

医院网站建设招标公告wordpress 报表

医院网站建设招标公告,wordpress 报表,中山市企业网站建设,网易云服务器在上一篇里#xff0c;我们学习了“自主角色”的一些基本行为#xff1a;寻找(seek)、避开(flee)、到达(arrive)、追捕(pursue)、躲避(evade)、漫游(wander)。这一篇将继续学习其它更复杂#xff0c;更高级的行为。 一、对象回避(object avoidance) 对象回避的正式解释为我们学习了“自主角色”的一些基本行为寻找(seek)、避开(flee)、到达(arrive)、追捕(pursue)、躲避(evade)、漫游(wander)。这一篇将继续学习其它更复杂更高级的行为。 一、对象回避(object avoidance) 对象回避的正式解释为角色预测出对象的行动路径然后避开他们。 也可以通俗的描述为假如有一个灰太狼抓喜羊羊的游戏场景“喜羊羊在草地上四处游荡的时候要尽量避免被随处找羊的灰太狼抓住。好象听起来并不复杂跟前面提到的避开(flee)或躲避(evade)甚至第一章提到的碰撞检测差不多只要调头走开、改变路线甚至检测这二者是否发生碰撞即可。 但如果仔细考虑的话这个并不象上面想的这么简单如果“羊”跟“狼”的距离足够远(或者“狼”运动得太慢)以至于“狼”在预测的时间范围内根本不可能抓住“羊”那么“羊”可能根本无需调整方向或仅需做小的调整如果“狼”突然出现在离“羊”很近的地方“羊”做出的反应是急转90度换个方向跑开。问为什么不是转180度反方向跑呢答如果大家经常看动物世界里非洲草原上“猎豹追羚羊的片段应该就能理解了大多数情况下急转弯比反向跑更能有效避开觅食者另外该行为的另一个特征是预测可能要发生的碰撞而非实际发生的碰撞所以碰撞检测也不太适合。 ok直接看算法示意图吧 首先把目标障碍物体认为是一个有半径范围的圆形对象(当然这是一种简化问题的理想模型) 然后得出自己与目标的距离向量difference 接下来将自身的速度向量单位化得到单位向量header即长度为1且与速度同方向的向量 计算header与difference的点积(也叫点乘、内积、标量积)得到一个值dotProd |header| * |difference| * cos(θ) |difference| * cos(θ) (注header为单位向量大小为1所以可省去)很明显如果该值小于0则表示障碍物就在前方准备做调整 将header放大一个系数模拟出自身的触角feeler(相当于物体自身向前方伸出去一个触须试探试探) 将difference投影在feeler上得到向量projection并进一步得到距离dist(即projection末端与difference末端的距离) 如果dist小于圆半径且projection长度小于feeler的长度即触角碰到了目标了则转90度逃开 private var _avoidDistance:Number300;//发现障碍物的有效视野 private var _avoidBuffer:Number20;//机车在准备避开时自身和障碍物间的预留距离。public function set avoidDistance(value:Number):void {_avoidDistancevalue; } public function get avoidDistance():Number {return _avoidDistance; }public function set avoidBuffer(value:Number):void {_avoidBuffervalue; } public function get avoidBuffer():Number {return _avoidBuffer; }//对象回避 public function avoid(circles: Array):void {for (var i: int0; i circles.length; i) {var circle:Circlecircles[i] as Circle;var heading:Vector2D_velocity.clone().normalize();// 障碍物和机车间的位移向量var difference:Vector2Dcircle.position.subtract(_position);var dotProd:Numberdifference.dotProd(heading);// 如果障碍物在机车前方if (dotProd0) {// 机车的“触角”var feeler:Vector2Dheading.multiply(_avoidDistance);// 位移在触角上的映射var projection:Vector2Dheading.multiply(dotProd);// 障碍物离触角的距离var dist:Numberprojection.subtract(difference).length;// 如果触角在算上缓冲后和障碍物相交// 并且位移的映射的长度小于触角的长度// 我们就说碰撞将要发生需改变转向if (dist circle.radius _avoidBuffer projection.length feeler.length) {// 计算出一个转90度的力var force:Vector2Dheading.multiply(_maxSpeed);force.angledifference.sign(_velocity)*Math.PI/2;// 通过离障碍物的距离调整力度大小使之足够小但又能避开forceforce.multiply(1.0-projection.length/feeler.length);// 叠加于转向力上_steeringForce_steeringForce.add(force);// 刹车——转弯的时候要放慢机车速度离障碍物越接近刹车越狠。_velocity_velocity.multiply(projection.length/feeler.length);}}} }将以上代码加入SteeredVehicle.as当然在测试前还要有一个Circle类来模拟障碍物 package {import flash.display.Sprite;public class Circle extends Sprite {private var _radius:Number;private var _color:uint;private var _vx:Number;private var _vy:Number;public function Circle(radius:Number, color:uint 0x000000) {_radiusradius;_colorcolor;graphics.lineStyle(0, _color);graphics.beginFill(_color);graphics.drawCircle(0, 0, _radius);graphics.endFill();}public function get radius():Number {return _radius;}public function get position():Vector2D {return new Vector2D(x, y);}public function get vx():Number {return _vx;}public function set vx(value:Number):void {_vx value;}public function get vy():Number {return _vy;}public function set vy(value:Number):void {_vy value;}} }测试 package {import flash.display.Sprite;import flash.display.StageAlign;import flash.display.StageScaleMode;import flash.events.Event;public class AvoidTest extends Sprite {private var _vehicle:SteeredVehicle;private var _circles:Array;private var _numCircles:int5;public function AvoidTest():void {stage.alignStageAlign.TOP_LEFT;stage.scaleModeStageScaleMode.NO_SCALE;_vehicle new SteeredVehicle(0xff0000);_vehicle.edgeBehaviorVehicle.BOUNCE;addChild(_vehicle);//初始化障碍物_circles new Array();for (var i:int 0; i _numCircles; i) {var c:Circlenew Circle(Math.random()*3015,0x0000ff);c.xMath.random()*stage.stageWidth;c.yMath.random()*stage.stageHeight;c.vxMath.random()-0.5;c.vyMath.random()-0.5;if (c.xc.radius) {c.xc.radius;} else if (c.xstage.stageWidth-c.radius) {c.xstage.stageWidth-c.radius;}if (c.yc.radius) {c.yc.radius;} else if (c.ystage.stageHeight-c.radius) {c.ystage.stageHeight-c.radius;}addChild(c);_circles.push(c);}addEventListener(Event.ENTER_FRAME, onEnterFrame);}private function onEnterFrame(e:Event):void { _vehicle.wander();//处理障碍物的运动以及边界反弹for (var i:int 0; i _numCircles; i) {var c:Circle_circles[i] as Circle;c.xc.vx;c.yc.vy;if (c.xc.radius) {c.xc.radius;c.vx*-1;} else if (c.xstage.stageWidth-c.radius) {c.xstage.stageWidth-c.radius;c.vx*-1;}if (c.yc.radius) {c.yc.radius;c.vy*-1;} else if (c.ystage.stageHeight-c.radius) {c.ystage.stageHeight-c.radius;c.vy*-1;}}_vehicle.avoid(_circles);_vehicle.update();}} }二、路径跟随(path following) 对于玩过星际之类游戏的朋友们这种行为应该最熟悉了。随便选一个神族的狂热者(俗称叉叉兵)然后在几个指定的位置点击一下它们就会沿着指定的位置来回巡逻。这就是路径跟随角色尽可能的沿着指定的路径移动。 在算法上的处理很简单用数组保存一组位置(每个位置其实就是一个Vector2D对象)然后加一个索引变量(指针)用于指示当前移动到了哪一个位置最终将机车以seek行为移动以下一个位置。 但有一个要注意的细节seek行为会让机车最终在目标位置来回反复运动停不下来为了让代码能知道机车已经经过了当前位置接下来应该去下一个位置需要引入一个距离阈值用于判断机车是否已经接近目标点。 private var _pathIndex:int0;//路径索引private var _pathThreshold:Number20;//路径跟随中的距离阈值public function set pathIndex(value:int):void {_pathIndexvalue;}public function get pathIndex():int {return _pathIndex;}public function set pathThreshold(value:Number):void {_pathThresholdvalue;}public function get pathThreshold():Number {return _pathThreshold;}public function set avoidDistance(value:Number):void {_avoidDistancevalue;}public function get avoidDistance():Number {return _avoidDistance;}public function set avoidBuffer(value:Number):void {_avoidBuffervalue;}public function get avoidBuffer():Number {return _avoidBuffer;}//路径跟随public function followPath(path:Array,loop:Booleanfalse):void {var wayPoint:Vector2Dpath[_pathIndex];if (wayPointnull) {return;}if (_position.dist(wayPoint)_pathThreshold) {if (_pathIndexpath.length-1) {if (loop) {_pathIndex0;}} else {_pathIndex;}}if (_pathIndexpath.length-1! loop) {arrive(wayPoint);} else {seek(wayPoint);}}测试 package {import flash.display.Sprite;import flash.display.StageAlign;import flash.display.StageScaleMode;import flash.events.Event;import flash.events.MouseEvent;public class PathTest extends Sprite {private var _vehicle:SteeredVehicle;private var _path:Array;public function PathTest() {stage.alignStageAlign.TOP_LEFT;stage.scaleModeStageScaleMode.NO_SCALE;_vehiclenew SteeredVehicle ; addChild(_vehicle);_pathnew Array ;stage.addEventListener(MouseEvent.CLICK,onClick);addEventListener(Event.ENTER_FRAME,onEnterFrame);}private function onEnterFrame(event:Event):void {_vehicle.followPath(_path,true);_vehicle.update();}private function onClick(event:MouseEvent):void {graphics.lineStyle(0,0,.25);if (_path.length0) {graphics.moveTo(mouseX,mouseY);}graphics.lineTo(mouseX,mouseY);graphics.drawCircle(mouseX,mouseY,10);graphics.moveTo(mouseX,mouseY);_path.push(new Vector2D(mouseX,mouseY));}} }拿鼠标在上面随便点一下就能看到效果了 三、群落(flock)行为 群落行为是指类似鸟群这样的复合行为。它由三个子行为组成 分离(separation)鸟群中每个角色都试着和相邻角色保持一定的距离(即一只鸟与其它鸟太靠近时主动退让一定的距离以避免碰到)凝聚(cohesion)每个角色尽量不掉队不落下太远(即尽量向鸟群靠拢)队列(alignment)每个角色尽可能与相邻角色行动于同一方向即每只鸟的速度方向可能不完全相同但大致跟队伍的总体方向一致 借用一句李建忠老师名言原代码就是最好的设计 直接上代码吧 private var _inSightDist:Number200;//视野距离private var _tooCloseDist:Number60;//防止群落靠得太近的安全距离//群落行为public function flock(vehicles:Array):void {var averageVelocity:Vector2D_velocity.clone();//平均速度变量var averagePosition:Vector2Dnew Vector2D ;//平均位置变量var inSightCount:int0;//在视野中的机车数量for (var i:int0; ivehicles.length; i) {var vehicle:Vehiclevehicles[i] as Vehicle;if (vehicle!thisinSight(vehicle)) { //如果其它机车在视野中//累加速度与位置averageVelocityaverageVelocity.add(vehicle.velocity);averagePositionaveragePosition.add(vehicle.position);//如果其它机车太靠近则避开(即分离行为[separation]的体现)if (tooClose(vehicle)) {flee(vehicle.position);}inSightCount; //累加在视野中的机车数}}if (inSightCount0) {//计算平均位置averageVelocityaverageVelocity.divide(inSightCount);averagePositionaveragePosition.divide(inSightCount);seek(averagePosition);//向中心位置靠拢(即凝聚行为[cohesion]的体现)_steeringForce.add(averageVelocity.subtract(_velocity));//根据平均速度校准自身速度(即队列[alignment]行为的体现)}}public function set inSightDist(vaule:Number):void {_inSightDistvaule;}public function get inSightDist():Number {return _inSightDist;}public function set tooCloseDist(value:Number):void {_tooCloseDistvalue;}public function get tooCloseDist():Number {return _tooCloseDist;}//判断(身后的其它)机车是否在视野范围内public function inSight(vehicle:Vehicle):Boolean {if (_position.dist(vehicle.position)_inSightDist) {return false;}//----start 下面这一段代码甚至去掉也行不过去掉后群落的行为将有所不同var heading:Vector2D_velocity.clone().normalize();var difference:Vector2Dvehicle.position.subtract(_position); var dotProd:Numberdifference.dotProd(heading);if (dotProd0) {return false;}//-----endreturn true;}public function tooClose(vehicle:Vehicle):Boolean {return _position.dist(vehicle.position)_tooCloseDist;}重点关注下inSight方法它直接影响到群落的行为示意图如下 先检测二只鸟的距离是否足够近然后仅关注身后的其它鸟。 测试代码 package {import flash.display.Sprite;import flash.display.StageAlign;import flash.display.StageScaleMode;import flash.events.Event;public class FlockTest extends Sprite {private var _vehicles:Array;private var _numVehicles:int20;public function FlockTest() {stage.alignStageAlign.TOP_LEFT;stage.scaleModeStageScaleMode.NO_SCALE;_vehiclesnew Array ;for (var i:int0; i_numVehicles; i) {var vehicle:SteeredVehiclenew SteeredVehicle(Math.random()*0xffffff);vehicle.positionnew Vector2D(Math.random()*stage.stageWidth,Math.random()*stage.stageHeight);vehicle.velocitynew Vector2D(Math.random()*20-10,Math.random()*20-10);vehicle.edgeBehaviorVehicle.BOUNCE;_vehicles.push(vehicle);addChild(vehicle);}addEventListener(Event.ENTER_FRAME,onEnterFrame);}private function onEnterFrame(event:Event):void {for (var i:int0; i_numVehicles; i) {_vehicles[i].flock(_vehicles);_vehicles[i].update();}}} }如果把inSight中检测其它鸟是否在身后的代码去掉即简化成 public function inSight(vehicle:Vehicle):Boolean {if (_position.dist(vehicle.position)_inSightDist) {return false;} return true;}预测一下最终的效果这样相当于只要距离小于阈值的其它鸟其速度和位置都会被计算在内最终整个群落将始终聚集在一定的范围内不会发生分离从而体现出了另外一种群落效果。  最后给出Vehicle.as及SteeredVehicle.as的完整代码 package {import flash.display.Sprite;public class Vehicle extends Sprite {//边界行为:是屏幕环绕(wrap)还是反弹{bounce}protected var _edgeBehavior:StringWRAP;//质量protected var _mass:Number1.0;//最大速度protected var _maxSpeed:Number10;//坐标protected var _position:Vector2D;//速度protected var _velocity:Vector2D;//边界行为常量public static const WRAP:Stringwrap;public static const BOUNCE:Stringbounce;public function Vehicle(color:uint0xffffff) {_positionnew Vector2D ;_velocitynew Vector2D ;draw(color);}protected function draw(color:uint0xffffff):void {graphics.clear();graphics.lineStyle(0);graphics.beginFill(color);graphics.moveTo(10,0);graphics.lineTo(-10,5);graphics.lineTo(-10,-5);graphics.lineTo(10,0);graphics.endFill();}public function update():void {//设置最大速度_velocity.truncate(_maxSpeed);//根据速度更新坐标向量_position_position.add(_velocity); //处理边界行为if (_edgeBehaviorWRAP) {wrap();} else if (_edgeBehaviorBOUNCE) {bounce();}//更新x,y坐标值xposition.x;yposition.y;//处理旋转角度rotation_velocity.angle*180/Math.PI;}//反弹private function bounce():void {if (stage!null) {if (position.xstage.stageWidth) {position.xstage.stageWidth;velocity.x*-1;} else if (position.x0) {position.x0;velocity.x*-1;}if (position.ystage.stageHeight) {position.ystage.stageHeight;velocity.y*-1;} else if (position.y0) {position.y0;velocity.y*-1;}}}//屏幕环绕private function wrap():void {if (stage!null) {if (position.xstage.stageWidth) {position.x0;}if (position.x0) {position.xstage.stageWidth;}if (position.ystage.stageHeight) {position.y0;}if (position.y0) {position.ystage.stageHeight;}} }//下面的都是属性定义public function set edgeBehavior(value:String):void {_edgeBehaviorvalue;}public function get edgeBehavior():String {return _edgeBehavior;}public function set mass(value:Number):void {_massvalue;}public function get mass():Number {return _mass;}public function set maxSpeed(value:Number):void {_maxSpeedvalue;}public function get maxSpeed():Number {return _maxSpeed;}public function set position(value:Vector2D):void {_positionvalue;x_position.x;y_position.y;}public function get position():Vector2D {return _position;}public function set velocity(value:Vector2D):void {_velocityvalue;}public function get velocity():Vector2D {return _velocity;}override public function set x(value:Number):void {super.xvalue;_position.xx;}override public function set y(value:Number):void {super.yvalue;_position.yy;}} }package {import flash.display.Sprite;//(具有)转向(行为的)机车public class SteeredVehicle extends Vehicle {private var _maxForce:Number1;//最大转向力private var _steeringForce:Vector2D;//转向速度private var _arrivalThreshold:Number100;//到达行为的距离阈值(小于这个距离将减速)private var _wanderAngle:Number0;private var _wanderDistance:Number10;private var _wanderRadius:Number5;private var _wanderRange:Number1;private var _avoidDistance:Number300;//发现障碍物的有效视野private var _avoidBuffer:Number20;//机车在准备避开时自身和障碍物间的预留距离。private var _pathIndex:int0;//路径索引private var _pathThreshold:Number20;//路径跟随中的距离阈值private var _inSightDist:Number200;//视野距离private var _tooCloseDist:Number60;//防止群落靠得太近的安全距离//群落行为public function flock(vehicles:Array):void {var averageVelocity:Vector2D_velocity.clone();//平均速度变量var averagePosition:Vector2Dnew Vector2D ;//平均位置变量var inSightCount:int0;//在视野中的机车数量for (var i:int0; ivehicles.length; i) {var vehicle:Vehiclevehicles[i] as Vehicle;if (vehicle!thisinSight(vehicle)) { //如果其它机车在视野中//累加速度与位置averageVelocityaverageVelocity.add(vehicle.velocity);averagePositionaveragePosition.add(vehicle.position);//如果其它机车太靠近则避开(即分离行为[separation]的体现)if (tooClose(vehicle)) {flee(vehicle.position);}inSightCount; //累加在视野中的机车数}}if (inSightCount0) {//计算平均位置averageVelocityaverageVelocity.divide(inSightCount);averagePositionaveragePosition.divide(inSightCount);seek(averagePosition);//向中心位置靠拢(即凝聚行为[cohesion]的体现)_steeringForce.add(averageVelocity.subtract(_velocity));//根据平均速度校准自身速度(即队列[alignment]行为的体现)}}public function set inSightDist(vaule:Number):void {_inSightDistvaule;}public function get inSightDist():Number {return _inSightDist;}public function set tooCloseDist(value:Number):void {_tooCloseDistvalue;}public function get tooCloseDist():Number {return _tooCloseDist;}//判断(身后的其它)机车是否在视野范围内public function inSight(vehicle:Vehicle):Boolean {if (_position.dist(vehicle.position)_inSightDist) {return false;}//----start 下面这一段代码甚至去掉也行不过去掉后群落的行为将有所不同var heading:Vector2D_velocity.clone().normalize();var difference:Vector2Dvehicle.position.subtract(_position); var dotProd:Numberdifference.dotProd(heading);if (dotProd0) {return false;}//-----endreturn true;}public function tooClose(vehicle:Vehicle):Boolean {return _position.dist(vehicle.position)_tooCloseDist;}public function set pathIndex(value:int):void {_pathIndexvalue;}public function get pathIndex():int {return _pathIndex;}public function set pathThreshold(value:Number):void {_pathThresholdvalue;}public function get pathThreshold():Number {return _pathThreshold;}public function set avoidDistance(value:Number):void {_avoidDistancevalue;}public function get avoidDistance():Number {return _avoidDistance;}public function set avoidBuffer(value:Number):void {_avoidBuffervalue;}public function get avoidBuffer():Number {return _avoidBuffer;}//路径跟随public function followPath(path:Array,loop:Booleanfalse):void {var wayPoint:Vector2Dpath[_pathIndex];if (wayPointnull) {return;}if (_position.dist(wayPoint)_pathThreshold) {if (_pathIndexpath.length-1) {if (loop) {_pathIndex0;}} else {_pathIndex;}}if (_pathIndexpath.length-1! loop) {arrive(wayPoint);} else {seek(wayPoint);}}//对象回避public function avoid(circles:Array):void {for (var i:int0; icircles.length; i) {var circle:Circlecircles[i] as Circle;var heading:Vector2D_velocity.clone().normalize();// 障碍物和机车间的位移向量var difference:Vector2Dcircle.position.subtract(_position);var dotProd:Numberdifference.dotProd(heading);// 如果障碍物在机车前方if (dotProd0) {// 机车的“触角”var feeler:Vector2Dheading.multiply(_avoidDistance);// 位移在触角上的映射var projection:Vector2Dheading.multiply(dotProd);// 障碍物离触角的距离var dist:Numberprojection.subtract(difference).length;// 如果触角在算上缓冲后和障碍物相交// 并且位移的映射的长度小于触角的长度// 我们就说碰撞将要发生需改变转向if (distcircle.radius_avoidBufferprojection.lengthfeeler.length) {// 计算出一个转90度的力var force:Vector2Dheading.multiply(_maxSpeed);force.angledifference.sign(_velocity)*Math.PI/2;// 通过离障碍物的距离调整力度大小使之足够小但又能避开forceforce.multiply(1.0-projection.length/feeler.length);// 叠加于转向力上_steeringForce_steeringForce.add(force);// 刹车——转弯的时候要放慢机车速度离障碍物越接近刹车越狠。_velocity_velocity.multiply(projection.length/feeler.length);}}}}//漫游public function wander():void {var center:Vector2Dvelocity.clone().normalize().multiply(_wanderDistance);var offset:Vector2Dnew Vector2D(0);offset.length_wanderRadius;offset.angle_wanderAngle;_wanderAngleMath.random()-0.5*_wanderRange;var force:Vector2Dcenter.add(offset);_steeringForce_steeringForce.add(force);}public function set wanderDistance(value:Number):void {_wanderDistancevalue;}public function get wanderDistance():Number {return _wanderDistance;}public function set wanderRadius(value:Number):void {_wanderRadiusvalue;}public function get wanderRadius():Number {return _wanderRadius;}public function set wanderRange(value:Number):void {_wanderRangevalue;}public function get wanderRange():Number {return _wanderRange;}public function set arriveThreshold(value:Number):void {_arrivalThresholdvalue;}public function get arriveThreshold():Number {return _arrivalThreshold;}//构造函数public function SteeredVehicle(color:uint0xffffff) {_steeringForcenew Vector2D ;super(color);}public function set maxForce(value:Number):void {_maxForcevalue;}public function get maxForce():Number {return _maxForce;}//寻找(Seek)行为public function seek(target:Vector2D):void {var desiredVelocity:Vector2Dtarget.subtract(_position);desiredVelocity.normalize();desiredVelocitydesiredVelocity.multiply(_maxSpeed);//注这里的_maxSpeed是从父类继承得来的var force:Vector2DdesiredVelocity.subtract(_velocity);_steeringForce_steeringForce.add(force);}//避开(flee)行为public function flee(target:Vector2D):void {var desiredVelocity:Vector2Dtarget.subtract(_position);desiredVelocity.normalize();desiredVelocitydesiredVelocity.multiply(_maxSpeed);var force:Vector2DdesiredVelocity.subtract(_velocity);_steeringForce_steeringForce.subtract(force);//这是唯一也seek行为不同的地方一句话解释既然发现了目标那就调头就跑吧}//到达(arrive)行为public function arrive(target:Vector2D):void {var desiredVelocity:Vector2Dtarget.subtract(_position);desiredVelocity.normalize();var dist:Number_position.dist(target);if (dist_arrivalThreshold) {desiredVelocitydesiredVelocity.multiply(_maxSpeed);} else {desiredVelocitydesiredVelocity.multiply(_maxSpeed*dist/_arrivalThreshold);}var force:Vector2DdesiredVelocity.subtract(_velocity);_steeringForce_steeringForce.add(force);}//追捕(pursue)行为public function pursue(target:Vehicle):void {var lookAheadTime:Numberposition.dist(target.position)/_maxSpeed;//假如目标不动追捕者开足马力赶过去的话计算需要多少时间var predictedTarget:Vector2Dtarget.position.add(target.velocity.multiply(lookAheadTime));seek(predictedTarget);}//躲避(evade)行为public function evade(target:Vehicle):void {var lookAheadTime:Numberposition.dist(target.position)/_maxSpeed;var predictedTarget:Vector2Dtarget.position.add(target.velocity.multiply(lookAheadTime));flee(predictedTarget);}override public function update():void {_steeringForce.truncate(_maxForce);//限制为最大转向速度以避免出现突然的大转身_steeringForce_steeringForce.divide(_mass);//惯性的体现_velocity_velocity.add(_steeringForce);_steeringForcenew Vector2D ;super.update();}} }
http://www.zqtcl.cn/news/507770/

相关文章:

  • 洛阳网站的优化阿里云购买域名后怎么建网站
  • 我是做环保类产品注册哪些浏览量大的网站推销自己的产品比较好呢网站功能模块设计
  • 叫人做网站多少钱百度免费网站怎样建设
  • 本地南通网站建设新手编程入门先学什么
  • asp网站开发的背景与环境久久建筑网会员
  • 河北省住房建设厅官方网站个人计算机做服务器建网站
  • 上海自助建站费用页游网站
  • 浙江省住建厅网站沈阳网站建设专家
  • 基础建设文本网站施工企业在施工过程中发现设计文件和图纸有差错的应当
  • 做互联网交易网站的条件17网站一起做网店揭阳
  • 做公司网站合同asp.net sql server网站建设 pdf
  • 建筑兼职网站天津网站优化公司哪家好
  • 怎么做网站设计商城型网站开发网站建设
  • 建设网站目录帮别人做网站要投资吗
  • 网站meta 优化建议桥梁建设设计网站
  • 网站建设 甘肃wordpress rss去掉
  • 网站安全检测大连网龙建站优化推广
  • 人才网官方网站公众号排名优化软件
  • 淘宝返利网站建设软件开发哪里学好
  • 烟台网站制作公司如何注册国外网站
  • discuz企业网站网站可以做音频线吗
  • 怎样制作网站教程哪家好制作网页的的网站
  • 网站没有织梦后台无锡seo公司网站
  • 哈尔滨住房和城乡建设厅网站公司网站建设 费用入账
  • 网站图片缩略图t恤图案设计网站
  • 对招聘网站页面设计做建议网站流量 转化率
  • 怎么样做网站注册量郴州市北湖区
  • 山东企业展厅设计公司济南网站建设优化公司
  • 什么网站免费做游戏工艺品外贸订单网
  • 免费推广网站制作网站设计的技术有