首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Robocode 基本原理之方向剖析(2)

Robocode 基本原理之方向剖析(2)

绝对方向系Heading:下面是剪切到的Geny和GenyTrack1在不同位置得到的数据图.
图一图一解:大家观察机器人GenyTrack1的数据heading:64.421114…~ 64,说明它正好坐落在屏幕绝对方向系64度的地方。也就是说GenyTrack1当前的Heading方向为64度。
图二图二解:大家观察机器人GenyTrack1的数据heading:161.79…,说明它正前方正好正对屏幕绝对方向系161度的地方。也就是说GenyTrack1当前的Heading方向为161度。而我们的Geny正前方正对35度的地方。
大家对照着方向系一看我想一切就会明白的。是不是有点成就感了,不急,后面还有。
相对方向系Bearing:Bearing,Bearing该死的Bearing,我想大家头痛的就是它的。在此我们就以机器人的雷达(Radar)为例来说明,源程序(GenyTrack1)中我们用到的是事件:onScannedRobot(ScannedRobotEvent e) ,所以我们要用到的就是Radar的Heading,其它相关的如Bullet,Gun的方法类似,有兴趣的朋友可以自己测试一下。
我们先把数据近似提出来如下表:
机器人HeaingRadarHeadingBearingGeny35..GenyTrack1161275114
在此处机器人和Radar的Heading我想大家对照图上的方向系及上面的绝对方向体系说明应该明白了,只是要注意机器人哪是前哪是后:详见Robocode机器人解剖图.
(Geny的Heading在此处没有用上,只是给大家参考一下)你看我们的GenyTrack1前面正对着161角,雷达在屏幕276度角的地方发现了Geny机器人。所以此处的Geny和GenyTrakc1相差的角度=|276-161|度(取绝对值,正负由转动方向决定),由于此时的Geny机器人正位于GenyTrack1顺时针方向上(GenyTrack1的0,180之间),所以相对角度Bearing就是顺时针方向(+114)度,(图上每次数据有一小点差是由于打印的数据及低级机器人完成所有代码后才进行处理事件。不是即时的。要即时处理涉及到高级机器人AdvanceRobot的一些特性)。
下面得到相对角度是为负的图:原理同上。
图三机器人HeaingRadarHeadingBearingGeny35..GenyTrack157238-173
|238-57|,由于Geny处于GenyTrack1背后(-180,0)。为逆时针方向所以为负。
时针略说:顺时针和逆时针是看另一机器人是在你的Heading角度的(0,180)还是(-180,0)之间。
再这次提醒:Heading是个静态角度,正上方总为0.不管是取Heading,还是取方向
Bearing是个角度差值,是由参照的Heading和发现时的Heading的差值。
返回列表