To detect a collision between two circles, we check if the distance between their centers is smaller than the sum of their radii.
To detect a collision between a slice (in this case half) of a circle and a circle:
- Check if the circles are in collision.
- Find the two points of the imaginary segment that splits the circle (in the middle).
- Check if either of these two points is contained inside the other circle (if so, it is colliding with both slices, red & blue).
- If not, compute the angle between the two circles and use that to decide if the circles are touching from one side or the other.
Is there any reasonable way to compute this on moving objects? i.e, so collisions will not be missed because of the discrete nature of frames?