//Wendi Lee
//THANKSGIVING~!!
//SEEE the possibilities of blening R,G&B~!
Dot myDotA;
Dot myDotB;
Dot myDotC;
Dot2 myDotA2;
Dot2 myDotB2;
Dot2 myDotC2;
Dot3 myDotA3;
Dot3 myDotB3;
Dot3 myDotC3;
Dot4 myDotA4;
Dot myDotD;
Dot myDotE;
Dot myDotF;
Dot2 myDotD2;
Dot2 myDotE2;
Dot2 myDotF2;
Dot3 myDotD3;
Dot3 myDotE3;
Dot3 myDotF3;
Dot4 myDotD4;
int r;
void setup()
{
size(300, 300);
framerate(60);
noStroke();
smooth();
float r= random(0,255);
float xdepos=random(0,300);
float ydepos=random(0,180);
// Construct each object
myDotA = new Dot(30, height/2,random(3.0,4.0), 10.0,10.0, 1);
myDotC = new Dot(200, height/1.7,random(3.0,4.0), 10.0,10.0, 1);
myDotB = new Dot(100, height/2.2, random(5.0,5.5), 10.0, 10.0,1);
myDotA2 = new Dot2(250, height/3,random(3.0,3.5), 10.0,10.0, 1);
myDotB2 = new Dot2(145, height/3.2,random(1.0,2.0), 10.0,10.0, 1);
myDotC2 = new Dot2(270, height/3.5,random(1.0,2.0), 10.0,10.0, 1);
myDotA3 = new Dot3(100, height/1.5,random(2.0,2.5), 10.0,10.0, 1);
myDotB3 = new Dot3(200, height/1.4,random(5.0,5.5), 10.0,10.0, 1);
myDotC3 = new Dot3(49, height/1.2,random(3.0,3.5), 10.0,10.0, 1);
myDotA4 = new Dot4(100, height/3.1,random(4.0,4.5), 10.0,10.0, 1);
myDotD = new Dot(70, height/0.3,random(1.0,4.0), 10.0,10.0, 1);
myDotE = new Dot(100, height/2.2,random(3.0,4.0), 10.0,10.0, 1);
myDotF = new Dot(190, height/2.7, random(5.0,5.5), 10.0, 10.0,1);
myDotD2 = new Dot2(270, height/1.8,random(3.0,3.5), 10.0,10.0, 1);
myDotE2 = new Dot2(245, height/2.4,random(3.0,4.0), 10.0,10.0, 1);
myDotF2 = new Dot2(170, height/1.5,random(1.0,2.0), 10.0,10.0, 1);
myDotD3 = new Dot3(60, height/3.5,random(6.0,6.5), 10.0,10.0, 1);
myDotE3 = new Dot3(210, height/2.1,random(5.0,5.5), 10.0,10.0, 1);
myDotF3 = new Dot3(29, height/1.1,random(3.0,3.5), 10.0,10.0, 1);
myDotD4 = new Dot4(30, height/3,random(5.0,5.5), 10.0,10.0, 1);
}
void draw()
{
background(255);
// Update each object
myDotA.update();
myDotB.update();
myDotC.update();
myDotA2.update();
myDotB2.update();
myDotC2.update();
myDotA3.update();
myDotB3.update();
myDotC3.update();
myDotA4.update();
myDotD.update();
myDotE.update();
myDotF.update();
myDotD2.update();
myDotE2.update();
myDotF2.update();
myDotD3.update();
myDotE3.update();
myDotF3.update();
myDotD4.update();
// Display each object
myDotA.display();
fill(255,0,0,100);
myDotB.display();
myDotC.display();
fill(0,255,0,100);
myDotA2.display();
myDotB2.display();
myDotC2.display();
myDotA3.display();
fill(0,0,255,100);
myDotB3.display();
fill(255,0,0,100);
myDotC3.display();
fill(0,255,0,100);
myDotA4.display();
//
myDotD.display();
fill(255,0,0,100);
myDotE.display();
myDotF.display();
fill(0,255,0,100);
myDotD2.display();
myDotE2.display();
myDotF2.display();
myDotD3.display();
fill(0,0,255,100);
myDotE3.display();
fill(255,0,0,100);
myDotF3.display();
fill(0,0,255,100);
myDotD4.display();
}
class Dot
{
float x,y,speed, rad, baserad,rad2;
int dir;
float sizelo=random(20,40);
float retreat=random(100,200);
Dot(float xdepos, float ydepos, float speedi, float radi, float rad2,int diri) {
x = xdepos;
y = ydepos;
speed = speedi;
rad2=rad2;
rad = radi;
baserad = rad;
dir = diri;
}
void update() {
y += speed * dir;
if((y <baserad)) {
dir *= -1;
rad += rad*sizelo;
rad2+=rad2*sizelo;
}
if((y >600)){
dir*=-1;
}
if(rad > baserad) {
rad -= 5;
}
if(y>height){
rad2=rad2;
}
if(y<600){
rad2=rad;}
}
void display() {
ellipse(x, y, rad*2, rad2*2);
}
}
class Dot2
{
float x,y,speed, rad, baserad,rad2;
int dir;
float sizelo=random(20,35);
float retreat=random(100,200);
Dot2(float xdepos, float ydepos, float speedi, float radi, float rad2,int diri) {
x = xdepos;
y = ydepos;
speed = speedi;
rad2=rad2;
rad = radi;
baserad = rad;
dir = diri;
}
void update() {
y += speed * dir;
if((y > height-baserad)) {
dir *= -1;
rad += rad*sizelo;
rad2+=rad2*sizelo;
}
if((y < -retreat)){
dir*=-1;
}
if(rad > baserad) {
rad -= 5;
}
if(y>height-200){
rad2=rad2;
}
// if(rad2>55){
// rad2=rad;}
if(y<600){
rad2=rad;}
}
void display() {
ellipse(x, y, rad*2, rad2*2);
}
}
class Dot3
{
float x,y,speed, rad, baserad,rad2;
int dir;
float sizelo=random(10,30);
float retreat=random(100,200);
Dot3(float xdepos, float ydepos, float speedi, float radi, float rad2,int diri) {
x = xdepos;
y = ydepos;
speed = speedi;
rad2=rad2;
rad = radi;
baserad = rad;
dir = diri;
}
void update() {
x += speed * dir;
y+=speed*dir;
if((y > height-baserad)) {
dir *= -1;
rad += rad*sizelo;
rad2+=rad2*sizelo;
}
if((y < -retreat)){
dir*=-1;
}
if((x > width-baserad)) {
dir *= -1;
rad += rad*sizelo;
rad2+=rad2*sizelo;
}
if((x < -50)){
dir*=-1;
}
if(rad > baserad) {
rad -= 5;
}
// if(y>height-200){
// rad2=rad2;
// }
if(y<600){
rad2=rad;}
}
void display() {
ellipse(x, y, rad*2, rad2*2);
}
}
class Dot4
{
float x,y,speed, rad, baserad,rad2;
int dir;
float sizelo=random(10,30);
float retreat=random(100,200);
Dot4(float xdepos, float ydepos, float speedi, float radi, float rad2,int diri) {
x = xdepos;
y = ydepos;
speed = speedi;
rad2=rad2;
rad = radi;
baserad = rad;
dir = diri;
}
void update() {
y += speed * dir;
x-=speed*dir;
if((x > height-baserad)) {
dir *= -1;
rad += rad*sizelo;
rad2+=rad2*sizelo;
}
if((x < -retreat)){
dir*=-1;
}
if((y > height-baserad)) {
dir *= -1;
rad += rad*sizelo;
rad2+=rad2*sizelo;
}
if((y < -retreat)){
dir*=-1;
}
if(rad > baserad) {
rad -= 5;
}
if(y>height-200){
rad2=rad2+0.3;
}
if(y<300){
rad2=rad;}
}
void display() {
ellipse(x, y, rad*2, rad2*2);
}
}