Calculating collision for a moving circle, without overlapping the boundaries

Posted by Robert Vella on Stack Overflow See other posts from Stack Overflow or by Robert Vella
Published on 2010-05-01T20:02:57Z Indexed on 2010/05/01 20:37 UTC
Read the original article Hit count: 237

Filed under:
|

Let's say I have circle bouncing around inside a rectangular area. At some point this circle will collide with one of the surfaces of the rectangle and reflect back. The usual way I'd do this would be to let the circle overlap that boundary and then reflect the velocity vector. The fact that the circle actually overlaps the boundary isn't usually a problem, nor really noticeable at low velocity. At high velocity it becomes quite clear that the circle is doing something it shouldn't.

What I'd like to do is to programmatically take reflection into account and place the circle at it's proper position before displaying it on the screen. This means that I have to calculate the point where it hits the boundary between it's current position and it's future position -- rather than calculating it's new position and then checking if it has hit the boundary.

This is a little bit more complicated than the usual circle/rectangle collision problem. I have a vague idea of how I should do it -- basically create a bounding rectangle between the current position and the new position, which brings up a slew of problems of it's own (Since the rectangle is rotated according to the direction of the circle's velocity). However, I'm thinking that this is a common problem, and that a common solution already exists.

Is there a common solution to this kind of problem? Perhaps some basic theories which I should look into?

© Stack Overflow or respective owner

Related posts about game-development

Related posts about physics