Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Равномерное расположение N точек в ограниченной области.


4ECHOK ©   (2005-11-19 18:21:00) 

Необходимо разработать/найти алгоритм равномерного расположения определенного числа точек в произвольной замкнутой двухмерной области.
"Равномерного" - тут значит, что N точек оптимально расположены по всей площади фигуры.

Может кто направит на правильный путь ...


Думкин   (2005-11-21 06:20:00) [1]

1. Можно вписать фигуру в более простую - например квадрат и равномерно заполнять его, и отбрасывть точки не попадающие в фигуру.
2. Можно апроксимировать фигуру многоугольником - и равномерно заполнять его.
3. Для квадратов, прямоугольников, окружностей и многоугольников - задачи разбирались в пятничных задачках МВо.


П7   (2005-11-20 18:20:00) [2]


> Представим себе прямоугольную область X*Y. N - количество
> точек. Если N=X или N=Y, то применив алгоритм линейного
> расположения, получим, что все точки выстраиваются в ряд
> или колонку. Можно найти несколько таких примеров.

Это уже частности, с которыми нужно и вполне можно бороться. Например случайным смещением. Или особым способом взятия линейного массива. Скажем: сначала берём по горизонтали, затем по вертикали, затем снова по горизонтали, и т.д. В общем тут экспериментировать нужно, но метод реально на порядок быстрее будет, чем с отталкиванием.


4ECHOK   (2005-11-20 13:15:00) [3]


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


Представим себе прямоугольную область X*Y. N - количество точек. Если N=X или N=Y, то применив алгоритм линейного расположения, получим, что все точки выстраиваются в ряд или колонку. Можно найти несколько таких примеров.

Поэтому, данный алгоритм тоже не совсем подходит.


> отталкиваеш каждую точку от остальных с силой пропорциональной
> расстоянию, и так же от стенок


А вот этот алгоритм, по-моему, может дать результаты.


П7   (2005-11-20 05:18:00) [4]


> PAVIA ©   (19.11.05 20:57) [7]

По моему самый оптимальный (качество\скорость) вариант решения задачи.


NE_Parovoz   (2005-11-19 21:20:00) [5]

4ECHOK
отталкиваеш каждую точку от остальных с силой пропорциональной расстоянию, и так же от стенок

не самый быстрый метод, но работать будет


PAVIA   (2005-11-19 20:57:00) [6]

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


4ECHOK   (2005-11-19 19:48:00) [7]

Дык прикол в том, что число точек N может меняться. Поэтому "шаговый" алгоритм для произвольной области здесь неприменим. При том:
1. "Находишь центр" - можно без проблем найти для идеальных ситуаций типа окружность, квадрат.
2. "через определенный интервал" - его для начала надо найти =))

Т.е. НЕ стоит задача нанесения сетки, стоит задача "равномерной заливки"  области некоторым количеством точек N.


Separator   (2005-11-19 19:42:00) [8]

Ну заполняй от центра

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


4ECHOK   (2005-11-19 19:20:00) [9]

Берем самый простой вариант. Имеется окружность, в ней надо равномерно расположить 3 точки.
Допустим площадь круга составляет 9 м^2. Делим на 3, получаем 3 м^2 - площадь ячейки. Как по этой информации "натянуть сетку на фигуру" и "получить точки". ИМХО - бред.


XProger   (2005-11-19 18:59:00) [10]

Натяни сетку на свою фигуру. Площадь ячейки S/N. В узлах сетки получишь точки.
Ещё вопросы?


4ECHOK   (2005-11-19 18:56:00) [11]

Что-то я не совсем понял связь между моим вопросом и твоим предложением. Как я сказал - область двумерная в декартовом пространстве R2, причем тут одномерная область ?
Равномерное расположение в двухмерном пространстве, в отличие от одномерного, не подразумевает удаленность точек на равные расстояния. А решение поставленной задачи требует разработки гораздо сложного алгоритма, нежели предложенного тобой.

Еще предложения ...


XProger   (2005-11-19 18:39:00) [12]

Есть одномерная область. Размером S. Следовательно точки будут отдалены друг от друга на расстояние S/N. Ещё вопросы?


Наверх

Титульная страница Поиск, карта сайта Написать письмо