Задание на поиск вхождения одного прямоугольника в другой. Прямоугольники должны быть представлены в виде объектов с интерфейсом
{
top: (Integer),
left: (Integer),
width: (Integer),
height: (Integer)
}
где
top, left - координаты верхнего левого угла
width, height - длина и ширина соответственно в единицах системы координат. Они всегда неотрицательные.
Точка {0; 0} находится в верхнем левом углу. Т.о. положительные значения осей направлены вправо и вниз от верхнего левого угла.
-
Написать функцию
areIntersected({}, {})
, которая в виде аргументов принимает 2 объекта-прямоугольника и возврвращает логическое значениеtrue
илиfalse
в зависимости от того пересекаются они или нет. Если прямоугольники совпадают гранями или углами, то это НЕ считается за пересечение. Пример, который вернётtrue
:areIntersected({ left: 0, top: 0, width: 20, height: 20 }, { left: 10, top: 10, width: 25, height: 25 });
-
Написать функцию
filterVisible({}, [])
которая принимает первым аргументом прямоугольник, а вторым массив прямоугольников. Она должна отфильтровать только те прямоугольники из массива, которые пересекаются с прямоугольником из первого аргумента и имеют размер. Пример, который вернёт массив только с первым и вторым объектами из входящего массива:filterVisible({ left: 0, top: 0, width: 20, height: 20 }, [ { left: 10, top: 10, width: 25, height: 25 }, { left: 15, top: 10, width: 20, height: 20 }, { left: 10, top: 10, width: 0, height: 25 }, { left: 100, top: 10, width: 5, height: 5 } ]);
Вот несколько ссылок на статьи, которые смогут помочь определить алгоритм определения вхождения одного прямоугольника в другой
- как проверить пересекаются ли два прямоугольника
- Как вычислить пересечение двух прямоугольников?
- Вхождение числового диапазона в другой числовой диапазон.
- логические операции
>, <, >=, <=
- условный оператор
if
- метод
.filter()
у массива - оператор
return
- алгоритм определения пересечения 2 отрезков на прямой.
Проверку правиольности решения можно осуществить с помощью автотестов в /test/index.html. Больше подробностье об инфраструктуре проекта в HELP.md