Рівномірне розташування N точок в обмеженій області
Необхідно розробити/знайти алгоритм рівномірного розташування певного числа точок у довільній замкнутій двовимірній області. "Рівномірного" - тут означає, що N точок оптимально розташовані по всій площі фігури.
Може хтось направить на правильний шлях.
Є одновимірна область. Розміром S. Отже точки будуть віддалені один від одного на відстань S/N. Ще питання?
Щось я не зовсім зрозумів зв'язок між моїм питанням та твоєю пропозицією. Як я сказав - область двовимірна в декартовому просторі R2, причому тут одновимірна область ? А розв'язання поставленого завдання потребує розробки набагато складнішого алгоритму, ніж запропонованого тобою.
Натягніть сітку на свою фігуру. Площа комірки S/N. У вузлах сітки отримаєш точки. Ще питання?
Беремо найпростіший варіант. Є коло, у ньому треба поступово розташувати 3 точки. Припустимо площу кола становить 9 м^2. Ділимо на 3, отримуємо 3 м 2 - площа комірки. Як за цією інформацією "натягнути сітку на фігуру" та "отримати точки". ІМХО - марення.
Ну заповнюй від центру
Знаходиш цетр, малюєш у ньому крапку, потім на ліво через певний інтервал малюєш точки, коли доходиш до кінця кола, потім від цетра точно також малюєш вправо, далі на крок вгору, і знову на ліво і вправо, коли упрєшся на верху, йдеш від центру вниз
Тож прикол у тому, що кількість точок N може змінюватися. Тому "кроковий" алгоритм для довільної області тут не застосовується. При цьому: 1. "Знаходиш центр" - можна без проблем знайти для ідеальних ситуацій типу коло, квадрат. 2. "через певний інтервал" - його спершу треба знайти =))
Тобто. НЕ стоїть завдання нанесення сітки, стоїть завдання "рівномірної заливки" області деякою кількістю точок N.
Береш фігуру. Представляєш усі його пікселі у вигляді лінійного масиву. Що рівномірно і заповнюєш.
4ECHOKвідштовхуєш кожну точку від інших із силою пропорційною відстані, і так само від стінок
не найшвидший метод, але працюватиме
> Береш фігуру. Представляєш усі його пікселі у вигляді лінійного > масиву. Який рівномірно і заповнюєш.
Уявімо прямокутну область X * Y. N – кількість точок. Якщо N=X чи N=Y, то застосувавши алгоритм лінійного розташування, отримаємо, що це точки вибудовуються у ряд чи колонку. Можна знайти такі приклади.
Тому цей алгоритм теж не зовсім підходить.
> відштовхуєш кожну точку від інших із силою пропорційною > відстані, і так само від стін
А ось цей алгоритм, на мою думку, може дати результати.
> Уявімо прямокутну область X * Y. N – кількість > точок. Якщо N=X чи N=Y, то застосувавши алгоритм лінійного > розташування, отримаємо, що всі точки вишиковуються в ряд > чи колонку. Можна знайти кілька таких прикладів. Це вже зокрема, з якими потрібно і цілком можна боротися. Наприклад випадковим усуненням. Або особливим способом взяття лінійного масиву. Скажімо: спочатку беремо по горизонталі, потім вертикалі, потім знову по горизонталі, і т.д. Загалом тут експериментувати необхідно, але спосіб реально набагато швидше буде, ніж з відштовхуванням.
1. Можна вписати фігуру в більш просту - наприклад квадрат і рівномірно заповнювати його, і відкидати крапки, що не потрапляють у фігуру. 2. Можна апроксимувати фігурубагатокутником - і рівномірно заповнювати його. 3. Для квадратів, прямокутників, кіл і багатокутників - завдання розбиралися в п'ятничних завданнях МВо.