do you want to avoid that the ellipses overlap?? Yes or no?
1 Like
Yes i do, I want a fluent growing but with a really full center and a really light outer part, more or less as here
With just one loop, if center is full, external part is not as light as I wanted, and if external part is light, center is not as full as I wanted, that is why I have drawn more loops, but then you see those unwanted cuts between them. So which type of function can grow like this?
I did this above with sin.
Did you try?
1 Like
more random?
size (2000, 1000);
float a=2.11;
ellipseMode(CENTER);
noFill();
strokeWeight(1);
int i=0;
for (int j=1; j<1500; j+=random(a, a+a*4) ) {
ellipse(500, 500, j, j);
a = sin(radians(i))*14;
i+=1.0;
point(i, a);
println(a);
}
println("done");
1 Like
Not random, with a slow growing at the beginning and a fast one at the end, as you can see on the picture , but somethig continous
They could be three parts, the center, the middle and the outer part, but at least I need to avoid cuts between them, maybe lnowing values of every part
here you can press a key to go from
color to b/w
and space to restart
int i =0;
int i2 = 0;
// extension
PVector xM=new PVector(22, 22),
yM=new PVector(22, 22);
ArrayList<Ell> list = new ArrayList();
boolean first=true;
// ----------------------------------------------------------------------------------------------
void setup() {
size (1900, 999);
// frameRate(1);
fill();
}
void draw() {
background(111);
ellipseMode(CENTER);
if (!keyPressed) {
for (int k=list.size()-1; k>=0; k-- ) {
// fill();
Ell el=list.get(k);
el.display();
// noLoop();
}
} else {
noFill();
for (Ell el : list) {
el.display();
}
}
}
// --------------------------------------------------------------------------
void keyPressed() {
if (key==' ') {
i =0;
i2 = 0;
list.clear();
first=true;
xM=new PVector(22, 22);
yM=new PVector(22, 22);
fill();
}
}
void fill() {
//for (int i=0; i<400; i=i+5) {
ellipseAdd(random(width/2-10, width/2+10), random(240, 260),
i+random(25), i+random(25),
color(random(255), random(255), random(255)));
i=i+5;
// }
i2++;
if (i2 < 100)
fill();
}
// --------------------------------------------------------------------------
void ellipseAdd(float x_, float y_,
float radX_, float radY_,
color col_) {
//
list.add(new Ell( x_, y_,
radX_, radY_,
col_));
if (first) {
first=false;
xM.x= x_-radX_/2-1;
xM.y= x_+radX_/2+1;
yM.x= y_-radY_/2-1;
yM.y= y_+radY_/2+1;
list.remove(0);
}
}
// ===========================================================================
class Ell {
float x, y, radX, radY;
color col;
Ell(float x_, float y_,
float radX_, float radY_,
color col_) {
//
x=x_;
y=y_;
radX=radX_;
radY=radY_;
col=col_;
if (x-radX/2-1>=xM.x) {
while (x-radX/2-1>=xM.x)
radX+=1;
}
if (x+radX/2+1 <= xM.y) {
while (x+radX/2+1<=xM.y)
radX+=1;
}
// ----
if (y-radY/2-1>=yM.x) {
while (y-radY/2-1>=yM.x)
radY+=1;
}
if (y+radY/2+1 <= yM.y) {
while (y+radY/2+1<=yM.y)
radY+=1;
}
//if (radY<yM) {
// radY=yM+1;
//}
xM.x= x-radX/2-1;
xM.y= x+radX/2+1;
yM.x= y-radY/2-1;
yM.y= y+radY/2+1;
}
void display() {
fill(col);
if (keyPressed)
noFill();
ellipse(x, y, radX, radY);
}
}
1 Like
that’s exactly what my sin-Sketch does
Well, your sketch is amazing! absolutely beatiful! Thank you so much for your help.
But actuallly I was thinking about something as this:
size (1000, 1000);
background(255,255,255);
ellipseMode(CENTER);
noFill();
strokeWeight(1);
for (int j=0,a=0; j<200; j+=1+a) {
//stroke(255,0,0);
ellipse(500,500, j, j);
a=a+1;
//println(a);
}
for (int k=210, b=20; k<400; k+=2+b){
//stroke(0,0,255);
ellipse(500,500, k,k);
b=b+2;
println(b);
}
for (int l=424, c=36; l<600; l+=3+c){
//stroke(0,122,0);
ellipse(500,500, l,l);
c=c+3;
}
println("done");
1 Like