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.

IAD Zeichenmodule

Zeichenmodule Dozierende: Max Rheiner / Jürgen Späth In den Letzten Woche hatten wir die Aufgabe, Zeichen in Processing zu Generieren. Der Code wurde fortzu erweitert, bis schliesslich ein mit Kinect angesteuertes Muster aus  Einheitlichen Zeichen auf Bewegungen im Realraum reagiert. Meinen Code habe ich versucht Modular aufzubauen, so das Erweiterungen einfach möglich sind, ohne das ganze Konzept neu zu schreiben. Des Weiteren habe ich versucht möglichst alle Werte über Variabeln zu definieren, was eine Grosse Anzahl von Möglichkeiten im Code zur Folge hat. Um diese Möglichkeiten zu nutzen, habe ich Tastaturinteraktionen miteinge-baut. Die Interaktionsmöglichkeiten lassen sich zudem per Tastendruck einblenden. Der Code ist in drei Hauptabschnitte gegliedert: -  Hauptcode mit Iterationsschleifen, Interaktionen und Funktionsanzeige (Menu) -  Permutationsschlaufen -  Zeichen     Download Code: Zeichentransformation       Hauptcode:
int zeichendurchmesser = 100;
int zeichenabstand =20;
int verschiebung = 0;
int zeichentyp = 0;
int zeicheninteraktion = 0;
int schwarz = 0;
int weiss = 255;
int interactiviti = 50;
PVector abstandmaus;
int raster = 7;
boolean rotation = false;
boolean position = false;
boolean skalierung = false;
boolean menu =true;
boolean mode =false;
boolean farbe = true;
int[]   permutationsIndexList = {
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};

void setup()
{
size((zeichenabstand+zeichendurchmesser)*raster+zeichenabstand, (zeichenabstand+zeichendurchmesser)*raster+2*zeichenabstand);
smooth();
noStroke();
PFont font;
font = loadFont("Verdana-48.vlw");
textFont(font, 10);
}

