/* fraktalstern.c -- Programm unter GPL, (c) RTC @ 2003					*/
/* Programm zeichnet mithilfe der LCGI und rekursiver Funktionsaufrufe eine Art		*/
/* Fraktalstern auf den Bildschirm...							*/

#include <graphics.h>

#define MAXX 800
#define MAXY 600
#define VERKLFAKT 5


/* --- Definition der rekursiven Funktion star() --------------------------------------	*/
void star(int x, int y, int r){
	/* solange der Radius größer als 0 ist */
	if(r>0){
		/* zeichne Rechtecke mit halbem Radius an jede Ecke des akt. Rechtecks	*/
		star(x-r, y-r, r/2);
		star(x-r, y+r, r/2);
		star(x+r, y-r, r/2);
		star(x+r, y+r, r/2);
		/* zeichne das Rechteck */
		bar3d(x-r, y-r, x+r, y+r, 0);
	}
}

/* --- main() -------------------------------------------------------------------------	*/
int main(int argc, char **argv){
	initgraph(MAXX, MAXY);
	cleardevice(WHITE);
	setfillstyle(SOLID_FILL, BLUE);

	/* Abarbeitung der rekursiven Funktion, Übergabe von Anfangswerten */
	star(getmaxx()/2, getmaxy()/2, getmaxy()/VERKLFAKT);
	
	getch();
	closegraph();
	
	return 0;
}

