|
|
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
AbstractionПрограмёрпропущено... может не оптимально, но просто.... делим окружность на k дуг опорными точками..., а далее в цикле (пока не закончатся точки) по принипу: 1. Ищем дугу, которая делится нашими (не опорными) точками на самые длинные промежутки (дуги) 2. Добавляем к числу точек на этой дуге ещё одну В итоге получим k чисел, каждое соответствует числу точек на данной дуге... распределяем их равномерно по дуге (как и было сказано ранее) и ... готово :)И Вам пирожок с верхней полки. 12861765 сорри... не заметил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2012, 16:31 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
Димитрий85Програмёрможет не оптимально, но просто.... делим окружность на k дуг опорными точками..., а далее в цикле (пока не закончатся точки) по принипу: 1. Ищем дугу, которая делится нашими (не опорными) точками на самые длинные промежутки (дуги) 2. Добавляем к числу точек на этой дуге ещё одну В итоге получим k чисел, каждое соответствует числу точек на данной дуге... распределяем их равномерно по дуге (как и было сказано ранее) и ... готово :) Не получится ли, что все наши точки напихаются в один интервал между двумя опорными, а другие интервалы окажутся не заполненными подвижными точками? если один из интервалов будет в разы (десятки раз) больше других - то так и получится. НО... размещение точек в любом случае будет оптимальным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2012, 16:33 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
Димитрий85, а как в Вашей задаче соотносятся число интервалов (Ni) и число точек (Nt) Nt >> Ni Nt ~ Ni Nt < Ni ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2012, 16:43 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
ПрограмёрДимитрий85пропущено... Не получится ли, что все наши точки напихаются в один интервал между двумя опорными, а другие интервалы окажутся не заполненными подвижными точками? если один из интервалов будет в разы (десятки раз) больше других - то так и получится. НО... размещение точек в любом случае будет оптимальнымНе всегда оптимальным. Пусть есть две точки, интервалы 1 и 1.8, мы можем добавить две точки. Жадный алгоритм дает 0.5, 0.5, 0.9, 0.9 ("неидеальность" 0.8); Возможен вариант 1, 0.6, 0.6, 0.6 ("неидеальность" 0.6); Но отклонение жадного алгоритма от идеального решения легко оценивается сверху. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2012, 16:55 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
GwaДимитрий85, а как в Вашей задаче соотносятся число интервалов (Ni) и число точек (Nt) Nt >> Ni Nt ~ Ni Nt < Ni ? Число опорных точек N>=1. Число подвижных точек n>=0. N и n, как правило, <= 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2012, 17:01 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
И? Рассуждения-то о чём? Имеем, например, K точек (соответственно, отрезков/углов). Аппроксимируем. разностью квадратов, например. Накладываем новые N точек на полученную прямую... Случайно, причём. Чистый подсчёт в любом случае вернёт наименьшее отклонение. Проверять просто надо не на K=3 и N=3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2012, 23:38 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
Впрочем, учитывая нынешние вычислительные мощности... Можно сделать так: взять не N, а N^2 , или K*N , или min(K^2,N^2)*max(K,N) "новых" точек и отбросить затем самые близкие к "опорным", добившись оставшихся N... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2012, 23:50 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
AbstractionПрограмёрпропущено... если один из интервалов будет в разы (десятки раз) больше других - то так и получится. НО... размещение точек в любом случае будет оптимальнымНе всегда оптимальным. Пусть есть две точки, интервалы 1 и 1.8, мы можем добавить две точки. Жадный алгоритм дает 0.5, 0.5, 0.9, 0.9 ("неидеальность" 0.8); Возможен вариант 1, 0.6, 0.6, 0.6 ("неидеальность" 0.6); Но отклонение жадного алгоритма от идеального решения легко оценивается сверху. да... согласен))) надо проверять на 1 шаг вперёд... то есть, мы стараемся добавить 1 к каждому интервалу, и там где промежутки между точками окажутся больше (при уже добавленной точке) - туда её и добавляем... и т.д. ))) при таком алгоритме и получим именно то, что надо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2012, 09:22 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
Димитрий85Вычислять "равномерность" планирую по формуле - находим среднюю длину дуг окружности между соседними точками в каждой из комбинаций распределения. Далее считаем сумму абсолютных отклонений длин дуг от среднего значения. Боюсь, далеко вы с таким критерием не уедете. Простой пример: две точки брошены на окружность очень близко друг к другу, надо "равномерно" бросить ещё третью. Средняя длина, соответственно, окр/3, длина короткой дуги дана нам в ощущениях, а теперь вуаля - где бы мы ни разместили точку на большой дуге, "сумма абсолютных отклонений" будет одинакова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 22:28 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
softwarerгде бы мы ни разместили точку на большой дуге, "сумма абсолютных отклонений" будет одинакова.Про что я и говорил... 12865806 Вообще, раз Димитрий85 сказал, что "n и N (как правило) <= 10" , то использование не "точных абсолютных расчетов", а именно "выборка из перекрывающего набора" будет более оптимальной. Сугубое ИМХО, конечно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2012, 23:55 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
Добавление точек по одной не кажется оптимальным. Можно сразу посчитать, что "идеальный" угол между точками 2*PI/(N+n). Берем самую большую дугу между опорными точками и через равные углы ставим на нее round(N*длина_дуги1/2PI) точек. Взяли следующую по величине дугу и поместили на нее round(N_оставшееся * длина_дуги2 / оставшаяся_нераспределенной_часть_окружности) точек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 08:50 |
|
||
|
Равномерное распределение точек на окружности
|
|||
|---|---|---|---|
|
#18+
Оптимальный алгоритм зависит от критерия равномерности. Скажем, возьмём два критерия: 1. Для каждой пары соседних дуг строим отношение длин (большей к меньшей). Стремимся минимизировать сумму этих отношений. 2. Стремимся минимизировать среднеквадратичное отклонение. Думается мне, и распределение точек, и даже алгоритмы их поиска будут сильно разными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2012, 10:32 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37878654&tid=1342194]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
180ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 508ms |

| 0 / 0 |
