Случайное построение графика не сработает. На самом деле, если ваши круги не могут перекрываться, ничего не будет работать. Чтобы показать это, сравните результаты следующих расчетов:
lSquare = 14;
rCircle = 0.7;
nCircles = 233;
areaCircles = nCircles * pi * rCircle^2
areaSquare = lSquare^2
Вы увидите, что areaCircles > areaSquare
, поэтому невозможно вписать их все. С другой стороны, если areaSquare >= areaCircles
не гарантирует вам, что решение существует!
Попробуйте свою настройку с меньшим примером, чтобы найти решение. Например. возьмите квадратную коробку и кучу сферических предметов (шарики, шарики, апельсины, яблоки ... если нужно) и постарайтесь уложить как можно больше из них в коробку. Если это сработает, вы, возможно, захотите нарисовать их позиции на листе бумаги, прежде чем пытаться это осуществить.
Если вы сделаете это правильно, вы получите представление о том, как складывать круглые объекты в квадратный контейнер. Это именно то, что вам нужно делать в упражнении. Затем попробуйте создать модель / алгоритм того, что вы сделали вручную, и реализовать это в MATLAB. Это не будет сложно, но вам понадобятся небольшие вычисления: Пифагор и пересечение окружностей.
Я также предлагаю вам использовать функцию для рисования круга, как показывает @Andrey, что-то вроде function drawCircle(center, radius)
. Это позволяет снизить сложность.
Если ваши круги могут перекрываться, то решение довольно простое: посмотрите на круг как на объект с центральной точкой и равномерно распределите эти центральные точки по квадрату. Не используйте rand
для этого, но рассчитайте их позиции самостоятельно.
Если вы не можете найти решение, я могу расширить свой ответ через несколько дней.