class CL_grashalm{ boolean active; float xpos,ypos,baseheight, basewidth; float GHbendr,GHbend,GHb,GHa,GHziel; int halm_seed; CL_grashalm(float x, float y, float bH, float bW, boolean a, int s){ active = a; xpos = x; ypos = y; baseheight = bH; basewidth = bW; halm_seed = s; GHa = 0; GHb = 0; GHbend = 0; GHbendr = 0; GHziel = 20; } void halm(float Hbwidth, float Hheight, float Hbendr){ Hbwidth*=0.75; Hbendr*=0.66; Hheight*=0.75; if (Hbwidth > 1){ pushMatrix(); rotate(Hbendr); beginShape(); vertex(Hbwidth/2,0); vertex(-Hbwidth/2,0); vertex(-Hbwidth*0.75/2,-Hheight); vertex(Hbwidth*0.75/2,-Hheight); endShape(CLOSE); translate(0,-Hheight); halm(Hbwidth, Hheight, Hbendr); popMatrix(); } } void draw(){ if (active == true){ fill(0,80); noStroke(); pushMatrix(); translate(xpos, ypos); GHb = GHb+(GHziel-GHb)*0.10; GHa = GHa+(GHb-GHa)*0.08; GHbend = GHa; GHbendr = radians(GHbend)*noise(0.25,xpos+1); if (GHa>15){ GHziel = -20; } if (GHa<-15){ GHziel = 20; } beginShape(); vertex(basewidth/2,0); vertex(-basewidth/2,0); vertex(-basewidth*0.75/2,-baseheight); vertex(basewidth*0.75/2,-baseheight); endShape(CLOSE); translate(0,-baseheight); halm(basewidth, baseheight, GHbendr); popMatrix(); } } }