[vc++ et djgpp] flocon de von koch avec allegro

Contenu du snippet

Ben c'est la figure fractale de Von Koch en moins de 50 lignes

Source / Exemple :


#include "allegro.h" //Flocon de Von Koch par GoldenEye Mai 2002
#define ITERATIONS 7

void dessinerVonKoch(double xa,double ya,double xb,double yb,int iter)
{
	double tempx=(xb-xa)/3;//on coupe le côté en 3
	double tempy=(yb-ya)/3;
	double xd=xa+tempx;
	double yd=ya+tempy;
	double xe=xa+2*tempx;
	double ye=ya+2*tempy;
	double xc=xa+(3*tempx)/2+sqrt(3)*tempy/2;//xc=cos(60)*(xe-xd)-sin(60)*(ye-yd)
	double yc=ya-sqrt(3)*tempx/2+3*tempy/2;//yc=sin(60)*(xe-xd)+cos(60)*(ye-yd)
	if(iter!=0)
	{
		acquire_screen();
		line(screen,xa,ya,xd,yd,255);//évite les trous liés aux arrondis
		line(screen,xe,ye,xb,yb,255);//idem
		triangle(screen,xd,yd,xc,yc,xe,ye,255);//trace le trinagle
		release_screen();
		dessinerVonKoch(xa,ya,xd,yd,iter-1);//on dessine sur les 4 segments nouvellement créés
		dessinerVonKoch(xe,ye,xb,yb,iter-1);
		dessinerVonKoch(xd,yd,xc,yc,iter-1);
		dessinerVonKoch(xc,yc,xe,ye,iter-1);
	}
}

int main()
{
	double tabx[3]={140,400,660};//abscisses des 3 points initiaux
	double taby[3]={450,0,450};//ordonnées
	int i;
	allegro_init();
	install_keyboard();
	set_gfx_mode(GFX_AUTODETECT,800,600,0,0);
	triangle(screen,tabx[0],taby[0],tabx[1],taby[1],tabx[2],taby[2],255);//triangle initial
	for(i=0;i<3;i++)//on traite chaque côté
		dessinerVonKoch(tabx[i],taby[i],tabx[(i+1)%3],taby[(i+1)%3],ITERATIONS);
	readkey();
	fade_out(1);
	allegro_exit();
	return 0;
}
END_OF_MAIN();

Conclusion :


C'est compatible VC++ et DJGPP (je suis fier de moi). Y a pas de fonction de zoom étant donné l'autosimilarité basique de la figure.
C'est l'une des fractales les plus simples à comprendre et à encoder.
Posez moi des questions si vous en avez

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.