Added Rectangle
This commit is contained in:
89
Shapes/Circle.cs
Normal file
89
Shapes/Circle.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
using System;
|
||||
using System.Drawing;
|
||||
|
||||
namespace Shapes
|
||||
{
|
||||
public class Circle : Shape
|
||||
{
|
||||
public Point Center { get; private set; }
|
||||
public double Radius { get; private set; }
|
||||
|
||||
public override Color Fill { get; set; }
|
||||
public override Color Color { get; set; }
|
||||
public override double Height { get; }
|
||||
public override double Width { get; }
|
||||
|
||||
/**
|
||||
* Constructor with x-y Location for center
|
||||
*
|
||||
* @param x The x-location of the center of the circle -- must be a valid double
|
||||
* @param y The y-location of the center of the circle
|
||||
* @param radius The radius of the circle -- must be greater or equal to zero.
|
||||
* @throws ShapeException The exception thrown if the x, y, or z are not valid
|
||||
*/
|
||||
public Circle(double x, double y, double radius)
|
||||
{
|
||||
Validator.ValidatePositiveDouble(radius, "Invalid radius");
|
||||
Center = new Point(x, y);
|
||||
Radius = radius;
|
||||
Color = Color.Black;
|
||||
Fill = Color.White;
|
||||
Height = radius * 2;
|
||||
Width = radius * 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor with a Point for center
|
||||
*
|
||||
* @param center The x-location of the center of the circle -- must be a valid point
|
||||
* @param radius The radius of the circle -- must be greater or equal to zero.
|
||||
* @throws ShapeException The exception thrown if the x, y, or z are not valid
|
||||
*/
|
||||
public Circle(Point center, double radius) {
|
||||
|
||||
Validator.ValidatePositiveDouble(radius, "Invalid radius");
|
||||
if (center == null)
|
||||
throw new ShapeException("Invalid center point");
|
||||
Center = center;
|
||||
Radius = radius;
|
||||
Color = Color.Black;
|
||||
Fill = Color.White;
|
||||
Height = radius * 2;
|
||||
Width = radius * 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle
|
||||
* @param deltaX a delta change for the x-location of center of the circle
|
||||
* @param deltaY a delta change for the y-location of center of the circle
|
||||
* @throws ShapeException Exception thrown if either the delta x or y are not valid doubles
|
||||
*/
|
||||
public void Move(double deltaX, double deltaY)
|
||||
{
|
||||
Center.Move(deltaX, deltaY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale the circle
|
||||
*
|
||||
* @param scaleFactor a non-negative double that represents the percentage to scale the circle.
|
||||
* 0>= and <1 to shrink.
|
||||
* >1 to grow.
|
||||
* @throws ShapeException Exception thrown if the scale factor is not valid
|
||||
*/
|
||||
public override void Scale(double scaleFactor)
|
||||
{
|
||||
Validator.ValidatePositiveDouble(scaleFactor, "Invalid scale factor");
|
||||
Radius *= scaleFactor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The area of the circle.
|
||||
*/
|
||||
public override double ComputeArea()
|
||||
{
|
||||
return Math.PI * Math.Pow(Radius, 2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user