Hallo,
meine Aufgabe ist es, ein Sierpinski Dreieck rekursiv zu zeichnen.
Ich habe dazu bereits folgenden Code verfasst, der jedoch noch nicht funktioniert.
Es wird zwar das schwarze Dreieck mit dem weißen Dreieck in der Mitte gezeichnet, mehr jedoch nicht.
Es ist in der Aufgabe vorgegeben, erst die Punkte des schwarzen und weißen Dreiecks zu berechnen, diese zu zeichnen, und dann die Methode mit den richtigen Abbruchbedingungen wieder aufzurufen und die beiden Dreiecke erneut im ersten großen Dreieck zu zeichnen. Dabei soll bei einer Rekursionstiefe von 0 das erste Dreieck immer noch gezeichnet werden.
Ich hoffe jemand kann mir eine Anregung dazu geben, was an meinem Code noch falsch ist.
Vielen Dank schonmal im Voraus!
meine Aufgabe ist es, ein Sierpinski Dreieck rekursiv zu zeichnen.
Ich habe dazu bereits folgenden Code verfasst, der jedoch noch nicht funktioniert.
Es wird zwar das schwarze Dreieck mit dem weißen Dreieck in der Mitte gezeichnet, mehr jedoch nicht.
Es ist in der Aufgabe vorgegeben, erst die Punkte des schwarzen und weißen Dreiecks zu berechnen, diese zu zeichnen, und dann die Methode mit den richtigen Abbruchbedingungen wieder aufzurufen und die beiden Dreiecke erneut im ersten großen Dreieck zu zeichnen. Dabei soll bei einer Rekursionstiefe von 0 das erste Dreieck immer noch gezeichnet werden.
Ich hoffe jemand kann mir eine Anregung dazu geben, was an meinem Code noch falsch ist.
Java:
protected void drawTriangleRec(int ax, int ay, int bx, int by, int cx, int cy, int depth, Color color) {
int width = bx - ax;
int höhe = ay + cy;
int[] dreieckSchwarzX = {ax, bx, cx};
int[] dreieckSchwarzY = {ay, by, cy};
g.setColor(color.black);
g.fillPolygon(dreieckSchwarzX, dreieckSchwarzY, 3);
int dx = width / 4 + 10;
int dy = höhe / 2;
int ex = (width / 4) * 3 + 10;
int ey = dy;
int fx = width / 2;
int fy = ay;
int[] dreieckWeissX = {dx, ex, fx};
int[] dreieckWeissY = {dy, ey, fy};
g.setColor(color.WHITE);
g.fillPolygon(dreieckWeissX, dreieckWeissY, 3);
if (depth == 0 || Math.sqrt(Math.pow(fx - ax, 2) + Math.pow(ay + cy, 2)) > 2) {
return;
}
drawTriangleRec(ax, ay, fx, fy, dx, dy, depth - 1, color);
drawTriangleRec(fx, fy, bx, by, ex, ey, depth - 1, color);
drawTriangleRec(dx, dy, ex, ey, cx, cy, depth - 1, color);
}
Vielen Dank schonmal im Voraus!