#processing
#обработка
Вопрос:
Я пытаюсь сгенерировать 15 кругов на пространстве 1500 — 1000, каждый круг с разной позицией. Я знаю, как сгенерировать 1 случайный круг, но это все. Как я должен это сделать?
Комментарии:
1. Вы должны быть более конкретными. Полагаю, вы хотите создать 15 непересекающихся окружностей? Обратите внимание, что 2 окружности пересекаются, если расстояния между центральными точками меньше суммы радиусов.
2. Всего 15 кругов, случайным образом расположенных на экране, не имеет значения расстояние между ними.
3. Итак, в чем вопрос? Вы ищете массив -ы?
Ответ №1:
Похоже, вы ищете for
цикл:
for(int i = 0; i < 15; i ){
// draw a random circle here
}
Бесстыдная самореклама: вот руководство по for
циклам обработки.
Ответ №2:
В принципе, вам нужно создать класс Circle и ArrayList, который содержит все ваши круги. Затем с помощью for
вы добавляете в этот список 15 кругов, передающих конструктору случайные координаты и фиксированную ширину и высоту, которые вы выбираете.
class Circle {
float x, y, size;
public Circle(float x, float y, float size) {
this.x = x;
this.y = y;
this.size = size;
}
public void update() {
ellipse(x, y, size, size);
}
}
Объявите глобально свой ArrayList. Теперь в setup()
вы создаете экземпляр своего ArrayList и заполняете его случайно сгенерированными координатами
ArrayList<Circle> circlesList; // This needs to be declared globally
float circleSize = 64; // Circles size in pixels
void setup() {
size(1500, 1000);
circlesList = new ArrayList<Circle>();
// Populating the ArrayList with circles
for (int i = 0; i < 15; i ) {
float randomx = random(0, 1500); // Random generated X
float randomy = random(0, 1000); // Random generated Y
Circle newCircle = new Circle(randomx, randomy, circleSize);
circlesList.add(newCircle);
}
}
Теперь в draw()
функции, используя цикл foreach, вы нарисуете каждый отдельный круг внутри этого ArrayList
void draw() {
background(255); // Background color
fill(255, 0, 0); // Circle fill color
for (Circle c : circlesList) {
c.update();
}
}
Пожалуйста, обратите внимание, что таким образом ваши круги могут перекрываться или находиться немного за пределами экрана. Спросите что-нибудь, если код неясен, не просто копируйте-вставляйте его.
Надеюсь, это помогло 🙂