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

西安网站建设比较好的公司weex做网站

西安网站建设比较好的公司,weex做网站,网站策划用培训吗,太原网络广告公司Steering Behaviors系统中的碰撞避免#xff0c;路径跟随#xff0c;队长跟随 Collision Avoid 在物体前进的方向#xff0c;延伸一定长度的向量进行检测。相当于物体对前方一定可使范围进行检测障碍物的碰撞 延伸的向量与碰撞物圆心的距离小于碰撞物的半径#xff0c;则…Steering Behaviors系统中的碰撞避免路径跟随队长跟随 Collision Avoid 在物体前进的方向延伸一定长度的向量进行检测。相当于物体对前方一定可使范围进行检测障碍物的碰撞 延伸的向量与碰撞物圆心的距离小于碰撞物的半径则判断前进方向有阻挡物 我们会对所有障碍物进行碰撞检测但是只取最近的一个做处理 可以延伸多条不同长度的同方向向量进行检测以免过于靠近物体而使检测向量超过了碰撞物 前方视野向量检测到有障碍物的话就会进行躲避有障碍物圆心减去检测向量得到躲避力的方向 注意这里是和flee的最主要区别。avoid力相当于提前检测前方行进方向是否有障碍物然后提前开始避开了。而flee力则是用当前自身自身的位置判断是否flee目标点并以自身位置进行反向逃离计算 这里一个关键点是ahead的向量如果ahead向量是个固定长度的会有个问题就是物体无法停在障碍物的前方。因为可能此生的检测向量一直在障碍物的范围内。如下图 因此ahead向量的长度要通过当前速度与最大速度的比例来设置如果当前速度接近0则ahead的长度也接近于0 Vec2 MoveNode::collisionAvoid(float maxSpeed) {Vec2 avoidForce Vec2::ZERO;float dynamicLen _velocity.getLength() / maxSpeed;//Vec2 ahead this-getPosition() _velocity.getNormalized() * _aheadLen;Vec2 ahead this-getPosition() _velocity.getNormalized() * dynamicLen;Vec2 obstaclePos findNearestObstacle(maxSpeed);if (obstaclePos ! Vec2(-1, -1)) {avoidForce ahead - obstaclePos;avoidForce.normalize();avoidForce * _avoidForce;}return avoidForce; } //找到最具威胁的阻碍物ahead为检测向量与所有障碍物的圆心进行距离判定 Vec2 MoveNode::findNearestObstacle(float maxSpeed) {Vec2 pos this-getPosition();/*Vec2 ahead pos _velocity.getNormalized() * _aheadLen;Vec2 ahead2 pos _velocity.getNormalized() * _aheadLen / 2;*/float dynamicLen _velocity.getLength() / maxSpeed;Vec2 ahead pos _velocity.getNormalized() * dynamicLen;Vec2 ahead2 pos _velocity.getNormalized() * dynamicLen / 2;Vec2 v Vec2(-1, -1);for (auto obstacle : _obstacles) {Vec2 center obstacle.first;float radius obstacle.second;bool isCollision ahead.getDistance(center) radius || ahead2.getDistance(center) radius;if(isCollision (v Vec2(-1,-1) || pos.getDistance(center) pos.getDistance(v))) v center;}return v; }效果 Path Following 比较简单的实现是将路径划分多个路径点对每个路径点进行seek 因为物体是带有类似惯性的所有对每个路径点seek时需要判定到达路径点一定范围内就算到达当前路径点然后前往下一路径点否则会在初始点无限循环 注意路径点的到达半径如果太短的话物体由于速度过快可能会在路径点周围绕一圈才走进了到达的范围内才前往下一路径点 //_pathDir表示了路径点索引的方向我们这里是抵达起始点或终点后进行反向 Vec2 MoveNode::pathFollowing() {Vec2 steering Vec2::ZERO;if (_pathNodes.empty()) return steering;auto pathNode _pathNodes[_pathNodeIdx];Vec2 pos pathNode.first;float arriveRadius pathNode.second;if (this-getPosition().getDistance(pos) arriveRadius) {_pathNodeIdx _pathDir;if (_pathNodeIdx _pathNodes.size() || _pathNodeIdx 0) {_pathDir * -1;_pathNodeIdx _pathDir;}}return seek(_pathNodes[_pathNodeIdx].first); }Leader Following 跟随一个队长的路径 队长跟随类似追捕目标只不过追捕目标是预测目标点前进几帧后的方向进行seek但是跟随是队长前进方向的反向一定距离进行跟随 如上图求出队长速度的反向在一定长度的位置behind队员对behind的位置进行arrive //_leaderBehindDist跟随在队长背后的距离 Vec2 MoveNode::leaderFollowing() {Vec2 steering Vec2::ZERO;if (_leader nullptr) return steering;Vec2 tv _leader-getVelocity() * -1;tv.normalize();tv * _leaderBehindDist;Vec2 followPos _leader-getPosition() tv;steering seek(followPos);return steering; }我们看到队员跟随在队长背后但是此时队员都挤成了一团因此对队员加上集群模拟的separation力 另一个问题是跟随队长的队员是不允许挡在队长前进的前方的。此时我们给队长一个前方的视线检测向量和一个检测半径如果队员在这个视线检测范围内的话就要对队长进行避让evade //pos是队员的坐标位置_leaderAhead是队长视线的检测的长度与队长速度方向求的检测向量_leaderAheadRadius是检测的范围半径。该函数判定队员位置是否在队长前进的方向上 bool MoveNode::isInAheadArea(Vec2 pos) {Vec2 srcPos this-getPosition();Vec2 aheadPos _velocity.getNormalized()* _leaderAhead srcPos;return srcPos.getDistance(pos) _leaderAheadRadius || aheadPos.getDistance(pos) _leaderAheadRadius; }evade的逻辑于pursuit类似预测队长几帧后的前进位置对该位置进行flee Vec2 MoveNode::leaderFollowing() {Vec2 steering Vec2::ZERO;if (_leader nullptr) return steering;Vec2 tv _leader-getVelocity() * -1;tv.normalize();tv * _leaderBehindDist;Vec2 followPos _leader-getPosition() tv;//如果在队长视野前方则预测队长行进路线进行逃离evadeif (_leader-isInAheadArea(this-getPosition())) {Vec2 leadPos _leader-getPosition();float t this-getPosition().getDistance(leadPos) / _dtSpeed;Vec2 fleePos leadPos _leader-getVelocity() * t;steering flee(fleePos);}steering seek(followPos);return steering; }下面是队长跟随路径移动队员跟随队长移动的结合例子
http://www.yutouwan.com/news/291694/

