Я ищу алгоритм (или псевдокод), который может вычислить максимальное количество (меньших) кругов с диаметром "s", которые можно втиснуть в окружность другого (большего) круга с радиусом "r". ..
Изображение: http://teasy.space/images/terracolony-squeezingcircles2.jpg
Вы можете чередовать радиус / диаметр и т. Д., Если хотите - так как это единственные 2 параметра (кроме координаты центра (большого круга)), которые у меня есть, т.е. известны ...
Внешние круги могут не перекрываться, но могут плотно прилегать друг к другу ...
После различных улучшений моей рутины на протяжении многих лет, я в настоящее время использую не идеальный алгоритм (и он должен быть точным, иначе галактика сломается)
который выполняет широкую интерполяцию между малым диаметром внешнего круга и большой окружностью внутреннего круга, чтобы несколько точнее отобразить число кругов в шаблоне подгонки в стиле многоугольника, что вызывает проблемы (т.е. перекрытия) при использовании больших внешних кругов ...
; try to fit a random number of circles
num_Circles = Rand( min,max )
; check if the number of circles exceed the maximum that can fit
If num_Circles * SmallCircle_Diameter > LargeCircle_Circumference
; adjust the amount accordingly
num_Circles = LargeCircle_Circumference / SmallCircle_Diameter
End If
Другое предположение состоит в том, что размер меньших внешних кругов никогда не превышает размер большего внутреннего круга ...
что-то меньшее, о чем беспокоиться;)
Я использую этот алгоритм для одного из моих проектов под названием Terra Colony, основанного на Gravity Well, 2D-симуляторе в реальном времени с симуляцией пространства / гравитации в реальном времени с лунами, планетами, звездами, черными / белыми дырами и т. Д.
Изображение: http://teasy.space/images/terracolony-squeezingcircles1.jpg
Это проблема, которая преследует этот проект более десяти лет!
Надеюсь, вы можете указать мне в правильном направлении: D
Ранее я провел много экспериментов и написал разные программы, чтобы найти решение, и путешествовал по Интернету в поисках формул и решений, которые в конце концов очень близки, но недостаточно близки! : P
Спасибо! <3 </p>
Teasy
P.S. Я пытался добавить тег «окружность», но для него, по-видимому, требуется «1500 репутации» (баллы, которые я предполагаю, возможно, для предотвращения спама)