void draw()
{
background(weiss);
pushMatrix();
if (farbe)
{
schwarz = 0;
weiss = 255;
}
else if (!farbe)
{
schwarz = 255;
weiss = 0;
}
if (menu)
{
textAlign(LEFT);
fill(schwarz);
text("= M", width-65, 160);
text("= P", width-65, 180);
text("= L", width-65, 200);
text("= O", width-65, 220);
text("= 0-9", width-65, 240);
text("= Q,W,E-Z", width-65, 260);
text("= A,S,D-K", width-65, 280);
text("= Y/X", width-65, 300);
text("= C/V", width-65, 320);
text("= B/N", width-65, 340);
text("= U/I", width-65, 360);
text("Menü ein/ausblenden", width-200, 160);
text("Bild Speichern", width-200, 180);
text("Interaktion umkehren", width-200, 200);
text("Farben umkehren", width-200, 220);
text("Iterationsvariationen", width-200, 240);
text("Zeichenvariationen", width-200, 260);
text("Interaktionsvariationen", width-200, 280);
text("Zeichengrösse ändern", width-200, 300);
text("Zeichenabstand ändern", width-200, 320);
text("Raster verschieben", width-200, 340);
text("interaktionsstärke", width-200, 360);
scale(.5, .5);
translate(width/4, height/2);
}
float distanz =0;
translate(verschiebung, verschiebung);
float zeicheniteration = 0;
int mouseposX = mouseX;
int mouseposY = mouseY;
int xPos;
int yPos;
int     permutationsIndex = 0;
pushMatrix();
translate(zeichendurchmesser/2+zeichenabstand, zeichendurchmesser/2+zeichenabstand);
xPos = zeichendurchmesser/2+zeichenabstand;
yPos = zeichendurchmesser/2+zeichenabstand;
for (int y=0; y<raster;y++)
{
pushMatrix();
for (int x=0; x<raster;x++)
{
abstandmaus = new PVector((xPos),(yPos));
println(xPos);
distanz = map(sqrt(sq(mouseX-xPos)+sq(mouseY-yPos)), 0, sqrt(sq(height-zeichendurchmesser/2-zeichenabstand)*2), 0.1, 1)*(-1);
drawPermutationObj(permutationsIndexList[permutationsIndex], zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
++permutationsIndex;
translate(zeichendurchmesser+zeichenabstand, 0);
xPos += zeichendurchmesser+zeichenabstand;
}
popMatrix();
xPos = zeichendurchmesser/2+zeichenabstand;
translate(0, zeichendurchmesser+zeichenabstand);
yPos += zeichendurchmesser+zeichenabstand;
}
popMatrix();
popMatrix();
}

void keyPressed()
{
switch(key)
{
case 'q':
zeichentyp = 0;
break;
case 'w':
zeichentyp = 1;
break;
case 'e':
zeichentyp = 2;
break;
case 'r':
zeichentyp = 3;
break;
case 't':
zeichentyp = 4;
break;
case 'z':
zeichentyp = 5;
break;
case 'a':
rotation = false;
position = false;
skalierung = false;
break;
case 's':
rotation = true;
position = false;
skalierung = false;
break;
case 'd':
rotation = false;
position = true;
skalierung = false;
break;
case 'f':
rotation = false;
position = false;
skalierung = true;
break;
case 'g':
rotation = true;
position = true;
skalierung = false;
break;
case 'h':
rotation = true;
position = false;
skalierung = true;
break;
case 'j':
rotation = false;
position = true;
skalierung = true;
break;
case 'k':
rotation = true;
position = true;
skalierung = true;
break;
case 'm':
menu =!menu;
break;
case 'l':
mode =!mode;
break;
case 'o':
farbe =!farbe;
break;
case 'u':
interactiviti=interactiviti-5;
break;
case 'i':
interactiviti=interactiviti+5;
break;
case 'y':
zeichendurchmesser=zeichendurchmesser-5;
break;
case 'x':
zeichendurchmesser=zeichendurchmesser+5;
break;
case 'c':
zeichenabstand=zeichenabstand-1;
break;
case 'v':
zeichenabstand=zeichenabstand+1;
break;
case 'b':
verschiebung = verschiebung -10;
break;
case 'n':
verschiebung = verschiebung +10;
break;
case 'p':
save("screenShot.jpg");
println("save the screen to screenShot.jpg");
break;
case '0':
permutationsIndexList= new int[] {
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0
};
break;
case '1':
permutationsIndexList= new int[] {
0, 1, 2, 3, 2, 1, 0,
1, 2, 3, 4, 3, 2, 1,
2, 3, 4, 5, 4, 3, 2,
3, 4, 5, 6, 5, 4, 3,
2, 3, 4, 5, 4, 3, 2,
1, 2, 3, 4, 3, 2, 1,
0, 1, 2, 3, 2, 1, 0
};
break;
case '2':
permutationsIndexList = new int[] {
0, 1, 2, 3, 4, 5, 6,
6, 5, 4, 3, 2, 1, 0,
0, 1, 2, 3, 4, 5, 6,
6, 5, 4, 3, 2, 1, 0,
0, 1, 2, 3, 4, 5, 6,
6, 5, 4, 3, 2, 1, 0,
0, 1, 2, 3, 4, 5, 6,
};
break;
case '3':
permutationsIndexList = new int[] {
0, 1, 2, 3, 4, 5, 6,
1, 0, 1, 2, 3, 4, 5,
2, 3, 0, 1, 2, 3, 4,
3, 2, 5, 0, 1, 2, 3,
4, 3, 2, 5, 0, 1, 2,
5, 4, 3, 2, 3, 0, 1,
6, 5, 4, 3, 2, 1, 0
};
;
break;
case '4':
permutationsIndexList = new int[] {
0, 0, 0, 0, 0, 0, 0,
1, 2, 3, 4, 3, 2, 1,
2, 4, 6, 0, 6, 4, 2,
3, 6, 0, 4, 0, 6, 3,
4, 0, 3, 0, 3, 0, 4,
5, 2, 6, 4, 6, 2, 5,
6, 4, 0, 0, 0, 4, 6
};
break;
case '5':
permutationsIndexList = new int[] {
0, 0, 0, 3, 0, 0, 0, 0, 1, 1, 4, 1, 1, 0,
0, 1, 2, 5, 2, 1, 0,
3, 4, 5, 6, 5, 4, 3,
0, 1, 2, 5, 2, 1, 0,
0, 1, 1, 4, 1, 1, 0,
0, 0, 0, 3, 0, 0, 0
};
;
break;
case '6':
permutationsIndexList = new int[] {
0, 1, 2, 3, 4, 5, 6,
1, 2, 3, 4, 5, 6, 0,
2, 3, 4, 5, 6, 0, 1,
3, 4, 5, 6, 0, 1, 2,
4, 5, 6, 0, 1, 2, 3,
5, 6, 0, 1, 2, 3, 4,
6, 0, 1, 2, 3, 4, 5
};
;
break;
case '7':
permutationsIndexList = new int[] {
6, 0, 1, 2, 3, 3, 3,
6, 0, 1, 2, 2, 2, 3,
6, 0, 1, 1, 1, 1, 2,
6, 0, 0, 0, 0, 0, 1,
5, 6, 6, 6, 6, 0, 1,
5, 5, 5, 5, 6, 0, 1,
4, 4, 4, 5, 6, 0, 1
};
;
break;
case '8':
permutationsIndexList = new int[] {
0, 1, 1, 1, 1, 1, 0,
0, 2, 3, 3, 3, 3, 0,
0, 2, 4, 5, 4, 2, 0,
0, 2, 4, 6, 4, 2, 0,
0, 2, 4, 5, 4, 2, 0,
0, 2, 3, 3, 3, 3, 0,
0, 1, 1, 1, 1, 1, 0
};
;
break;
case '9':
permutationsIndexList = new int[] {
1, 2, 3, 3, 3, 2, 1,
2, 3, 4, 4, 4, 3, 2,
3, 4, 5, 5, 5, 4, 3,
4, 5, 6, 0, 6, 5, 4,
3, 4, 5, 5, 5, 4, 3,
2, 3, 4, 4, 4, 3, 2,
1, 2, 3, 3, 3, 2, 1
};
;
break;
}
}
Zeichenpermutation:
void drawPermutationObj(int type, float zeicheniteration, float distanz, PVector abstandmaus, boolean rotation, boolean position, boolean skalierung, boolean mode, int interactiviti)
{
pushStyle();
switch(type)
{
case 0:
zeicheniteration=zeicheniteration+0;
if (zeicheniteration>7)
{
zeicheniteration=(7-(zeicheniteration-7));
}
if (zeicheniteration<1)
{
zeicheniteration=((-1)*(zeicheniteration-1))+1;
}
if (zeichentyp == 0)
{
Zeichen0(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==1)
{
Zeichen1(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==2)
{
Zeichen2(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==3)
{
Zeichen3(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==4)
{
Zeichen4(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==5)
{
Zeichen5(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
break;
case 1:
zeicheniteration=zeicheniteration+1;
if (zeicheniteration>7)
{
zeicheniteration=(7-(zeicheniteration-7));
}
if (zeicheniteration<1)
{
zeicheniteration=((-1)*(zeicheniteration-1))+1;
}
if (zeichentyp ==0)
{
Zeichen0(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==1)
{
Zeichen1(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==2)
{
Zeichen2(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==3)
{
Zeichen3(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==4)
{
Zeichen4(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==5)
{
Zeichen5(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
break;
case 2:
zeicheniteration=zeicheniteration+2;
if (zeicheniteration>7)
{
zeicheniteration=(7-(zeicheniteration-7));
}
if (zeicheniteration<1)
{
zeicheniteration=((-1)*(zeicheniteration-1))+1;
}
if (zeichentyp ==0)
{
Zeichen0(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==1)
{
Zeichen1(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==2)
{
Zeichen2(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==3)
{
Zeichen3(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==4)
{
Zeichen4(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==5)
{
Zeichen5(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
break;
case 3:
zeicheniteration=zeicheniteration+3;
if (zeicheniteration>7)
{
zeicheniteration=(7-(zeicheniteration-7));
}
if (zeicheniteration<1)
{
zeicheniteration=((-1)*(zeicheniteration-1))+1;
}
if (zeichentyp ==0)
{
Zeichen0(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==1)
{
Zeichen1(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==2)
{
Zeichen2(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==3)
{
Zeichen3(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==4)
{
Zeichen4(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else  if (zeichentyp==5)
{
Zeichen5(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
break;
case 4:
zeicheniteration=zeicheniteration+4;
if (zeicheniteration>7)
{
zeicheniteration=(7-(zeicheniteration-7));
}
if (zeicheniteration<1)
{
zeicheniteration=((-1)*(zeicheniteration-1))+1;
}
if (zeichentyp ==0)
{
Zeichen0(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==1)
{
Zeichen1(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==2)
{
Zeichen2(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==3)
{
Zeichen3(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==4)
{
Zeichen4(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==5)
{
Zeichen5(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
break;
case 5:
zeicheniteration=zeicheniteration+5;
if (zeicheniteration>7)
{
zeicheniteration=(7-(zeicheniteration-7));
}
if (zeicheniteration<1)
{
zeicheniteration=((-1)*(zeicheniteration-1))+1;
}
if (zeichentyp ==0)
{
Zeichen0(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==1)
{
Zeichen1(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==2)
{
Zeichen2(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==3)
{
Zeichen3(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==4)
{
Zeichen4(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==5)
{
Zeichen5(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
break;
case 6:
zeicheniteration=zeicheniteration+6;
if (zeicheniteration>7)
{
zeicheniteration=(7-(zeicheniteration-7));
}
if (zeicheniteration<1)
{
zeicheniteration=((-1)*(zeicheniteration-1))+1;
}
if (zeichentyp ==0)
{
Zeichen0(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==1)
{
Zeichen1(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==2)
{
Zeichen2(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==3)
{
Zeichen3(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==4)
{
Zeichen4(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
else if (zeichentyp==5)
{
Zeichen5(zeicheniteration, distanz, abstandmaus, rotation, position, skalierung, mode, interactiviti);
}
break;
}
}
Zeichen:
void Zeichen0(float zeicheniteration, float distanz, PVector abstandmaus, boolean rotation, boolean position, boolean skalierung, boolean mode, float interactiviti)
{
pushStyle();
noStroke();
fill(schwarz);
ellipseMode(CENTER);
pushMatrix();
if (mode)
{
if (rotation)
{
rotate(distanz*interactiviti/50);
}
if (position)
{
translate(abstandmaus.x/distanz/interactiviti/50, abstandmaus.y/distanz/interactiviti/50);
}
if (skalierung)
{
scale(distanz*interactiviti/50, distanz*interactiviti/50);
}
}
else
{
if (rotation)
{
rotate(distanz*interactiviti/50*(-1));
}
if (position)
{
translate((-1)*abstandmaus.x/distanz/interactiviti, (-1)*abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale((1/(distanz-0.1))*interactiviti/500, (1/(distanz-0.1))*interactiviti/500);
}
}
ellipse(0, 0, (7-zeicheniteration)*zeichendurchmesser/5, (7-zeicheniteration)*zeichendurchmesser/5);
popMatrix();
popStyle();
}

void Zeichen1(float zeicheniteration, float distanz, PVector abstandmaus, boolean rotation, boolean position, boolean skalierung, boolean mode, float interactiviti)
{
pushStyle();
noStroke();
pushMatrix();
if (mode)
{
if (rotation)
{
rotate(distanz*interactiviti/50);
}
if (position)
{
translate(abstandmaus.x/distanz/interactiviti, abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale(distanz*interactiviti/50, distanz*interactiviti/50);
}
}
else
{
if (rotation)
{
rotate(distanz*interactiviti/50*(-1));
}
if (position)
{
translate((-1)*abstandmaus.x/distanz/interactiviti, (-1)*abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale((1/(distanz-0.1))*interactiviti/500, (1/(distanz-0.1))*interactiviti/500);
}
}
boolean z = true;
for (int i = 0; i < 6; i = i+1)
{
pushMatrix();
rotate(((-i))*(radians(6.42857)*(6*zeicheniteration*distanz)));
scale(pow(pow( (0.9), i), 1/4+1.62), pow(pow( (0.9), i), 1/4+1.62));
if (z) {
fill(schwarz);
}
else {
fill(weiss);
}
rectMode(CENTER);
rect(0, 0, zeichendurchmesser, zeichendurchmesser);
popMatrix();
z=!z;
}
popMatrix();
popStyle();
}

void Zeichen2(float zeicheniteration, float distanz, PVector abstandmaus, boolean rotation, boolean position, boolean skalierung, boolean mode, float interactiviti)
{
pushStyle();
noStroke();
pushMatrix();
if (mode)
{
if (rotation)
{
rotate(distanz*interactiviti/50);
}
if (position)
{
translate(abstandmaus.x/distanz/interactiviti, abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale(distanz*interactiviti/50, distanz*interactiviti/50);
}
}
else
{
if (rotation)
{
rotate(distanz*interactiviti/50*(-1));
}
if (position)
{
translate((-1)*abstandmaus.x/distanz/interactiviti, (-1)*abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale((1/(distanz-0.1))*interactiviti/500, (1/(distanz-0.1))*interactiviti/500);
}
}
boolean z = true;
for (int i = 0; i < 6; i = i+1)
{
pushMatrix();
rotate(((-i))*(radians(6.42857)*(zeicheniteration*distanz)));
scale(pow(pow( (0.9), i), 1/4+1.62), pow(pow( (0.9), i), 1/4+1.62));
if (z) {
fill(schwarz);
}
else {
fill(weiss);
}
rectMode(CENTER);
rect(0, 0, zeichendurchmesser, zeichendurchmesser);
popMatrix();
z=!z;
}
popMatrix();
popStyle();
}

void Zeichen3(float zeicheniteration, float distanz, PVector abstandmaus, boolean rotation, boolean position, boolean skalierung, boolean mode, float interactiviti)
{
pushStyle();
pushMatrix();
if (mode)
{
if (rotation)
{
rotate(distanz*interactiviti/50);
}
if (position)
{
translate(abstandmaus.x/distanz/interactiviti, abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale(distanz*interactiviti/50, distanz*interactiviti/50);
}
}
else
{
if (rotation)
{
rotate(distanz*interactiviti/50*(-1));
}
if (position)
{
translate((-1)*abstandmaus.x/distanz/interactiviti, (-1)*abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale((1/(distanz-0.1))*interactiviti/500, (1/(distanz-0.1))*interactiviti/500);
}
}
boolean z = true;
for (int i = 0; i < 40; i = i+1)
{
pushMatrix();
rotate(((-i))*(radians(6.42857)*(zeicheniteration*distanz)));
scale(pow(pow( (0.95), i), 1/4+1.62), pow(pow( (0.95), i), 1/4+1.62));
if (z) {
fill(schwarz);
}
else {
fill(weiss);
}
rectMode(CENTER);
rect(0, 0, zeichendurchmesser, zeichendurchmesser);
popMatrix();
z=!z;
}
popMatrix();
popStyle();
}
void Zeichen4(float zeicheniteration, float distanz, PVector abstandmaus, boolean rotation, boolean position, boolean skalierung, boolean mode, float interactiviti)
{
pushStyle();
pushMatrix();
if (mode)
{
if (rotation)
{
rotate(distanz*interactiviti/50);
}
if (position)
{
translate(abstandmaus.x/distanz/interactiviti, abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale(distanz*interactiviti/50, distanz*interactiviti/50);
}
}
else
{
if (rotation)
{
rotate(distanz*interactiviti/50*(-1));
}
if (position)
{
translate((-1)*abstandmaus.x/distanz/interactiviti, (-1)*abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale((1/(distanz-0.1))*interactiviti/500, (1/(distanz-0.1))*interactiviti/500);
}
}
int s = 100; //durcmesser kreis weiss
int v = 45; // verschiebung kreise  weiss-weiss X
int w = 75; // verschiebung kreise  weiss-weiss Y
float t = 0;
float f = 0.9;
float p = 5;
float c=1;
//  c = map(abstandmaus.y*abstandmaus.x, 0, (raster*(zeichenabstand+zeichendurchmesser)+zeichenabstand)*(raster*(zeichenabstand+zeichendurchmesser)+zeichenabstand), 0, 7);
c= zeicheniteration+ distanz*interactiviti/5;
if (c>7)
{
c=(7-(c-7));
}
if (c<1)
{
c=((-1)*(c-1))+1;
}
p = p+(2.5)*c;
f = pow(f, c);
t = t + (3.8)*c;
;
pushMatrix();
translate(0, 0);
scale(0.4, 0.4);
fill(schwarz);
ellipse(0, 50, 200, 200);
fill(weiss);
pushMatrix();
translate(0, t);
Kreis(t, p, f, s);
popMatrix();
pushMatrix();
translate(v*f, w*f+t);
rotate(radians(120));
Kreis(t, p, f, s);
popMatrix();
pushMatrix();
translate(-v*f, w*f+t);
rotate(radians(-120));
Kreis(t, p, f, s);
popMatrix();
popMatrix();
popMatrix();
popStyle();
}

void Zeichen5(float zeicheniteration, float distanz, PVector abstandmaus, boolean rotation, boolean position, boolean skalierung, boolean mode, float interactiviti)
{
pushStyle();
pushMatrix();

if (mode)
{
if (rotation)
{
rotate(distanz*interactiviti/50);
}
if (position)
{
translate(abstandmaus.x/distanz/interactiviti, abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale(distanz*interactiviti/50, distanz*interactiviti/50);
}
}
else
{
if (rotation)
{
rotate(distanz*interactiviti/50*(-1));
}
if (position)
{
translate((-1)*abstandmaus.x/distanz/interactiviti, (-1)*abstandmaus.y/distanz/interactiviti);
}
if (skalierung)
{
scale((1/(distanz-0.01))*interactiviti/100, (1/(distanz-0.01))*interactiviti/100);
}
}
rectMode(CENTER);
rect(0, 0, zeichendurchmesser, zeichendurchmesser);
popMatrix();
popStyle();
}

void Kreis(float t, float p, float f, float s)
{
pushMatrix();
rotate(radians(-90));
stroke(weiss);
strokeWeight(3);
noFill();
for (int i = 0; i < p;i=i+1)
{
ellipse(0-i/2, 0, (s-i), (s-i));
ellipse(0+i/2, 0, (s+i), (s+i));
}
popMatrix();
}