Sierpinski Dreieck programmieren java?
Hallo,
wie würdet ihr das sierpinski dreieck rekursiv programmieren?
https://de.wikipedia.org/wiki/Sierpinski-Dreieck#/media/Datei:Sierpinski-Trigon-7.svg
ich probier schon seit Stunden und komme einfach nicht drauf....
Ich habs mit 3 Methoden probiert, die sich selber ineinander aufrufen etc..
Danke und VG
2 Antworten
Schnurstracks:
void sierpinski ( double ax, double ay
, double bx, double by
, double cx, double cy
, double epsilon )
{
if ( bx-ax < epsilon && by-ay < epsilon )
{
draw_line(ax,ay, bx,by);
draw_line(bx,by, cx,cy);
draw_line(cx,cy, ax,ay);
}
else
{
double abx=(ax+bx)/2, aby=(ay+by)/2;
double bcx=(bx+cx)/2, bcy=(by+cy)/2;
double acx=(ax+cx)/2, acy=(ay+cy)/2;
sierpinsky( ax,ay, abx,aby, acx,acy, epsilon );
sierpinsky( abx,aby, bx,by, bcx,bcy, epsilon );
sierpinsky( acx,acy, bcx,bcy, cx,cy, epsilon );
}
}
Wenn das Dreieck gleichseitig mit waagrechter Grundfläche ist, reichen drei Koordinaten als Parameter aus. Die übrigen drei können daraus berechnet werden:
void sierpinski ( double ax, double ay, double bx, double epsilon )
{
double by=ay, cx=(ax+bx)/2, cy=ay+(bx-ax)*sqrt(.75);
...
}
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren
Eine einfache Rekursion, für die eine geeignete Vorschrift gefunden werden muß.
Alternativ kann man es auch über ein Lindemayersystem mit Stringexpansion(-ersetzung) machen.