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
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.