Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

exercise 2.1 balloons #80

Open
Densou opened this issue Dec 29, 2016 · 0 comments
Open

exercise 2.1 balloons #80

Densou opened this issue Dec 29, 2016 · 0 comments

Comments

@Densou
Copy link

Densou commented Dec 29, 2016

Below is my solution for exercise 2.1, balloons.

//code by Densou
//email: [email protected]

Balloon[] balloons= new Balloon[10];

void setup(){
size(600,400);
smooth();
for(int i=0; i<balloons.length;i++){
balloons[i]= new Balloon(i);
}

}

void draw(){
background(200,40,60);

for(int i=0; i<balloons.length;i++){
balloons[i].render();
balloons[i].update();
balloons[i].checkCollision();
}

}

class Balloon{
//v for velocity
//f for acceleration of flotage
//r for acceleration of resistance
//l for location
//a for total acceleration
//wind force
PVector v, f, l, a, wind;
//w,h:size of this balloon
//stringl:string length
//sw: string swing range
//maxV stands for the max velocity a balloon can reach--
//when gracity and flotage get balance
float w,h, maxV,stringl,sw;
//covenient for array
int array;
//color of each balloon
color c;

Balloon(int array_){
v= new PVector(0,0);
//f= new PVector(0,-0.02);
//f minus 0.01, in case acceleration too small
f= new PVector(0,random(0.02)-1-0.01);
maxV= 2.5;
w=random(15)+30;
h=random(10)+w
1.2;
//l= new PVector(width/2,height);
l = new PVector(random(width),random(height/2)+height*.5);
stringl=80.0;
sw=40;
array=array_;
c=color(random(150)+100,random(150)+100,random(150)+100);
//c=color(array%3150,(array+2)%3150,(array+1)%3*150);
}

void update(){
wind= new PVector((noise(1,frameCount/200)-0.5)*0.04,(noise(2,frameCount/200)-0.5)*0.01);
a=PVector.add(f,wind);//use static function here, otherwise a increases.
//println(a.x,a.y);
v.add(a);
l.add(v);
//println(v.y);
v.limit(2.2);
//if(v.y>maxV ){
// v.y=maxV;
//}else if(v.y<-maxV){
// v.y=-maxV;
//}
}

void render(){
pushMatrix();
translate(l.x,l.y+h/2);
//swinging string
stroke(242,192,86);
strokeWeight(1);
noFill();
float t=frameCount/500.0;
bezier(
0,0,
0,noise(1,array,t)*stringl-stringl/2,
noise(2,array,t)*sw-sw/2,noise(3,array,t)stringl0.6,
noise(4,array,t)*sw-sw/2,noise(5,array,t)*stringl
);

//balloon ball
//fill(220,30,100);
fill(c);
noStroke();
//ellipse(l.x,l.y,w,h);
ellipse(0,-h/2,w,h);
popMatrix();

}

void checkCollision(){
if(l.y<h/2){
v.y=v.y*-0.8;
f.y=f.y0.8;
if(v.y<0.02 && -0.02<v.y){
v.y=0;
f.y=0;
l.y=h/2;
}
}
//println(v.y);
if(l.x<w/2 || l.x>width-w/2){
v.x=v.x
-0.6;
}
}
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant