Skip to content

Devilie/frontend-js-rectangles

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание на поиск вхождения одного прямоугольника в другой. Прямоугольники должны быть представлены в виде объектов с интерфейсом

{
  top: (Integer),
  left: (Integer),
  width: (Integer),
  height: (Integer)
}

где

top, left - координаты верхнего левого угла

width, height - длина и ширина соответственно в единицах системы координат. Они всегда неотрицательные.

Система координат

Точка {0; 0} находится в верхнем левом углу. Т.о. положительные значения осей направлены вправо и вниз от верхнего левого угла.

Задача

  1. Написать функцию areIntersected({}, {}), которая в виде аргументов принимает 2 объекта-прямоугольника и возврвращает логическое значение true или false в зависимости от того пересекаются они или нет. Если прямоугольники совпадают гранями или углами, то это НЕ считается за пересечение. Пример, который вернёт true:

     areIntersected({
       left: 0,
       top: 0,
       width: 20,
       height: 20
     }, {
       left: 10,
       top: 10,
       width: 25,
       height: 25        
     });
    
  2. Написать функцию 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

About

Practical task for searching of rectangles intersections

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 99.1%
  • Other 0.9%