У меня есть задание: Составить описание класса прямоугольника со сторонами, параллельными осям координат. Предусмотреть возможность перемещения прямоугольника на плоскости, изменение размеров, построение наименьшего прямоугольника, содержащего 2 заданных прямоугольника и прямоугольник, являющегося общей частью(пересечением) 2-х прямоугольников.
Тут есть перемещение, изменение размера, но я не могу понять, что с построением прямоугольника, являющегося общей частью(пересечением) 2-х прямоугольников! тут есть функция sovm, которая строит наименьший прямоугольник, содержащий 2 заданных прямоугольника. помогите добавить построение прямоугольника, являющегося общей частью(пересечением) 2-х прямоугольников.
class Rectangle
{
public static bool brake = false;
int x, y, Width, Height;
public Rectangle(int x, int y, int Width, int Height)
{
this.x = x;
this.y = y;
this.Width = Width; //Ширина
this.Height = Height; //Высота
}// Создаем конструктор
public void perem(int l, int h, ref int x, ref int y)
{
x -= l;
y -= h;
}
public void sovm(int x1, int x2, int y1, int y2, int Width1, int Width2, int Height1, int Height2)
{
if (x1 > x2)
{
int buf = x1;
x1 = x2;
x2 = buf;
}
if (x1 + Width1 < x2 + Width2)
{
x = x1;
Width = x2 - x1 + Width2;
}
else
{
x = x1;
Width = Width2;
}
////////////////////////
if (y1 > y2)
{
int buf = y1;
y1 = y2;
y2 = buf;
}
if (y1 + Height1 < y2 + Height2)
{
y = y1;
Height = y2 - y1 + Height2;
}
else
{
y = y1;
Height = Height2;
}
Console.WriteLine("x={0},y={1},Ширина={2},Высота={3}", x, y, Width, Height);
}
public void izm(int x, int y, ref int shirina, ref int visota)
{
shirina -= x;
visota -= y;
}
public void show(int x, int y, int shirina, int visota)
{
Console.WriteLine("{0} {1} {2} {3}", x, y, shirina, visota);
}
}
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Строим 1 прямоугольник по левой нижней точке, высоте и длине");
Console.WriteLine("Варианты команд:\n Переместить Изменить Показать Совместить Exit");
////////////////////////////////////////////////////////////////////////////////
Console.WriteLine("Введите x");
int x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите y");
int y = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите ширину");
int Width = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите высоту");
int Height = Convert.ToInt32(Console.ReadLine());
///////////////////////////////////////////////////////////////////////////////////
Console.WriteLine("Строим 2 прямоугольник по левой нижней точке, высоте и длине");
Console.WriteLine("Введите x");
int x2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите y");
int y2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите ширину");
int Width2 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите высоту");
int Height2 = Convert.ToInt32(Console.ReadLine());
////////////////////////////////////////////////////////////////////////////////////
Rectangle rect1 = new Rectangle(x, y, Width, Height);
// Здесь менять на сколько перемещать и изменять.
int izmx = 1, izmy = 1;
int perx = 1, pery = 1;
Console.WriteLine("Введите комманду");
do
{
switch (Console.ReadLine())
{
case "Perem": rect1.perem(perx, pery, ref x, ref y); break;
case "Izm": rect1.izm(izmx, izmy, ref Width, ref Height); break;
case "Show": rect1.show(x, y, Width, Height); break;
case "Sovm": rect1.sovm(x, x2, y, y2, Width, Width2, Height, Height2); break;
case "Exit": Rectangle.brake = true; break;
default: Console.WriteLine("Не, ну это не серьёзно, вводи!"); break;
}
} while (!Rectangle.brake);
}
}