Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 波的解释_Java_Angle_Wave_Bearing_Robocode - Fatal编程技术网

Java 波的解释

Java 波的解释,java,angle,wave,bearing,robocode,Java,Angle,Wave,Bearing,Robocode,我刚开始用机器人代码做实验,读到了关于海浪的文章: 我不明白的是,为什么这里用圆圈 我的意思是,当我射击一颗子弹时,我只朝一个方向射击,而不是像使用圆圈时暗示的那样朝每个方向射击 有谁能试着用其他的话向我解释一下这个情况和这个概念吗 我现在只是被卡住了 谢谢, Julian看起来wave方法是对幼稚实现的某种优化。 基本概念是确定射弹通过目标的时间点。这可以简单地通过比较“波”从其原点(“波速*(现在的时间-发射的时间)”)到目标到该波原点的距离来实现 一旦两个距离相等(或波通过目标),就可以计

我刚开始用机器人代码做实验,读到了关于海浪的文章:

我不明白的是,为什么这里用圆圈

我的意思是,当我射击一颗子弹时,我只朝一个方向射击,而不是像使用圆圈时暗示的那样朝每个方向射击

有谁能试着用其他的话向我解释一下这个情况和这个概念吗

我现在只是被卡住了

谢谢,
Julian

看起来wave方法是对幼稚实现的某种优化。 基本概念是确定射弹通过目标的时间点。这可以简单地通过比较“波”从其原点(“
波速*(现在的时间-发射的时间)
”)到目标到该波原点的距离来实现

一旦两个距离相等(或波通过目标),就可以计算从波的原点到目标当前位置的方位,并将其与射弹的方位进行比较。如果这两个方位足够接近,则目标被视为“命中”;否则,目标就没有击中,抛射物可以忽略不计进行进一步计算。(假设目标移动速度不能超过投射物。)


这方面的优化是,对于每个时间步,只需计算和比较两个距离,以确定是否需要执行实际的“命中检查”。通过这种方式,射弹不需要在两个(或三个)维度上精确追踪,而只需要在一个(距离)维度上追踪,这可能会节省大量的计算。

上述答案击中了为什么波是有用的抽象的要点:作为收集击中目标的射击角度的优化,相对于直接向敌人开火


波浪的另一个用途是躲避子弹。当你看到敌人发射子弹时(通过监测其能量),你知道子弹的来源和速度,但不知道它的确切位置,因为你看不到子弹。在本例中,波浪表示您对子弹的了解:所有可能的位置。如果你被击中,你同样可以推断出敌人使用的相对射击角度。稍后,您可以使用这些数据评估每个波浪上不同点的危险性,并确定与波浪相交的最安全位置(也称为“波浪冲浪”)。

谢谢!但是当波浪膨胀时,它总是会击中目标。我在这里似乎忽略了什么基本事实?我认为波浪是一种计算射向目标的射击角度的方法。太棒了!谢谢你的回复!我已经读过很多关于机器人代码策略的文章了!:)