Fun Infused Games  |   Smooth Operator

  Home   |    Archive   |    About
Circle class for C# / XNA
Date 3/29/2011    Tags XNA    (0)

Ever find yourself in need of a circle in C# / XNA and can't do it? Now you can AND you can test if your circle collides with a rectangle too. I'm pretty sure I got the circle class itself from somewhere else (if it's you, let me know and I will credit you) but I wrote the Intersects() method all by myself... at least I'm pretty sure I did.
/// <summary> 
/// Represents a 2D circle. 
/// </summary> 
public struct Circle
{
    private Vector2 v;
    private Vector2 direction;
    private float distanceSquared;

    /// <summary> 
    /// Center position of the circle. 
    /// </summary> 
    public Vector2 Center;

    /// <summary> 
    /// Radius of the circle. 
    /// </summary> 
    public float Radius;

    /// <summary> 
    /// Constructs a new circle. 
    /// </summary> 
    public Circle(Vector2 position, float radius)
    {
        this.distanceSquared = 0f;
        this.direction = Vector2.Zero;
        this.v = Vector2.Zero;
        this.Center = position;
        this.Radius = radius;
    }

    /// <summary> 
    /// Determines if a circle intersects a rectangle. 
    /// </summary> 
    /// <returns>True if the circle and rectangle overlap. False otherwise.</returns> 
    public bool Intersects(Rectangle rectangle)
    {
        this.v = new Vector2(MathHelper.Clamp(Center.X, rectangle.Left, rectangle.Right),
                                MathHelper.Clamp(Center.Y, rectangle.Top, rectangle.Bottom));

        this.direction = Center - v;
        this.distanceSquared = direction.LengthSquared();

        return ((distanceSquared > 0) && (distanceSquared < Radius * Radius));
    }
}



This article has been view 2926 times.


Comments

No comments for this article.


Add Comments

Name *
Website
  Name the animal in the picture below:

*
Comment *
Insert Cancel
Things To Click


Tags
Video Games (7)  Trivia or Die (3)  SQL (1)  iOS (3)  Game Dev (11)  Advise (14)  PC (1)  World of Chalk (2)  FIN (20)  Abduction Action! (27)  XBLIG (32)  Abduction Action (1)  Nastier (4)  ASP.net (18)  Absurd (2)  Volchaos (11)  Web (19)  Fin (1)  XNA (40)  Rant (50)  Cool (2)  Visual Studio (1)  Trivia Or Die (1)  Xbox (1)  C# (14)  Sports (11)  Design (2)  Development (13)  Hypership (28)  WP7 (8)  VolChaos (1)  Nasty (34)  Abdction Action! (1)