相关文章:

  • 上海官方网站建设企业网站建设与管理试题
  • 网站建设技术哪些内容做网络写手 哪个网站比较好
  • 做一个小型网站多少钱dz如何做门户网站
  • 5173游戏交易网站源码网络运营需要学什么专业
  • 乐山网站营销推广哪家公司好上海火迎网络推广运营优化
  • 反馈网站制作旅游网站建设的重要性
  • 电商网站建设代理商网站名称填写什么
  • 陕西建设厅人才网站ps网站设计与制作
  • 虚拟机怎么做网站建站公司前景
  • 上海市建设工程 安全协会网站花西子网络营销策划方案
  • 做手机网站公司怎么建设网站
  • 网上服装商城网站建设方案自己网站的登录api怎么做
  • 做qq群头像网站wordpress描述怎么改
  • asp网站防攻击音乐展示网站建设平台
  • html网站代码服装网站建设效果
  • 网站上怎么做游戏wordpress修改底部版权
  • 芜湖网站 建设网站开发厂商
  • 做网站的网络非要专线吗手机网站如何优化
  • 天睦和生态建设有限公司网站度假村网站模板
  • 网页标准化对网站开发维护者的好处如何建设一个国际化的网站
  • 做的网站名阿里云建设个人网站
  • 吴忠网站建设公司中医院网站建设方案
  • 电商网站建设多少钱下载app赚钱的平台
  • 用dw做的企业网站重庆手机网站制作
  • 做网站的登陆功能湖北做网站系统哪家好
  • 宣传网站建设的步骤响应式网页设计技术
  • 查内部券的网站是怎么做的品牌自适应网站建设
  • 网站建设冖金手指花总十四网站建设开发计划书
  • 制作一个企业网站多少钱北京建设教育协会网站首页
  • 福州网站设计哪里建站网站建设有证书吗