• Create Account

## How to find closest points between two moving circles?

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

9 replies to this topic

### #1pizza123  Members

107
Like
0Likes
Like

Posted 06 January 2013 - 08:23 PM

Hi,

I'm trying to find the time of impact between two moving circles. Right now I was finding the closest distance between the circles (like if you just draw a line between their centres), however if the two circles are moving then the actual closest points (& distance) for impact are different. I was wondering what would be the easiest way to find those points?

Thank you

### #2Álvaro  Members

20255
Like
0Likes
Like

Posted 06 January 2013 - 08:59 PM

Use coordinates where one of the circles is not moving. If the circles were moving in straight lines, now you'll see only one circle moving in a straight line. Finding the shortest distance between a segment and a point is easy enough.

Does that help?

Edited by Álvaro, 06 January 2013 - 11:34 PM.

### #3pizza123  Members

107
Like
0Likes
Like

Posted 06 January 2013 - 09:41 PM

Thank you for the reply, but I don't quite understand what you mean by using coordinates where one of the circle is not moving? Like find relative velocity or relative position? And for finding the shortest distance between a segment and a point, what would be the segment and what would be the point?

### #4Álvaro  Members

20255
Like
0Likes
Like

Posted 06 January 2013 - 10:07 PM

Yes, you can think of what I am saying as using relative velocity and position. The segment is the path of the center of the circle that moves and the point is the path of the center of the circle that doesn't move.

### #50r0d  Members

1573
Like
0Likes
Like

Posted 06 January 2013 - 10:55 PM

Thank you for the reply, but I don't quite understand what you mean by using coordinates where one of the circle is not moving? Like find relative velocity or relative position? And for finding the shortest distance between a segment and a point, what would be the segment and what would be the point?

If you subtract the velocity of sphere 1 (s1) from both sphere 1 and sphere 2 (s2), now you have a single non-moving sphere (s1) and a moving one (s2).  Now the problem is much easier, because you can just determine the closest approach of s2 to the center of s1.  Then you can compare that distance to the combined radius (D_min = s1.radius + s2.radius).  If the distance is less than D_min, then a collision will occur.  After that you have to calculate where it occurred.

Anyway, I dont have time to go through the math of how to do all this, just saying why you want to simplify the problem by making one non-moving.

### #6Michael Tanczos  Staff Emeritus

5675
Like
0Likes
Like

Posted 07 January 2013 - 12:24 AM

Given two circles c1 and c2 with velocity vectors v1 and v2, it would seem as though what you need to do really is calculate intersection points between two pairs of lines.

This would be my mindset in solving this:

I'm not the best at math so I'm taking a shot in the dark without verifying this.   But I'd probably do something to this effect for each circle:

1. normalize v1

2. find the perpendicular of v1, let's call it perp_v1

If we move away from the center of c1 distance +/- r (radius) we actually have two points still on circle c1.   Something like.. c1.location + perp_v1 * radius

You can just use those two points and the normalized v1 to create the two lines shown in red for each circle.  Then it's just a matter of finding the points where the equations for those lines are equal.   There should be four total (circled in blue).   The first intersection point on a circle edge is going to end up being the one closest to both c1 and c2.  Hopefully someone can expand on this.. I'm up later than I should be and my brain in shutting down.  =P

Hope this gets things moving a little more.

Edited by Michael Tanczos, 07 January 2013 - 12:27 AM.

### #7Álvaro  Members

20255
Like
0Likes
Like

Posted 07 January 2013 - 01:44 AM

Given two circles c1 and c2 with velocity vectors v1 and v2, it would seem as though what you need to do really is calculate intersection points between two pairs of lines.

I don't think that solves anything. The two circles might get to the intersection region at different times, and then they won't collide.

### #8EWClay  Members

659
Like
0Likes
Like

Posted 07 January 2013 - 04:13 AM

Find the distance between the circle centres as a function of time. Solve for it being equal to the sum of the radii (it's a quadratic).

The quadratic will have no roots if the circles do not collide, otherwise two roots and you want the smallest, if they are both positive.

### #9Michael Tanczos  Staff Emeritus

5675
Like
0Likes
Like

Posted 07 January 2013 - 06:36 AM

Given two circles c1 and c2 with velocity vectors v1 and v2, it would seem as though what you need to do really is calculate intersection points between two pairs of lines.

I don't think that solves anything. The two circles might get to the intersection region at different times, and then they won't collide.

1AM me says my solution makes perfect sense - 7AM me says 1AM me should have went to bed.

Edited by Michael Tanczos, 07 January 2013 - 06:42 AM.

### #10pizza123  Members

107
Like
0Likes
Like

Posted 07 January 2013 - 07:00 PM

Thanks for the replies, I did it the quadratic way and it worked, but I might try the other ways later.

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.