Перекрывающиеся прямоугольники - многомерные массивы


Задача: дано два прямоугольника.Для каждого прямоугольника вы дали его нижней левой и верхней правой точками. Проверить, если они пересекаются. Если они это сделают, проверка на нижней левой и верхней правой точками перекрывающейся области.

Я решил решить эту проблему, используя многомерные массивы. Используя объект может сделать его более прозрачно Тхо. Есть ли что-нибудь, что я мог бы изменить (особенно с точки зрения задачного подхода, ошибки, код, тип кода и производительности ) ?

Я придумал следующий код: Метод, который проверяет, если дать прямоугольники пересекаются

    public static bool Overlapping(int[][] firstRectangle, int[][] secondRectangle)
    {
        bool XOverlapping = secondRectangle[0][0] <= firstRectangle[1][0] && 
        firstRectangle[0][0] <= secondRectangle[1][0];
        bool YOverlapping = secondRectangle[0][1] <= firstRectangle[1][1] && 
        firstRectangle[0][1] <= secondRectangle[1][1];
        if (XOverlapping && YOverlapping) 
        {
            return true;
        }
        else
        {
            return false;
        }
    }

Метод, который проверяет на нижней левой и верхней правой точками перекрывающейся области.

 public static void GetOverlappingArea(int[][] firstRectangle, int[][] secondRectangle)
    {
        if (Overlapping(firstRectangle, secondRectangle))
        {
            int startXOverlapping = Math.Max(firstRectangle[0][0], secondRectangle[0][0]);
            int endXOverlapping = Math.Min(firstRectangle[1][0], secondRectangle[1][0]);
            int startYOverlapping = Math.Max(firstRectangle[0][1], secondRectangle[0][1]);
            int endYOverlapping = Math.Min(firstRectangle[1][1], secondRectangle[1][1]);
            Console.WriteLine("Left down corner: (" + startXOverlapping + " , " + startYOverlapping + "), Upper right corner: (" + endXOverlapping + " , " + endYOverlapping + ")");
        }
        else
        {
            Console.WriteLine("Rectangles do not overlap");
        }
    }

Моя метода испытаний

        static void Main(string[] args)
    { 
        int[][] FirstRectangle = new[] { new[] { 2, 4 }, new[] { 8, 7 } };
        int[][] SecondRectangle = new[] { new[] { 5, 7 }, new[] { 10, 15 } };
        GetOverlappingArea(FirstRectangle, SecondRectangle);
    }


189
2
c#
задан 12 марта 2018 в 06:03 Источник Поделиться
Комментарии