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.

recursivFunctions(4);

23. September 2013

KOORDINATENSYSTEM - REKURSIVE FUNKTIONEN - FRAKTALE http://blogs.iad.zhdk.ch/codingspace/koordinatensystem/                       http://blogs.iad.zhdk.ch/codingspace/lektionen/lektion-5/ FREITAG, 20.09.2013 Wir bearbeiteten die rekursive Funktion sowie ein weiteres Beispiel wo die Position der Maus direkten Einfluss die <push/popMatrix> hat. Bei den der aufgabe der rekursiven Funktion sollten wir mit den Werten herumspielen und die Auswirkung sehen, damit wir den ganze Code verstehen. Ebenfalls gab es eine weitere Kanckknuss, bei welcher wir einen kleinen Smiley um ein grösseren kreisen lassen musste (siehe Beispiel unten). EIGENERFAHRUNG Mit der Anwendung der rekursiven Funktion konnte ich den Code sehr gut nachvollziehen. Jedoch bereitet es mir Schwierigkeiten das Prinzip auf etwas völlig anderes anzuwenden. Werde noch Tutorials reinziehen, um dieses Problem zu beheben. Mit dem anderen Beispiel, wo sich das eine Objekt um das andere dreht "tüftelte" ich einwenige an der Verschachtelungsmöglichkeiten mit <push/popMatrix>. Beispiel 1

void setup(){
size(600,600);
noLoop();
}

void draw(){
background(255);

pushMatrix();
translate(width*.5,600);
scale(random(0.2,1));
branches(randomly);
popMatrix();
}

int randomly = (int)random(1,20);

void mousePressed(){
redraw();
}

void branches(int randomly){
if(randomly&amp;lt;=0){
pushStyle();
int clr = (int)random(1,255);
stroke(clr, 0,0,150);
fill(clr,0,0,150);
line(0,0,50,50);
popStyle();

return;
}

int x,y;
int count = (int)random(1,10);
for(int i = 0; i &amp;lt; count; i++) {
x = (int)random(-100, 100);
y = -(int)random(10, 150);

line(0,0,x,y);

pushMatrix();
translate(x,y);
scale(random(.3, .95));
branches(randomly-1);
popMatrix();

}

}

Output 1 ProcessingLesson4_1 Beispiel 2

void setup(){
size(800,800);
smooth();
strokeWeight(1);
}

float rotation = 0;
float rotation2 = 0;

void draw(){
background(255);
stroke(1,1,random(100,255));

float radius = dist(mouseX,mouseY,width/2,height/2);  // rechne die distanz vom mousecursor zum fensterzentrum aus
radius = map(radius,0,width,.4,2);     // rechne aus in welchem bereich der radius am schluss sein sollte

pushMatrix();

pushMatrix();
translate(400,400);
rotate(calcAngle());
scale(radius);
myForm();

pushMatrix();
rotate(rotation2);
translate(180,0);
scale(0.3);
myForm2();
popMatrix();

pushMatrix();
rotate(rotation);
translate(120,0);
scale(.2);
myForm2();
popMatrix();

popMatrix();

popMatrix();

rotation+= 0.08;
rotation2 += 0.04;
}

void myForm(){
fill(20,230,random(150,200));
ellipse(0,0,180,180);
}

void myForm2(){
fill(random(30,100), random(30,100), random(30,100));
ellipse(0,0,180,180);
}

// berechne den winkel zur fenstermitter vom mausecursor aus
// die winkel sind in radiant
float calcAngle()
{
return -atan2(mouseX - (width / 2),mouseY - (height / 2));
}

&amp;amp;nbsp;

Output 2 ProcessingLesson4_2