/* built with Studio Sketchpad:
* https://sketchpad.cc
*
* observe the evolution of this sketch:
* https://studio.sketchpad.cc/sp/pad/view/ro.ikjodxahlec/rev.100
*
* authors:
* Claudio Pinho
* license (unless otherwise specified):
* creative commons attribution-share alike 3.0 license.
* https://creativecommons.org/licenses/by-sa/3.0/
*/
int ringCenterX, ringCenterY;
int ringSize = 0;
int currentRingSize = 0;
int numRingsDrawn = 0;
int ringSpacer = 8;
int ringsToDraw = 5;
int count = 0;
int frames = 30; //change frameRate by this same value
int ringRandomPosDelay = 7*frames;
int currentRingAlpha;
int ringAlpha = ringRandomPosDelay - ringsToDraw*ringSpacer; //calcutes the alpha range for colorMode
void setup(){
size(400, 300);
frameRate(30);
smooth();
ringCenterX = width / 2;
ringCenterY = height / 2;
colorMode(HSB, 360, 100, 100, ringAlpha);
noFill();
}
void draw(){
background(360);
if(mousePressed){
if(mouseX > ringCenterX){
ringsToDraw = (mouseX - ringCenterX)/8;
line(ringCenterX, ringCenterY, mouseX, mouseY);
for(int i = 8; i <= (mouseX-ringCenterX); i+=8){
ringSize = i;
ellipse(ringCenterX, ringCenterY, ringSize, ringSize);
}
}else if(mouseX < ringCenterX){
ringsToDraw = (ringCenterX - mouseX)/8;
line(ringCenterX, ringCenterY, mouseX, mouseY);
for(int i = 8; i <= (ringCenterX-mouseX); i+=8){
ringSize = i;
ellipse(ringCenterX, ringCenterY, ringSize, ringSize);
}
}
}else{
if(count < ringRandomPosDelay){
stroke(0, 0, 0, ringAlpha);
if(ringAlpha >= 0){
ellipse(ringCenterX, ringCenterY, ringSize, ringSize);
}
numRingsDrawn = 1;
currentRingSize = ringSize - ringSpacer;
currentRingAlpha = ringAlpha + ringSpacer;
while((currentRingSize >= 0) && (numRingsDrawn < ringsToDraw)){
stroke(0, 0, 0, currentRingAlpha);
if(currentRingAlpha >= 0){
ellipse(ringCenterX, ringCenterY, currentRingSize, currentRingSize);
}
numRingsDrawn ++;
currentRingSize -= ringSpacer;
currentRingAlpha += ringSpacer;
}
ringSize ++;
ringAlpha --;
count++;
}else{
initRings();
}
}
}
void mousePressed(){
ringCenterX = mouseX;
ringCenterY = mouseY;
numRingsDrawn = 0;
ringSize = 0;
ringAlpha = (ringRandomPosDelay - ringsToDraw*ringSpacer);
currentRingSize = 0;
currentRingAlpha = 0;
count = 0;
}
void initRings(){
ringCenterX = int(random(0, width));
ringCenterY = int(random(0, height));
numRingsDrawn = 0;
ringSize = 0;
ringAlpha = (ringRandomPosDelay - ringsToDraw*ringSpacer);
currentRingSize = 0;
currentRingAlpha = 0;
count = 0;
}