Vorlesung: Praxis der Funktionalen Programmierung | Index

Jonglier-Beschreibungs-Sprachen

Jongl

Interne Repräsentation der Muster sieht so aus:
!9 nightmare feed 
h=6 o=9 t=6 u=6 dt=0.330000
p 180
         1   .2 1
         1  1.2 1
        0
  -1   .5 1
        -1  -.5 1
        180
   1 -1.2 1
   1  -.2 1
*
-1-4-7
2-5-8-
-3-6-9
1-7-4-
-5-2-8
3-6-9-
(es gibt einen Konverter von Siteswaps in diese Form)

und der Objekte etwa so:

r=1
g=-.23
*
10 PUNKTE

0    0     -.35     #0

0    0     -.06     #1

 .06 -.052  .1
 .06  .052  .1      #2-5
-.06  .052  .1      
-.06 -.052  .1      

 .03 -.026  .25
 .03  .026  .25     #6-9

-.03  .026  .25   
-.03 -.026  .25   

1 LINIE

(8 0)   0 1

4 DREIECKE

(4 0 1)   1 2 3
(7 7 1)   1 3 4
(4 0 1)   1 4 5
(7 7 1)   1 5 2

5 N-ECKE

(4 0 1)   2 6 7 3 2
(7 7 1)   3 7 8 4 3
(4 0 1)   4 8 9 5 4
(7 7 1)   5 9 6 2 5
(4 0 1)   9 8 7 6 9

Joe-Pass

Die Musterberschreibung sind auch parallele Siteswaps
#h2

<4p 3 >
<3  5 >
<3  3 >
<3  4p>
<5  3 >
<3  3 >
Es gibt einen Kausal-Editor, mit etwa solchen Bildern:

ein Bild

Drops

Das war mal mein Ansatz:
// pop corn

eye = { 5000.0, 7000.0, 5000.0 };
sc = 15.0;

g = -2.5;

deltat = 0.1;
grain = 5;

// bool eye_move = true;

jugglers alice, bob;

// handout

switch
  alice :  take 2 left; take 2 right; start right; 
  bob :    take 2 left; take 1 right; start left;
end switch;

proc pattern = switch
  alice : swap 5 3  4->bob 3 3 3;
  bob   : swap 3 3 3 5 3 4->alice;
end switch;


repeat 100 pattern;

// finish off
last_orders;
pattern;

quit;
kompiliert in so eine "Maschinensprache"
eye = { 5000.0, 7000.0, 5000.0 };
sc = 15.0;
g = -1.5;
deltat = 0.1;
grain = 5;
jugglers (num = 2);
// begin of switch
take (hand = (jug = 0, side = 0), num = 2);
take (hand = (jug = 0, side = 1), num = 2);
take (hand = (jug = 1, side = 0), num = 2);
take (hand = (jug = 1, side = 1), num = 1);
// end of switch
// proc pattern defined
times (num = 100);
  // begin proc pattern
  // begin of switch
  catch (with = (jug = 0, side = 1));
  pthrow (after = 72, from = (jug = 0, side = 1), spin = 3.0, time = 378, to = (jug = 0, side = 0));
  catch (with = (jug = 1, side = 0));
  pthrow (after = 72, from = (jug = 1, side = 0), spin = 1.0, time = 198, to = (jug = 1, side = 1));
sleep (time = 72);
  throw (from = (jug = 0, side = 1), spin = 3.0, time = 378, to = (jug = 0, side = 0));
  pcatch (after = 108, with = (jug = 0, side = 1));
  throw (from = (jug = 1, side = 0), spin = 1.0, time = 198, to = (jug = 1, side = 1));
  pcatch (after = 108, with = (jug = 1, side = 0));

Natürliche Sprache

das sieht dann so aus:
> > hier wieder mal (seit langem) ein neuer, wunderschoener, komplizierter
> > dreiballtrick, fuer alle, die immer noch nicht mit fuenf baellen
> > klarkommen:
> >
> > die sequenz besteht aus vier wuerfen. wurf eins wird von der rechten hand
> > mit nach aussen gedrehter handflaeche geworfen (diese bewegung kennt man
> > evt von bb oder rr) - also ellenbogen hochklappen, hand aus der
> > normalposition um 180 grad nach aussen drehen. der erste ball fliegt in
> > richtung linke hand. wurf zwei dasselbe nur auf der anderen seite.
> > wurf drei wieder mit rechts, unter dem linken arm durchfassen und
> > senkrecht hochwerfen. wurf vier dasselbe mit links (halt auf der anderen
> > seite).
> >
> > mist, ist das schwer zu erklaeren.
> > auf jeden fall, das ganze heisst bei mir "drunk on the moon".

best viewed with any browser


http://www.informatik.uni-leipzig.de/~joe/ mailto:joe@informatik.uni-leipzig.de