Processing Array Circle Art

Hi there, I am currently trying to make a drawing of multiple colored circles in an array. I have ints set for different sets of colors, but for some reason, I can only get two to work at a time. Can someone tell me where I am going wrong here?

i see two parts of program what
draw the same ellipse,
i guess the second wins.
so the first one using the c[i] has no effect.
( test: disable the first ellipse and you get same picture )

second: your if structure
about the mouseover is like
not draw the ellipse ( is that wanted or did you expect a other color )

there is a e[i] array not named containing 0 || 1 || 2
detected by if structure only if ( 0 ) {orange} else {green}
there you could add a third color.

i try:

int no = 20;  // number of objects

int[] x = new int[no];   // x-position
int[] y = new int[no];   // y-position
int[] d = new int[no];   // diameter
int[] e = new int[no];   // color 

void setup() {
  size(500, 500);
  ellipseMode(CENTER);
  colorMode(HSB, 100, 100, 100);
  for (int i = 0; i < no; i++) {
    d[i] = int(random(15, 50));
    x[i] = int(random(d[i], width - d[i]));   // always show full circles
    y[i] = int(random(d[i], height - d[i]));  // always show full circles
    e[i] = int(random(0, 101));               // kll 0 .. 100 HSB colors
    println("x "+nf(x[i],3,1)+" y "+nf(y[i],3,1)+" d "+nf(d[i],3,1)+" HSB color "+nf(e[i],3));
  }
}

void draw() {
  background(20, 50, 80);
  for (int i=0; i<no; i++) {
    if (dist(x[i], y[i], mouseX, mouseY) <= d[i]/2) {
      noFill();              // but show circle
      stroke(50, 100, 100);
    } else {
      noStroke();
      fill (e[i], 100, 100);
    } 
    ellipse (x[i], y[i], d[i], d[i]);
  }
}

Thanks so much for your response.

I am trying to modify this code for a homework assignment, and i am super new to processing and 100% don’t know what I am doing.

What I am trying to achieve with this code is to create a picture with 4-6 different colors of ellipses. Do you know what variable I can change to make the second set of colored ellipses different from the first set?

and with the if structure, I was hoping for another color instead of not drawing the ellipse. again, I’m very new to this :’(

hi, again, i not see 2 sets…
what i see in your program was, that you print a array(list) of circles 2 times / on same position…
if you use my code get more random colors, but not 2 sets.
how should that look, and what has that to do with the “mouseover”

you could make all in the upper half of the picture and print them again with y + 250
and there you could allow ( for all the second set/print )
a other color by mouse position…
fill(e[i]+mouseX/5,100,100); or in the intensity…

So if i wanted to make another set of colors I should make a different array?

or a different int variable?

if you use the c[i] and e[i] as 2 different color arrays,
you need to print the array 2 times / and at different position /
for many color use my random HSB color

again, what you need the mouse to do?

I don’t need the mouse part of it. It was leftover code from what my teacher provided. I’d prefer to just have a static image of circles, unchanging.

and so I would need a separate println statement for variable c?
how would I change the position?

pls test

int no = 10;  // number of objects

int[] x = new int[no];   // x-position
int[] y = new int[no];   // y-position
int[] d = new int[no];   // diameter
int[] c = new int[no];   // color set 1
int[] e = new int[no];   // color set 2

void setup() {
  size(500, 500);
  ellipseMode(CENTER);
  colorMode(HSB, 100, 100, 100);
  for (int i = 0; i < no; i++) {
    d[i] = int(random(15, 50));
    x[i] = int(random(d[i], width - d[i]));   // always show full circles
    y[i] = int(random(d[i], height/2 - d[i]));  // always show full circles UPPER HALF
    c[i] = int(random(0, 101));               // kll 0 .. 100 HSB colors
    e[i] = int(random(0, 101));               // kll 0 .. 100 HSB colors
    println("x "+nf(x[i],3,1)+" y "+nf(y[i],3,1)+" d "+nf(d[i],3,1)+" HSB color "+nf(e[i],3));
  }
}

void draw() {
  background(20, 50, 80);
  fill(0);
  rect(0,250,500,250);
  for (int i=0; i<no; i++) {
    fill(c[i],100,100);
    ellipse (x[i], y[i], d[i], d[i]);
    fill(e[i],100,100);
    ellipse (x[i], y[i]+250, d[i], d[i]);
  }
}

this is more close to what I am looking for. is there a way to make it not separated between bottom & top?

making the circles appear more random?

you can move it anywhere, and delete the black rectangle…

you should get clear what you mean with 2 sets??

got it. thanks so much

but if you want again some interactivity ( mouse )
try second fill

    fill(c[i],e[i],mouseX/5);