Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


Relative Velocity

This topic is 5568 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi guys, When I want to see if a moving circle collides with a stationary one the first thing I do is make a vector from the moving circle''s center to the stationary one''s center then dot it with the moving circle''s velocity vector to see if it''s heading that way, if it''s less than or equel to zero I exit the function with no collision. I learned that when I want to test if two moving circles collide I subtract circle 2''s velocity vector from circle 1''s velocity vector and treat it as a moving-stationary collision. But what about my early escape test ? Do I do the same thing using the new vector I made ? Or maybe I dot the original velocity vectors since now there are two moving objects. I''m confused. Thanks.

Share this post

Link to post
Share on other sites
Basiclay, once you have subtracted circle 2''s velocity vector from circle one, you end up with the RELATIVE velocity of circle 1 RELATIVE to circle 2.
(Its the velocity you would measure if you were measuring 1''s velocity while standing at 2, i.e. you are effectivy stationary...)

As you now have a relative velocity, you do, as you say, have a situation where you can use a moving stationary colision test.

So basiclay: when you want to do a moving-moving collision test find out the relative velocity of one from the other and then use THAT vector (i.e. the one you worked out by subtracting 1''s velocity from 2''s velocity) in your original moving-stationary colision test function. (i.e. you perform your escape test on the relative velocity vector)

(sorry if thats a bit confused, just finished massive program debugging, and its now 1:30 am... more coffee n e 1?)


Does it matter? Even if it does matter, does it matter that it matters?

Share this post

Link to post
Share on other sites
Guest Anonymous Poster
You seem to be doing the right thing. By subtracting the velocity vector of circle 2 from the velocity vector of circle one, you are finding the relative velocity of circle 1 (relative to circle 2). Then you just treat circle 2 as if it were stationary when doing the early escape test, and do the test using the velocity of circle 1 relative to circle 2.

For example, if circle 1''s velocity was 100, and circle 2''s velocity was 90, then circle 1 is moving at a velocity of 10 relative to circle 2 (the displacement between them is increasing at 10 units per time interval). So if the displacement from circle 1 to circle 2 is negative (circle 1 is already in front of circle 2) then the early escape occurs. This example was in 1 dimension, it will work the same with vectors in more than 1 dimension. By dealing with the relative speed, you can treat circle 2 as if it were sitting still for all such purposes when doing the collision test.

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!