robocode基础之方向分析

robocode基础之方向分析

在robocode中,Robot方向可以分为绝对方向(heading)和相对方向(bearing).只有分清两者的差别,才能设计准确的移动和攻击方法。

坐标系:这是最基础的一个定义,robocode战场中以左下角作为原点(0,0)。

绝对方向:是指机器人方向与屏幕正上方的角度差,方向在0-360之间。向北为0,向东为90,向南为180,向西为270(上北下南,左西右东)。Robot的绝对方向可以直接通过 getHeading() 获得。

<img src = http://softlab.sdut.edu.cn/blog/wp-content/uploads/2017/05/heading.png>

相对方向:是机器人的某个部件(如雷达发现的目标)与方向的角度差,顺时针为正角度在-180到180之间. 我们以雷达发现目标时的坐标为例,编写两个Robot,参考如下代码。

测试robot的代码如下:

我觉得,这里比较迷惑人的就是 ±|getRadarHeading - getHeading|

在这里,如何选取正负号是个问题,我是这样想的,用getHeading()的角度画一条直线,以自身为圆心,顺时针方向画一个半径=无穷大的半圆,如果目标机器人在这个半圆内,则为+,反之,为-。

One Reply to “robocode基础之方向分析”

发表评论

电子邮件地址不会被公开。 必填项已用*标注

跳至工具栏