Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Порядок расположения блоков (https://javascript.ru/forum/offtopic/79322-poryadok-raspolozheniya-blokov.html)

laimas 23.01.2020 16:32

Порядок расположения блоков
 
Из массива описывающего координаты/размеры блоков требуется указать их размеры в порядке их расположения. Для этого, для №23 отсортировали вложенные массивы по минимуму координаты X с сохранением ключей, взяли их ширину, затем, берутся отсортированные по минимуму координаты Y и по ключам массива X получается высота.

Но блоки могут иметь и расположение сверху вниз как у №21, поэтому порядок их размеров будет указан неверно. Как минимумом проходов по массивам можно определить (по какому признаку/условию), что расположение блоков, назовем условно, альбомное или портретное?

рони 23.01.2020 17:28

laimas,
может взять вертикальную/горизонтальную линию по середине и проверить все блоки на пересечение, если половина блоков принадлежит линии то портретное/альбомное.

laimas 23.01.2020 17:33

Почему половина и по какой из половин проверять? Ведь, допустим, определили, что половина сверху до оси X середины подпадает под определение "портрет", а ниже координаты X будет слева блок, то определение будет неверным. Или я не понял идеи.

рони 23.01.2020 17:40

laimas,
определить прямоугольник в который входят все блоки, согнуть его напополам и смотреть количество блоков в месте сгиба, для надёжности можно согнуть по вертикали и горизонтали и смотреть что больше.

laimas 23.01.2020 17:45

Цитата:

Сообщение от рони
определить прямоугольник в который входят все блоки

Это общая площадь, она определяется также. То есть взяли координаты этой пощади, затем определяем сколько вхождений координат блоков попадет в ее части слева/справа сверху/снизу?

рони 23.01.2020 18:04

laimas,
может смотреть где следующий блок справа или снизу?

laimas 23.01.2020 18:11

Вот воочию расставил и разделил. Если считать вхождения, то получится, что по вертикали больше, но в данном случае нужно считать слева на право, сверху вниз.

laimas 23.01.2020 18:18

Цитата:

Сообщение от рони
может смотреть где следующий блок справа или снизу?

Да, получается что так - больше, но нет смежных по другой оси.

laimas 23.01.2020 18:30

Все, вот так будет самое выгодное - начинать проверку всегда по оси Y сверху вниз, как только обнаруживается другой блок по оси X, остановка, это "альбом", иначе считать порядок сверху вниз.

Malleys 23.01.2020 18:53

Цитата:

Сообщение от laimas
Порядок расположения блоков

Цитата:

Сообщение от laimas
Из массива описывающего координаты/размеры блоков требуется указать их размеры в порядке их расположения.

Цитата:

Сообщение от laimas
Как минимумом проходов по массивам можно определить... что расположение блоков, назовем условно, альбомное или портретное?

Вы хотите отсортировать эти прямоугольники на плоскости или определить, что они все ориентированы одинаково?


Часовой пояс GMT +3, время: 13:23.