Составить описание класса прямоугольников со сторонами, параллельными осям координат - C# (186036)
Формулировка задачи:
Помогите с заданием, пожалуйста.
Вот само задание:
Составить описание класса прямоугольников со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольников на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего два заданных прямоугольника, и прямоугольника, являющегося общей частью ( пересечением ) двух прямоугольников.
Написать программу, демонстрирующую все разработанные элементы класса.
Заранее спасибо.
Решение задачи: «Составить описание класса прямоугольников со сторонами, параллельными осям координат»
textual
Листинг программы
using System;
namespace ConsoleApplication1
{
class Rectangle
{
public Rectangle(int x, int y, int width, int height)
{
X = x;
Y = y;
Width = width;
Height = height;
}
public int X
{
get;
set;
}
public int Y
{
get;
set;
}
public int Width
{
get;
set;
}
public int Height
{
get;
set;
}
public void Offset(int x, int y)
{
X += x;
Y += y;
}
public static Rectangle Intersect(Rectangle a, Rectangle b)
{
int maxStartX = Math.Max(a.X, b.X);
int minEndX = Math.Min(a.X + a.Width, b.X + b.Width);
int MaxStartY = Math.Max(a.Y, b.Y);
int minEndY = Math.Min(a.Y + a.Height, b.Y + b.Height);
if (minEndX >= maxStartX && minEndY >= MaxStartY)
{
return new Rectangle(maxStartX, MaxStartY, minEndX - maxStartX, minEndY - MaxStartY);
}
return null;
}
public static Rectangle Union(Rectangle a, Rectangle b)
{
int minStartX = Math.Min(a.X, b.X);
int maxEndX = Math.Max(a.X + a.Width, b.X + b.Width);
int minStartY = Math.Min(a.Y, b.Y);
int MaxEndY = Math.Max(a.Y + a.Height, b.Y + b.Height);
return new Rectangle(minStartX, minStartY, maxEndX - minStartX, MaxEndY - minStartY);
}
public override string ToString()
{
return String.Format("X:{0} Y:{1} W:{2} H:{3}", X, Y, Width, Height);
}
}
class Program
{
static void Main(string[] args)
{
Rectangle r1 = new Rectangle(0, 0, 10, 10);
Console.Write("Исходный прямоугольник: " + r1);
Console.Write("Смещённый прямоугольник: ");
r1.Offset(5, 0);
Console.WriteLine(r1);
Rectangle r2 = new Rectangle(2, 2, 20, 20);
Console.WriteLine("Пересечение прямоугольников: " + Rectangle.Intersect(r1, r2));
Console.WriteLine("Объединение прямоугольников: " + Rectangle.Union(r1, r2));
Console.ReadKey();
}
}
}