Konrad-Adenauer-Gymnasium Langenfeld

Informatik Grundkurs Einführungsphase

Lösung mit ungefüllten Quadraten

Eine Lösung mit ungefüllten Quadraten lässt sich in folgende Schritte zerlegen:

  1. Dreieck zeichnen
  2. Grundquadrat zeichnen
  3. Quadrat 1 zeichnen
  4. Quadrat 2 zeichnen
  5. Thaleskreis zeichnen

Zuerst legen wir die Koordinaten der Eckpunkte in Variablen ab:

int x1=150;
int y1=150;
int x2=200;
int y2=100;
int x3=250;
int y3=150;

Wir wählen hier bewusst einen einfachen Ansatz, um algorithmische Schwierigkeiten bei der Koordinatenberechnung für allgemeine Fälle zu vermeiden. Das dadurch entstehende rechtwinklige Dreieck ist gleichschenklig und außerdem ist die Grundseite parallel zur x-Achse des Koordinatensystems.

Das Dreieck lässt sich dann einfach mit drei drawLine-Befehlen aus aus den Eckpunktkoordinaten zeichnen:

//Dreieck zeichnen
grGrafik.drawLine(x1,y1,x2,y2);
grGrafik.drawLine(x2,y2,x3,y3);
grGrafik.drawLine(x3,y3,x1,y1);

Für das Grundquadrat definieren wir zunächst einmal die Seitenlänge c über x3-x1 und zeichnen dann ebenfalls mit drawLine-Befehlen. Als Zeichenfarbe wählen wir grün.

//Grundquadrat zeichnen
int c = x3-x1;
grGrafik.setColor(Color.green);
grGrafik.drawLine(x1,y1,x1,y1+c);
grGrafik.drawLine(x1,y1+c,x1+c,y1+c);
grGrafik.drawLine(x1+c,y1+c,x1+c,y1);

Die beiden Kathedenquadrate erfordern schon ein wenig mehr Überlegungen für die Koordinaten. Dann lassen sie sich aber ebenfalls mit drei drawLine-Befehlen zeichnen.

Beim linken Kathedenquadrat ist der Startpunkt (x1 | y1). Den zweiten Punkt erhält man aus der Überlegung, dass der y-Wert gleich y2 ist. Für den x-Wert überlegt man sich, dass der Mittelpunkt des Quadrats (x1 | y2) ist. Dann ist der x-Wert x1 - (x2 - x1) = 2*x1-x2. Der zweite Punkt ist also (2*x1-x2 | y2). Der dritte Punkt hat als x-Wert den Wert x1. Den y-Wert erhält man durch eine analoge Überlegung aus dem Mittelpunkt zu y2 - (y1 - y2) = 2*y2-y1. Der vierte Punkt ist dann (x2 | y2). Wir zeichnen in blau:

//Quadrat 1 zeichnen
grGrafik.setColor(Color.blue);
grGrafik.drawLine(x1,y1,2*x1-x2,y2);
grGrafik.drawLine(2*x1-x2,y2,x1,2*y2-y1);
grGrafik.drawLine(x1,2*y2-y1,x2,y2);

Durch analoge Überlegungen erhält man das zweite Kathedenquadrat in der Farbe orange:

//Quadrat 2 zeichnen
grGrafik.setColor(Color.orange);
grGrafik.drawLine(x2,y2,x3,2*y2-y3);
grGrafik.drawLine(x3,2*y2-y3,2*x3-x2,y2);
grGrafik.drawLine(2*x3-x2,y2,x3,y3);

Für den Thaleskreis benötigen wir den Durchmesser als x3-x1 und den Radius als halben Durchmesser über TypeCasting. Dann können wir den Thaleskreis in rot über einen einfachen drawArc-Befehl zeichnen lassen.

//Thaleskreis zeichnen
int Durchmesser = x3-x1;
int Radius = (int)(Durchmesser/2);
grGrafik.setColor(Color.red);
grGrafik.drawArc(x1,y1-Radius,Durchmesser,Durchmesser,180,-180);

Damit ist die Figur fertig gezeichnet.


© Ralph-Erich Hildebrandt, 24. September 2006