Difference between revisions of "Waves/Precise Intersection"

From Robowiki
Jump to navigation Jump to search
m (Some clarifications and fixing minor errors)
m (fix typographical error)
Line 6: Line 6:
  
 
'''Precise Intersection''' of [[waves]] are to calculate every hittable angle/[[Guess Factor|guess factor]]. Normally, people only calculate [[angular bot width]] (<code>Math.atan(18/distance) * 2</code>), which is  perfectly accurate and fine when the enemy bot isn't moving. Anyway, enemy robot have depth and can move.
 
'''Precise Intersection''' of [[waves]] are to calculate every hittable angle/[[Guess Factor|guess factor]]. Normally, people only calculate [[angular bot width]] (<code>Math.atan(18/distance) * 2</code>), which is  perfectly accurate and fine when the enemy bot isn't moving. Anyway, enemy robot have depth and can move.
In order to make it more accurate, you need to check the intersection range for every tick the wave intersects the bounding box of the robot. The intersection range can be calculated by the highest and lowest angeles represented by:
+
In order to make it more accurate, you need to check the intersection range for every tick the wave intersects the bounding box of the robot. The intersection range can be calculated by the highest and lowest angles represented by:
 
* Intersections between the robot bounding box and the bullet wave.
 
* Intersections between the robot bounding box and the bullet wave.
 
* Intersections between the robot bounding box and where the bullet wave was last tick.
 
* Intersections between the robot bounding box and where the bullet wave was last tick.

Revision as of 16:12, 18 May 2009

This article is a stub. You can help RoboWiki by expanding it.
Plain wave intersection
First intersection range
Augmented intersection range
The steps repeated

Precise Intersection of waves are to calculate every hittable angle/guess factor. Normally, people only calculate angular bot width (Math.atan(18/distance) * 2), which is perfectly accurate and fine when the enemy bot isn't moving. Anyway, enemy robot have depth and can move. In order to make it more accurate, you need to check the intersection range for every tick the wave intersects the bounding box of the robot. The intersection range can be calculated by the highest and lowest angles represented by:

  • Intersections between the robot bounding box and the bullet wave.
  • Intersections between the robot bounding box and where the bullet wave was last tick.
  • Any corners of the robot bounding box that lie between the wave last tick and the wave this tick.

In next tick, the enemy robot had moved, therefore you need to calculate the new intersection range. You overlay the ranges calculated each tick, to come up with an 'augmented range' add up the range calculated each tickThis create an augmented intersection range.

These steps repeated until the wave passed the robot. The final, augmented intersection range will be the full range that can hit the robot in way more accurate than plain bot width.

Bot using this technique

There are only 4 known robots using this technique, which are

  • Garm: The first implementation.
  • RougeDC: The original ideas was posted under the name of "Super Bot Width", used in both gun and movement.
  • DrussGT: Current rumble king use precise intersection in the Gun.
  • PolishedRuby: Same gun as RougeDC.
  • Polylunar: Used to determine when a certain angle is going to hit an enemy no matter how they move (only occurs at close range)
  • Wintermute: Newer robot, using in both gun and movement.