Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static ShapeCollision TestCircleVsCircle
- (Circle circleA, Circle circleB, ShapeCollision into = null, bool flip = false)
- {
- Circle circle1 = flip ? circleB : circleA;
- Circle circle2 = flip ? circleA : circleB;
- //add both radii together to get the colliding distance
- float totalRadius = circle1.TransformedRadius + circle2.TransformedRadius;
- //find the distance between teh two circles
- float distanceSquared = (circle1.Position- circle2.Position).LengthSquared();
- if(distanceSquared < totalRadius * totalRadius)
- {
- if (into == null)
- {
- into = new ShapeCollision();
- }
- else
- {
- into.Reset();
- }
- float difference = totalRadius - (float)Math.Sqrt(distanceSquared);
- into.Tested = circle1;
- into.TestedAgainst = circle2;
- Vector2 unitVector = circle1.Position - circle2.Position;
- unitVector.Normalize();
- into.UnitVectorX = unitVector.X;
- into.UnitVectorY = unitVector.Y;
- into.SeperationX = unitVector.X * difference;
- into.SeperationY = unitVector.Y * difference;
- return into;
- }
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement