martsen
@martsen
Программист-дроновод

Как вписать произвольную фигуру в фигуру, которая состоит из прямоугольников N x M ?

Здравствуйте!

В какую сторону копать при решении этой задачи?
Немного ее поясню графически:
Задан некий прямоугольный участок размером N x M
7d722db3d25b489baf4432154ede758a.png
Задана некая произвольная область, которую необходимо вписать в фигуру, которую можно собрать из вышеописанных прямоугольников. В простом случаем это может выглядеть вот так:
8be6ba7ff26141f2a710d0eb722ad206.png

Прямоугольники необязательно должны быть вплотную друг другу. Можно (и даже лучше), чтобы они наезжали друг на друга.

Буду рад алгоритмам из старой доброй математики, полезным статьям, ссылкам на форум или псевдокод.

Update:
Также стоит задача оптимизации по уменьшению количества прямоугольников. Например, на картинке с примером левая часть фигуры покрыта четырьмя прямоугольниками. Если убрать верхний левый (или нижний левый) и сместить оставшиеся три прямоугольника вверх (вниз), то получиться покрыть область фигуры при помощи трех прямоугольников.
f46158904c5242fab84f87cc3e2c80ab.png

Update2:
Фигура, которую нужно вписать задается при помощи множества точек на плоскости. Например, приходит массив [{x1,y1}, {x2,y2},{x3,y3}] и поочередно их соединяя будет получен треугольник.
В простейшем случае точки будут соединены прямыми линиями. Соединение при помощи сплайнов пока не рассматривается.
  • Вопрос задан
  • 4160 просмотров
Решения вопроса 2
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Разбить область на сетку мелких прямоугольников как у вас на картинке. Пройтись по каждому прямоугольнику и выяснить проходит ли на нём фигура. Нет - удаляем прямоугольник, да - оставляем.
После этого можно объединить все смежные прямоугольники, чтобы снизить их общее количество.
Ответ написан
Neuroware
@Neuroware
Программист в свободное от работы время
Вопрос не совсем из области математики, т.к. фигура тут любая, значит задача разбивается на различные задачи, для каждого из возможных классов фигур. К тому же не ясно из задачи чем задается та самая фигура, это векторная фигура или растр, в зависимости от этого и будет алгоритм
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы