Розглянемо область (2D), заповнена рядками випадковим чином (наступний малюнок). Ми зацікавлені, щоб заповнити порожні проміжки між рядками, включаючи чотири граничні краї таким чином:
0- максимізація розміру посилок;
1- форма заповнення посилок квадратно вирівняна горизонтально або вертикально;
2- форма заповнення посилок - квадратна, тобто розслаблене вирівнювання ;
3- форма заповнення посилок - це будь-який чотирикутник. наше оригінальне запитання
Тож наразі існує три різних сценарії.
Зауважте, що рядки мають форму [x1,y1,x2,y2]
точок форми , дійсні числа.
[* * *] Ідеї можливих рішень / алгоритмів / фрагментів коду / тощо більше ніж вітаються.
Оновлення 1: Ми можемо керувати рішенням у першому випадку:
кроки:
1- рядок
2- растрові лінії в растрову карту;
3 - пошук довколишніх осередків для кожної комірки потрібного кольору (тобто одного кольору) з цільовою функцією для максимального використання площа, тобто кількість комірок.
Він працює добре, проте охоплює лише перший сценарій, а також повільно.
Оновлення 2:
Ми припускали, що читач знайомий з концепцією простору-заповнення плиткою. Ви можете перейти за посиланням для натхнення. Однак зауважте, що наша проблема інша. Оскільки ми не заповнюємо порожній простір випадковим чином і не вибираємо розмір випадковим чином. Рішення має бути ітераційним. Для всіх випадків кількість обмежених посилок не обмежується. Дійсно, користувач повинен обмежувати кількість ітерацій, наприклад, вибираючи мінімальну площу для посилок. Це очевидно в наведеному вище прикладі, в якому ми дискретизували рядки в пікселі із заданим розміром. Тобто процедура повинна тривати до тих пір, поки не заповниться вся порожня площа з дотриманням критерію, наприклад, максимальної площі посилок.
Оновлення 3:
підсумок:
Одне додаток - це з'ясувати розподіл недоторканих недоторканих блоків "скелі" у сильно розбитій "шахті". Це може бути дуже корисним для багатьох аспектів, включаючи конструкцію буріння, фінансову оцінку тощо.
Опис:
Для шахти декоративної скелі (каменю) вироби, що представляють собою блоки неушкоджених гірських порід, вирізаних прямокутними кубиками, ціна тісно залежить від розміру блок. Витягування блоку з відповідної ділянки, тобто без великих руйнувань, бажано, якщо кількість решти деталей буде невеликою. Зазвичай невеликі шматки гірських порід не мають економічної цінності відносно і вважаються такими як відходи.
Питання в цій публікації досліджує шляхи вирішення подібної проблеми.
Математичний погляд на проблему можна викласти так:
2D: Знайдіть усі прямокутники, які можна було б дістати з даної 2D області, деякими лініями, оптимізованими для більшого розміру прямокутника.
3D: Знайдіть усі прямокутні кубики, які можна було б витягти з даної 3D-області з деякими підплощинами (краще: багатокутники), оптимізованими для більшого розміру блоку.
Оскільки це є частиною поточного дослідження, на деякі запитання в коментарях нижче немає певних відповідей. Ми вважаємо, що наданої тут інформації тут справді достатньо, щоб отримати загальну картину проблеми. Тим не менш, ми надаємо деякі деталі, наскільки це можливо, для переваг громади.
Ви можете поставити деякі обмеження щодо вирішення остаточного питання, хоча, на наш погляд, завжди можна додати більше пізніше. Наприклад, виконайте такі дії: {2D case}
Найкращий розмір блоку (економічно оптимальний прямокутник), який потрібно витягти за умов, зазначених вище, 1x1 m
наведено 10x10 m
для регіону в прикладі. Це одне обмеження, визначене на основі економічної цінності. Мінімальний працездатний розмір для різання тощо0.15x0.15 m
; так що це друга межа розміру.
На малюнку вище показана функція економічного значення залежно від розміру блоку. Тож для цього конкретного випадку кожен шматок гірської породи менше, ніж 0.15x0.15 m
просто відходи. Розмір блоку не буде більшим, ніж 1.7x1.7 m
через обмеження експлуатації.