Thema: Möndchen des Hippokrates

Als ich zum ersten Mal von den Möndchen des Hippokrates gehört habe, wusste ich diese nicht so recht einzuordnen. Nach einem kurzen Blick ins Internet war mir allerdings schnell klar, was mit diesen anzufangen ist.


Bei dieser Aufgabe wollen wir ähnlich wie beim Satz des Pythagoras ein rechtwinkliges Dreieck zeichnen. Anstelle der Quadrate verwenden wir diesmal Kreise.


Betrachten wir zunächst den ersten Kreis. Anders als bei den Rechtecken liegt unsere Koordinate zum Positionieren des Kreise genau in der Mitte. Der Befehl zum zeichnen eines Kreises lautet arc(coordX, coordY, width, height, start, stop, mode), wobei width die breite in x-Richtung angibt und height die Höhe in y-Richtung. start und stop stehen für den Anfang und das Ende des Kreises und der mode als Modus welche Besonderheiten beim Zeichnen beachtet werden sollen.

Um einen Halbkreis wie oben zeichnen zu können, verwenden wir arc(4, 8, 8, 8, 0.5*PI , 1.5*PI). Dadurch erhalten wir einen Halbkreis dessen rechte Hälfte fehlt.


Für das zweite Dreieck gehen wir nach dem gleichen Prinzip vor. Diesmal lautet der Befehl arc(8, 4, 8, 8, -PI, 0)

Somit haben wir für,

den grünen Halbkreis: arc(4, 8, 8, 8, 0.5*PI , 1.5*PI)
den blauen Halbkreis: arc(8, 4, 8, 8, -PI, 0)


Worauf wir nun achten müssen ist, dass sich die beiden Halbkreise immer abhängig voneinander in der Position des lila Punktes treffen. Das heißt, ihre Position und Größe ist voneinander abhängig.

                int a = 8;
                int b = 8;
              
                arc(0.5*a, 0.5*b+0.5*a, a, a, 0.5*PI , 1.5*PI); // Grün

                arc(0.5*a+0.5*b, 0.5*b, b, b, -PI, 0); // Blau
                 
                

Gleiches gilt für die Koordinate des blauen Halbkreis. Hier ist x = 0.5*a+0.5*b und y = 0.5*b Jetzt fehlt uns nur noch der Kreis der Hypotenuse.


Zunächst bestimmen wir den Mittelpunkt des Kreises. Dieser liegt, wie man der Zeichnung entnehmen kann, bei x = 0.5*a + 0.5*b und y = 0.5*b + 0.5*a. Der Durchmesser ergibt sich aus dem Satz des Pythagoras, nämlich c = sqrt(a² + b²)

                int a = 8;
                int b = 8;
              
                arc(0.5*a, 0.5*b+0.5*a, a, a, 0.5*PI , 1.5*PI); // Grün

                arc(0.5*a+0.5*b, 0.5*b, b, b, -PI, 0); // Blau

                arc(0.5*a+0.5*b, 0.5*b+0.5*a, sqrt(a*a + b*b), sqrt(a*a + b*b), 0, 2*PI); // Rot
                 
                

Was uns jetzt noch fehlt, ist das Dreieck in der Mitte. Dieses realisieren wir mit Vertices. Die Koordinaten der lila Punkte lassen sich mit unserem erworbenen Vorwissen nun auch ganz leicht berechnen.


Zu guter Letzt wird alles noch eingefärbt, das Dreieck gezeichnet und die Fenstergröße festgelegt. Natürlich dürfen wir auch nicht den Vergrößerungsfaktor vergessen!

                int magn = 5;
                int a = magn*8;
                int b = magn*8;
                
                background(255);
                size(int(0.5*a+b), int(0.5*b+a));

                fill(255, 0, 0);
                arc(0.5*a, 0.5*b+0.5*a, a, a, 0.5*PI , 1.5*PI); // Grün

                fill(0, 255, 0);
                arc(0.5*a+0.5*b, 0.5*b, b, b, -PI, 0); // Blau

                fill(255);
                arc(0.5*a+0.5*b, 0.5*b+0.5*a, sqrt(a*a + b*b), sqrt(a*a + b*b), 0, 2*PI); // Rot

                fill(0, 0, 255);
                beginShape();
                  vertex(0.5*a, 0.5*b);
                  vertex(0.5*a, 0.5*b+a);
                  vertex(0.5*a+b, 0.5*b);
                endShape(CLOSE);
                 
                

Durch die Überlagerung der Kreise und der passgenauen Fenstergröße sehen wir die Möndchen des Hippokrates in voller Pracht. Für den größten der Kreise wurde bewusst darauf verzichtet, einen Halbkreis zu verwenden da es ansonsten etwas schwieriger geworden wäre.

Nun können wir für jede beliebige Größe eine Zeichnung anlegen. Wenn alles funktioniert sollte es folgendermaßen aussehen: