@acupofspirt

Какой оптимальный алгоритм заполнения canvas'а окружностями?

Подскажите алгоритм заливки плоскости кружками, желательно с максимальной плотностью. Сломал гугл - ничего даже близко не нашёл. Чтобы вы детальнее понимали о чём речь - посмотрите на таблицы Рабкина для определения дальтонизма, там всё поле плотно залито кружками разного диаметра и цвета.
Отрисовываю это всё, естественно, в canvas'e. Я придумал собственный алгоритм, но он вышел чересчур медленный т.к. уйма итераций расчёта координат происходит в основном потоке. Если бы веб-воркеры имели доступ к canvas элементу, то я бы сюда и не писал - пускай медленно, но координаты бы рассчитывались в отдельном потоке, не заставляя страницу зависать на 15 секунд.
  • Вопрос задан
  • 445 просмотров
Пригласить эксперта
Ответы на вопрос 2
Alexufo
@Alexufo
противоречивый, сложный, весь компьютерный.
глянь вот это.
paulbourke.net/texture_colour/randomtile

И это может пригодится
mrdoob.com/#/91/ball_pool
Ответ написан
Комментировать
@alex_ak1
То есть надо заполнить плоскость окружностями радиуса от р1 до р2 случайным образом?
Надо точно окружности ставить или примерно? Если примерно - то вообще проблемы не вижу.
Выбираем регион куда будем кидать, для него рассчитываем квадраты расстояний до соседних окружностей, где находим приемлемый минимум - туда и кидаем. Если минимумов несколько, то в случайный. Для простоты заполняем поле слева направо (типо пока есть место, кидаем в вертикальную полоску, как место кончается - сдвигаем полоску правее). Скорость будет велика (корень-то считать не надо), считать вообще можно в целых числах.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы