static void Main(string[] args) { var rc1 = new RectangleCoordinates(3, 3, 6, 6); var rc2 = new RectangleCoordinates(3, 3, 5, 5); RectangleOverlappingCounter counter = new RectangleOverlappingCounter(); var result = counter.CalculateArea(counter.DefineOverlapCoordinates(rc1, rc2)); Console.WriteLine(result); }
public RectangleCoordinates DefineOverlapCoordinates(RectangleCoordinates rc1, RectangleCoordinates rc2) { if (rc1.X1 > rc2.X1) { var tempRect = rc1; rc1 = rc2; rc2 = tempRect; } bool areRectanglesFading = rc1.X2 > rc2.X1 && rc1.X1 <rc2.X2 && rc1.Y2> rc2.Y1 && rc1.Y1 < rc2.Y2; if (areRectanglesFading) { int x1 = rc1.X1 > rc2.X1 ? rc1.X1 : rc2.X1; int y1 = rc1.Y1 > rc2.Y1 ? rc1.Y1 : rc2.Y1; int x2 = rc1.X2 < rc2.X2 ? rc1.X2 : rc2.X2; int y2 = rc1.Y2 < rc2.Y2 ? rc1.Y2 : rc2.Y2; return(new RectangleCoordinates(x1, y1, x2, y2)); } return(new RectangleCoordinates(0, 0, 0, 0)); }
public int CalculateArea(RectangleCoordinates coordinates) { return(Math.Abs(coordinates.X1 - coordinates.X2) * Math.Abs(coordinates.Y1 - coordinates.Y2)); }