Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Do, 19.09.13 “Wald erschaffen”

19. September 2013

Heute habe ich eine ganz "einfache" Version von einem Wald geschrieben. Mit einem Mausclick erscheint er mit ca.40 Bäumen und zufällig definierten Farben und Grössen.

Mir wurde heute erst klar bewusst wie der Begriff "void" genutzt werden konnte. Mit ihm konnte ich ganz einfach verschiedene Bäume definieren und später einfach abrufen. Hier ein Bespiel von meinem ersten Baum:

void baum1()
{
float a=random(50,150); // zufaellige Farbe Blaetter
float b=random(1,15); //zufaellige Laenge Stamm
float c=random(1,10); //zufaellige Breite Stamm
x = random(0, 800); // Zufallstandort x Kor.
y = random(0, 800); // Zufallstandort y Kor.

rectMode(CENTER);  // X Kor in die Mitte versetzten
fill(103, 93, 96);
rect(x, y+30, 7+b, 55, 7); // Stamm Baum 1 
fill(5+a, 200, 30+a);
ellipse(x, y, 45+c, 45+c); // Blätter Baum 1
}

Sehr hilfreich fand ich die Funktion "rectMode(CENTER)" welche ich genutzt habe um den Stamm genau unter den Blättern zu platzieren, egal wie dick dieser wurde. Ohne diese Funktion, war die x-Achse immer links oben in der Figur und sobald diese dicker wurde, befand er sich nicht mehr in der Mitte der Blätter. 

Cool war auch die "float" Funktion in welcher man zum Beispiel für "b" einen Rahmen zwischen 1-15 definieren kann.  Wenn der Begriff "random" noch hinzugefügt wurde, wählte er eine zufällige Zahl zwischen 1-15 aus. Dieses "b" kann dann bei einer Farbe oder Grösse hinzugefügt werden, um diese bei jedem loop zufällig zu ändern.  

Bsp:  

float a=random(50,150); // zufaellige Farbe Blaetter 
float b=random(1,15); //zufaellige Laenge Stamm

fill(5+a, 200, 30+a);        // Farbe Blaetter Baum 1
ellipse(x, y, 45+c, 45+c); // Blaetter Baum 1

 

Was ich Morgen umbedingt noch finden will, ist wie die untersten Bäume in den Vordergrund gesetzt werden können um einen perspektivischen Effekt hinzubekommen. Eine Begrenzung für die Bäume und einen Himmel sollten auch noch möglich sein. 

Hier der gesamte Code:

void setup()
{
size(800, 800);
noStroke();
smooth();
noLoop();
background(255);
}

float x;
float y;
float a=random(50,200);

void baum1()
{
float a=random(50,150); //random Farbe blaetter
float b=random(1,15); //random trunk laenge
float c=random(1,10); //random trunk breite
x = random(0, 800); // Zufallstandort x Kor.
y = random(0, 800); // Zufallstandort y Kor.

rectMode(CENTER);
fill(103, 93, 96);
rect(x, y+30, 7+b, 55, 7); // Stamm Baum 1
fill(5+a, 200, 30+a);
ellipse(x, y, 45+c, 45+c); // Blätter Baum 2

}

void baum3()
{
float a=random(50,150); //random Farbe blaetter
float b=random(1,20); //random trunk laenge
float c=random(1,10); //random trunk breite
x = random(0,800);
y = random(0,800);

rectMode(CENTER);
fill(100,73,77);
rect(x+30,y+40+b,20+c,60,4);

fill(5+a,142,30+a);
triangle(x,y,x+30,y-30,x+60,y);

fill(5+a,142,30+a);
triangle(x-10,y+20,x+30,y-10,x+70,y+20);

fill(5+a,142,30+a);
triangle(x-15,y+45,x+30,y+5,x+75,y+45);
}


void draw()
{

for (int i=0; i <= 40; i++)
baum1();

for (int i=0; i <= 10; i++)
baum3();
}

void mousePressed()
{
redraw();
}