/// <summary>
        /// Determines if there is a collision between a circle and rectangle
        /// </summary>
        /// <param name="r">The bounding rectangle</param>
        /// <param name="c">The bounding circle</param>
        /// <returns>true for collision, false otherwise</returns>
        public static bool Collides(BoundingRectangle r, BoundingCircle c)
        {
            float nX = MathHelper.Clamp(c.Center.X, r.Left, r.Right);
            float nY = MathHelper.Clamp(c.Center.Y, r.Top, r.Bottom);

            return(Math.Pow(c.Radius, 2) >= Math.Pow(c.Center.X - nX, 2) + Math.Pow(c.Center.Y - nY, 2));
        }
Beispiel #2
0
 /// <summary>
 /// Determines if this BoundingPoint collides with a BoundingCircle
 /// </summary>
 /// <param name="c">the BoundingCircle</param>
 /// <returns>true on collision, false otherwise</returns>
 public bool CollidesWith(BoundingCircle c)
 {
     return(CollisionHelper.Collides(c, this));
 }
 /// <summary>
 /// Alternate call
 /// </summary>
 /// <param name="c"></param>
 /// <param name="r"></param>
 /// <returns></returns>
 public static bool Collides(BoundingCircle c, BoundingRectangle r) => Collides(r, c);
 /// <summary>
 /// Detects a collision between a circle and point
 /// </summary>
 /// <param name="c">the circle</param>
 /// <param name="p">the point</param>
 /// <returns>true on collision, false otherwise</returns>
 public static bool Collides(BoundingCircle c, BoundingPoint p)
 {
     return(Math.Pow(c.Radius, 2) >= Math.Pow(c.Center.X - p.X, 2) + Math.Pow(c.Center.Y - p.Y, 2));
 }
 /// <summary>
 /// Detects a collision between two circles
 /// </summary>
 /// <param name="c1">the first circle</param>
 /// <param name="c2">the second circle</param>
 /// <returns>true for a collision, false otherwise</returns>
 public static bool Collides(BoundingCircle c1, BoundingCircle c2)
 {
     return(Math.Pow(c1.Radius + c2.Radius, 2) >= Math.Pow(c2.Center.X - c1.Center.X, 2) + Math.Pow(c2.Center.Y - c1.Center.Y, 2));
 }