Reputation: 139
I'm trying to determine whether Object1 will collide with Object2 given the following information:
1) Objects' bounding boxes (uses bounded-box collision detection)
2) Objects' speeds
3) Object's current locations (x, y coordinate)
4) Objects' directions (Up, Down, Left, or Right)
For a bit of imagery, imagine the objects traveling on a 2D grid, and they can only move on the lines of that grid.
So given the above information, I need an efficient, but readable algorithm to determine whether those objects will collide. By efficient I mean constant time with time spent on computations minimized. Psuedocode or a link is fine.
Upvotes: 4
Views: 2151
Reputation: 106351
Your best approach is to work out:
And then test if the two time ranges intersect. This will as an added bonus give you the collision time.
This will be a simple constant time operation overall.
Upvotes: 1
Reputation: 86353
What you are looking for is called "Separating Axis test for moving convex Objects".
Here is a link to google books that explains the details:
(sorry for the large link - it wasn't my idea)
Upvotes: 2
Reputation: 20721
First, find the time interval during which the boxes will overlap on the X axis. Second, find the time interval during which the boxes will overlap on the Y axis. Finally, check if the two time intervals overlap. If so, the earliest point in time that is in both intervals is the moment they are going to collide.
Upvotes: 2