Алгоритм геометрической упаковки в 2D

Я хочу упаковать N кругов в определенных шаблонах упаковки (гексагональной и квадратной) в больший круг с радиусом r, а с номером N я хочу определить минимально необходимый радиус r.

Это возможно в альфе Вольфрама ( https://www.wolframalpha.com/input/?i=pack+24+circles+in+a+circle&lk=3), но, к сожалению, только до 1000 кругов, после которых он дает только из самой плотной известной упаковки. Я не совсем забываю об использовании MATLAB, поэтому решил, что смогу создать цикл, который будет расширять большой круг и заполнять его меньшими кругами в одном из шаблонов упаковки. Я просто не знаю, как сформировать такой шаблон в цикле.

Скажем, начнем с центра; определите большой круг R, проверьте, можно ли его заполнить маленьким кругом (радиус r) во всех возможных направлениях. Расширьте большой круг, если это невозможно, и повторяйте, пока не будет размещено N кругов.

0 ответов

Другие вопросы по тегам