Sign in to follow this  

Intersection between a circle and an aabb?

This topic is 1516 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

Step 1) Find the closest point on the AABB to the center (C) of the circle: This will be your potential collision location. (P)

Step 2) If the distance between C and P (D = magnitude(C - P)) is less than the radius of the circle (R), then you have a collision!

Step 3) The penetration depth is then (R - D)

Step 4) The normal is the normalized (C - P) vector.

Share this post


Link to post
Share on other sites

This only works if the sphere center is outside of the box (which should be the majority of cases though). If the sphere center is inside the box you need to compute the distance to each side of the box and keep track of the closest one. The defines the axis of minimum penetration and you can construct the contact point from there.

 

You also need to be careful with the location of your collision point. I would move the contact point out onto the surface of the sphere for consistent friction in a rigid body simulation.

Edited by Dirk Gregorius

Share this post


Link to post
Share on other sites

For the record, using this method( The one WarAmp gave) I still get a little bit of overlap. here is my code :

            Vector2 p;
            p.X = Utils.Clamp(c.myCenter.X, b.Min.X, b.Max.X);
            p.Y = Utils.Clamp(c.myCenter.Y, b.Max.Y, b.Min.Y);

            Vector2 toClosest = c.myCenter - p;

            float d = toClosest.LengthFast;

            Depth = c.myRadius - d;
            myNormal = toClosest / d;

289wqhv.jpg

 

The triangle in this picture is encapsulated by a bounding circle, and this is how far it still impregnates.

Edited by Doublefris

Share this post


Link to post
Share on other sites

This topic is 1516 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.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this