//--------------------------------------------------------parsing
import org.htmlparser.*;
import org.htmlparser.util.*;
import org.htmlparser.nodes.*;
import org.htmlparser.tags.*;
import org.htmlparser.filters.*;
import org.htmlparser.visitors.*;
//--------------------------------------------------------default values
int temperature;
int weatherdef=50;
int investmentdef=5;
int emaildef=0;
int PMSdef=0;
int wardef=0;
int warmingdef=0;
int gassdef=1;
int crimedef=0;
int debtdef=0;
//--------------------------------------------------------actual values
int weather=80;
int investment=4;
int email=70;
int PMS=7;
int war=28864;
float warming=0.006;
float gass=1.4;
int crime=3;
int debt=10;
//----------------------------------------------------------globals
PFont type;
int radius =70;
float m=20;
float b = 0.1;
float e = 2.7;
float x;
float y;
float r;
int r0 = 100;
int u;
int visibility=250;
int visibilitytext = 0;
//-------------------------------------------------------stressfactors
float stress1=35*abs(investmentdef-investment);//investment
float stress2=abs(emaildef-email)/2+10;//emails
float stress3=abs (weather-weatherdef);//weather
float stress4= abs(PMSdef-PMS)+30;//PMS
float stress5=70*abs (gassdef-gass);//gass price
float stress6=10*abs (crimedef-crime);//rate of crime
float stress7=abs (wardef-war)/800;//number of people killed
float stress8=40+abs (warmingdef-warming);//global warming
float stress9=4*abs(debtdef-debt);//public debt
//-----------------------------------------------------arrays for small creatures
int[] defectx=new int [10];
int[] defecty=new int [10];
int[] defectz=new int [10];
int[] defectt=new int [10];
int[] defectm=new int [10];
int[] defectn=new int [10];
int[] littlefivepointsx=new int [100];
int[] littlefivepointsy=new int [100];
void setup (){
temperature = gettemp();
size (800,600);
type = loadFont("arial.vlw");
textFont(type, 17);
framerate (30);
//----------------------------------filling the arrays for small creatures
for (int i=0; i<10; i++){
defectx[i]=360+int (random(70));//points x
defecty[i]=260+int (random(70));//points y
defectz[i]=370+int (random(60));//squares x
defectt[i]=270+int (random(60));//squares y
defectm[i]=375+int (random(55));//curves x
defectn[i]=275+int (random(55));//curves y
}
for (int k=0; k<100; k++){
littlefivepointsx[k]=350+int (random(80));//millions of points x
littlefivepointsy[k]=250+int (random(80));//millions of points y
}
}
void draw (){
background(150, 150, 150);
fill (0);
//-----------------------------------------------part that create bumps
float c=random(360)/360*PI*2;
for(u=0; u<500; u=u+1) {
float teta=2*PI/500*u;
r= (stress1+stress2+stress3+stress4+stress5+stress6+stress7+stress8+stress9)/90*sin(5*teta+c) +r0-stress1* bump(teta, PI*1.9, PI/15)-stress2*bump(teta, PI/12, PI/8)-stress3*bump(teta, PI*1.7, PI/10)-stress4*bump(teta, PI*0.25, PI/10)-stress5*bump(teta, PI*0.7, PI/10)-stress6*bump(teta, PI*0.9, PI/14)-stress7*bump(teta, PI, PI/10)-stress8*bump(teta, PI*1.2, PI/10)-stress9*bump(teta, PI*1.3, PI/10);
;
x=400+r*cos(teta);
y=300+r*sin(teta);
stroke(90,20,225);
strokeWeight(1);
line (400,300, x, y);
}
//--------------------------------------------------personal stress factors
translate (400,300);
rotate(-PI/3.5);
noStroke();
smooth();
fill(200,0,0,visibility);
triangle(100-stress3+random(stress3),0, 280+random(15),0,280+random(15), -5);
fill(0,0,0,visibilitytext);
text("weather outside: "+weather+"F", 100-stress3, 0);
rotate(PI/5);
fill(200,0,0,visibility);
triangle(radius-stress1/3+random(75),0, 280+random(10),0,280+random(10), -5);
fill(0,0,0,visibilitytext);
text("investment: " + investment , 80, 0);
rotate(PI/5);
fill(200,0,0,visibility);
triangle(50+random(55),0, 280+random(10),0,280+random(10), -5);
fill(0,0,0,visibilitytext);
text("emails needs to be replied: "+email, 70, 0);
rotate(PI/6);
fill(200,0,0,visibility);
triangle(50+random(65),0, 280+random(10),0,280+random(10), -5);
fill(0,0,0,visibilitytext);
text("PMS value: "+PMS, 70, 0);
rotate(PI/2.3);
fill(255,204,0,visibility);
triangle(50+random(55),0, 280+random(15),0,280+random(15), -5);
fill(0,0,0,visibilitytext);
//---------------------------------------------------------public stress factors
text("gass price: "+"$" +gass, 75, 0);
rotate(PI/5);
fill(255,204,0,visibility);
triangle(50+random(65),0, 280+random(15),0,280+random(15), -5);
fill(0,0,0,visibilitytext);
text("rate of crime: "+"%"+crime, 85, 0);
rotate(PI/9);
fill(255,204,0,visibility);
triangle(50+random(95),0, 280+random(35),0,280+random(5), -5);
fill(0,0,0,visibilitytext);
text("# people kiled in iraq: "+war, 70, 0);
rotate(PI/5);
fill(255,204,0,visibility);
triangle(50+random(45),0, 280+random(5),0,280+random(5), -5);
fill(0,0,0,visibilitytext);
text("global warming: "+warming, 70, 0);
rotate(PI/10);
fill(255,204,0,visibility);
triangle(50+random(45),0, 280+random(5),0,280+random(5), -5);
fill(0,0,0,visibilitytext);
text("public debt: "+"%"+debt+"of GDP", 70, 0);
//----------------------------------------------------------mouse action
if (mousePressed == true) {
visibility = 0;
visibilitytext = 250;
}
//-------------------------------------------take back the actions: rotate and translate
noSmooth();
rotate(PI/3.5);
rotate(-PI/5.5);
rotate(-PI/5);
rotate(-PI/6);
translate (-400,-300);
//----------------------------------------------draws small creatures
for (int j=0; j<100; j++){
fill(0,0,0,180);
ellipse(littlefivepointsx[j]+random(5),littlefivepointsy[j]+random(7),4,3);
}
for (int i=0; i<10; i++){
noStroke();
if (i==1 || i==2 || i==0){
fill(255, 204, 0);
rect(defectz[i]+random(10), defectt[i]+random(10), 4, 4);
ellipse(defectx[i]+random(5), defecty[i]+random(5), 5,5);
}
if (i==3 || i==4 || i==9 || i==8){
fill(0);
rect(defectz[i]+random(10), defectt[i]+random(10), 3, 3);
ellipse(defectx[i]+random(5), defecty[i]+random(5), 6,6);
}
if (i==5 || i==6 || i==7){
fill(255, 20, 0);
rect(defectz[i]+random(10), defectt[i]+random(10), 3, 3);
ellipse(defectx[i]+random(5), defecty[i]+random(5), 5,5);
}
stroke(255, 40, 0);
if (i==1 || i==2 || i==0){
strokeWeight(2);
curveTightness(5);
stroke(255, 204, 0);
curve(defectm[i]+random(5), defectn[i]+random(3), defectm[i]-2+random(7), 10+defectn[i]+random(15), defectm[i]+12+random(2), defectn[i]+random(15), defectm[i]-7+random(2), defectn[i]+3+random(3));
}
if (i==3 || i==4 || i==9){
strokeWeight(2);
curveTightness(15);
curve(defectm[i]+12+random(4), defectn[i]-4+random(3), defectm[i]+6-5+random(2), 10+defectn[i]-2+random(2), defectm[i]+2+random(2), defectn[i]-4+random(7), defectm[i]-2+random(9), defectn[i]+9+random(9));
}
if (i==5 || i==6 ){
curveTightness(5);
strokeWeight(2);
curve(defectm[i]-6+random(2), defectn[i]+4+random(4), defectm[i]-3+random(5), 8+defectn[i]+random(6), defectm[i]-2+random(4), defectn[i]-3+random(3), defectm[i]-3+random(6), defectn[i]-2+random(3));
}
if (i==7 || i==8 ){
curveTightness(3);
strokeWeight(2);
curve(defectm[i]+3+random(2), defectn[i]-2+random(2), defectm[i]-2+random(4), 10+defectn[i]-3+random(8), defectm[i]+6+random(5), defectn[i]+3+random(5), defectm[i]+3+random(3), defectn[i]+4+random(5));
}
}
}
//------------------------------------------------------------------------bump function
float bump(float myteta, float myteta0, float thickness){
if (abs (myteta-myteta0)<thickness ||abs (myteta+2*PI-myteta0)<thickness || abs (myteta0+2*PI-myteta)<thickness){
return pow (e, -5*sq(myteta-myteta0)/sq (thickness));
}
else return 0;
}
//------------------------------------------------------------------parsing
int gettemp(){
int temploc;
try {
Parser parser = new Parser("http://weather.yahoo.com/forecast/USGA0028.html");
TextExtractingVisitor visitor = new TextExtractingVisitor();
parser.visitAllNodesWith(visitor);
String textInPage = visitor.getExtractedText();
temploc=textInPage.indexOf("Currently:");
String temp=new String(textInPage.substring(temploc+12,temploc+14));
int t=int(temp);
return t;
}
catch (ParserException e) {
println("AAAAAH! "+e);
}
return -1;
}
//-----------------------------------------------------------------mouse action
void mouseReleased()
{
visibility = 250;
visibilitytext = 0;
}