Added Check in Validator for rectangle having the same points.

This commit is contained in:
Brady
2019-10-20 22:22:31 -06:00
parent 268c742f6c
commit a586027c1f
4 changed files with 50 additions and 14 deletions

View File

@@ -24,7 +24,7 @@ namespace Shapes
Height = new Line(point1, point4).ComputeLength(); Height = new Line(point1, point4).ComputeLength();
Width = new Line(point1, point2).ComputeLength(); Width = new Line(point1, point2).ComputeLength();
CenterPoint = new Point(point1.X + (Width/2), point1.Y + (Height/2)); CenterPoint = new Point(point1.X + (Width/2), point1.Y + (Height/2));
Validator.ValidateRectangle(point1, point2, point3, point4, $"Attempted to create an invalid shape {this.GetType()}"); Validator.ValidateRectangle(Points, $"Attempted to create an invalid shape {this.GetType()}");
} }
public Rectangle(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4) public Rectangle(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
@@ -41,7 +41,7 @@ namespace Shapes
Height = new Line(point1, point2).ComputeLength(); Height = new Line(point1, point2).ComputeLength();
Width = new Line(point1, point4).ComputeLength(); Width = new Line(point1, point4).ComputeLength();
CenterPoint = new Point((point1.X + Width)/2, (point1.Y + Height)/2); CenterPoint = new Point((point1.X + Width)/2, (point1.Y + Height)/2);
Validator.ValidateRectangle(point1, point2, point3, point4, $"Attempted to create an invalid shape {this.GetType()}"); Validator.ValidateRectangle(Points, $"Attempted to create an invalid shape {this.GetType()}");
} }
public Rectangle(Point point, Size size) public Rectangle(Point point, Size size)
@@ -58,7 +58,7 @@ namespace Shapes
Height = new Line(point1, point2).ComputeLength(); Height = new Line(point1, point2).ComputeLength();
Width = new Line(point1, point4).ComputeLength(); Width = new Line(point1, point4).ComputeLength();
CenterPoint = new Point((point1.X + Width)/2, (point1.Y + Height)/2); CenterPoint = new Point((point1.X + Width)/2, (point1.Y + Height)/2);
Validator.ValidateRectangle(point1, point2, point3, point4, $"Attempted to create an invalid shape {this.GetType()}"); Validator.ValidateRectangle(Points, $"Attempted to create an invalid shape {this.GetType()}");
} }
public override double ComputeArea() public override double ComputeArea()

View File

@@ -4,7 +4,31 @@ using System.Drawing;
namespace Shapes namespace Shapes
{ {
public class Triangle public class Triangle : Shape
{ {
public override Color Fill { get; set; }
public override Color Color { get; set; }
public override double Width { get; }
public override double Height { get; }
public Triangle(Point point1, Point point2, Point point3)
{
}
public Triangle(double x1, double y1, double x2, double y2, double x3, double y3)
{
}
public override double ComputeArea()
{
throw new NotImplementedException();
}
public override void Scale(double scaleFactor)
{
throw new NotImplementedException();
}
} }
} }

View File

@@ -20,21 +20,33 @@ namespace Shapes
throw new ShapeException(errorMessage); throw new ShapeException(errorMessage);
} }
public static void ValidateRectangle(Point point1, Point point2, Point point3, Point point4, String errorMessage) public static void ValidateRectangle(List<Point> points, String errorMessage)
{ {
List<Point> pointList = new List<Point>(points);
var TOLERANCE = Double.Epsilon + Double.Epsilon; var TOLERANCE = Double.Epsilon + Double.Epsilon;
var plumLine1 = new Line(point1, point3); var plumLine1 = new Line(points[0], points[2]);
var plumLine2 = new Line(point2, point4); var plumLine2 = new Line(points[1], points[3]);
var heightLine1 = new Line(point1, point4); var heightLine1 = new Line(points[0], points[3]);
var heightLine2 = new Line( point2, point3); var heightLine2 = new Line( points[1], points[2]);
var lengthLine1 = new Line(point1, point2); var lengthLine1 = new Line(points[0], points[1]);
var lengthLine2 = new Line(point4, point3); var lengthLine2 = new Line(points[3], points[2]);
if (Math.Abs(plumLine1.ComputeLength() - plumLine2.ComputeLength()) > TOLERANCE if (Math.Abs(plumLine1.ComputeLength() - plumLine2.ComputeLength()) > TOLERANCE
|| Math.Abs(heightLine1.ComputeLength() - heightLine2.ComputeLength()) > TOLERANCE || Math.Abs(heightLine1.ComputeLength() - heightLine2.ComputeLength()) > TOLERANCE
|| Math.Abs(lengthLine1.ComputeLength() - lengthLine2.ComputeLength()) > TOLERANCE ) || Math.Abs(lengthLine1.ComputeLength() - lengthLine2.ComputeLength()) > TOLERANCE )
{ {
throw new ShapeException(errorMessage); throw new ShapeException(errorMessage);
} }
while(pointList.Count > 0)
{
var tmp = pointList[0];
pointList.Remove(tmp);
if (pointList.Contains(tmp))
{
throw new ShapeException(errorMessage);
}
}
} }

View File

@@ -16,12 +16,12 @@ namespace Temp
var tmp = line.ComputeLength(); var tmp = line.ComputeLength();
var point = new Point(3, 3); var point = new Point(3, 3);
point.Color = Color.Aqua; point.Color = Color.Aqua;
var rectangle = new Rectangle(new Point(3,3), new Point(6,3), new Point(6,6), new Point(3,6)); var rectangle = new Rectangle(new Point(3,3), new Point(7,3), new Point(7,6), new Point(3,6));
//var rectangle2 = new Rectangle(new Point(3,0), new Point(3,0), new Point(3,2), new Point(0,3)); //var rectangle2 = new Rectangle(new Point(3,0), new Point(3,0), new Point(3,2), new Point(0,3));
Console.WriteLine($"({rectangle.Points[0].X}, {rectangle.Points[0].Y}), ({rectangle.Points[1].X}, {rectangle.Points[1].Y}), ({rectangle.Points[2].X}, {rectangle.Points[2].Y}), ({rectangle.Points[3].X}, {rectangle.Points[3].Y}) Height:{rectangle.CalculateHeight()} Width:{rectangle.CalculateWidth()} Center: {rectangle.CenterPoint.X}, {rectangle.CenterPoint.Y}"); Console.WriteLine($"({rectangle.Points[0].X}, {rectangle.Points[0].Y}), ({rectangle.Points[1].X}, {rectangle.Points[1].Y}), ({rectangle.Points[2].X}, {rectangle.Points[2].Y}), ({rectangle.Points[3].X}, {rectangle.Points[3].Y}) Height:{rectangle.CalculateHeight()} Width:{rectangle.CalculateWidth()} Center: {rectangle.CenterPoint.X}, {rectangle.CenterPoint.Y}");
rectangle.Rotate(180); rectangle.Rotate(180);
Console.WriteLine($"({rectangle.Points[0].X}, {rectangle.Points[0].Y}), ({rectangle.Points[1].X}, {rectangle.Points[1].Y}), ({rectangle.Points[2].X}, {rectangle.Points[2].Y}), ({rectangle.Points[3].X}, {rectangle.Points[3].Y}) Height:{rectangle.CalculateHeight()} Width:{rectangle.CalculateWidth()} Center: {rectangle.CenterPoint.X}, {rectangle.CenterPoint.Y}"); Console.WriteLine($"({rectangle.Points[0].X}, {rectangle.Points[0].Y}), ({rectangle.Points[1].X}, {rectangle.Points[1].Y}), ({rectangle.Points[2].X}, {rectangle.Points[2].Y}), ({rectangle.Points[3].X}, {rectangle.Points[3].Y}) Height:{rectangle.CalculateHeight()} Width:{rectangle.CalculateWidth()} Center: {rectangle.CenterPoint.X}, {rectangle.CenterPoint.Y}");
rectangle.Rotate(90); rectangle.Rotate(180);
Console.WriteLine($"({rectangle.Points[0].X}, {rectangle.Points[0].Y}), ({rectangle.Points[1].X}, {rectangle.Points[1].Y}), ({rectangle.Points[2].X}, {rectangle.Points[2].Y}), ({rectangle.Points[3].X}, {rectangle.Points[3].Y}) Height:{rectangle.CalculateHeight()} Width:{rectangle.CalculateWidth()} Center: {rectangle.CenterPoint.X}, {rectangle.CenterPoint.Y}"); Console.WriteLine($"({rectangle.Points[0].X}, {rectangle.Points[0].Y}), ({rectangle.Points[1].X}, {rectangle.Points[1].Y}), ({rectangle.Points[2].X}, {rectangle.Points[2].Y}), ({rectangle.Points[3].X}, {rectangle.Points[3].Y}) Height:{rectangle.CalculateHeight()} Width:{rectangle.CalculateWidth()} Center: {rectangle.CenterPoint.X}, {rectangle.CenterPoint.Y}");
} }