У меня есть большой прямоугольник, заполненный кругами. Круги могут накладываться друг на друга, но все они имеют одинаковый диаметр. Мне нужно найти пограничные круги. Если между этими пограничными кругами есть промежутки — и зазор больше диаметра круга — следует также включить тот, что внутри. Вот несколько примеров:
Что мне нужно сделать, так это сделать эти внешние круги неподвижными, чтобы при движении внутренних кругов они никогда не выходили за пределы прямоугольника. Как это можно сделать, есть ли известные алгоритмы для такого? Я делаю это на TypeScript, но, думаю, можно применить любое императивное языковое решение.