#include #include #include #define N 256 /* nombre d'iteration et de couleurs donc */ /* listes des fonctions */ void mise_a_jour_coef(); int mandelbrot(); void dessine_mandelbrot(); void init_palette(); void init_parametre(); typedef struct R { int x,y,width,height; } R; /* variables globales pour X */ /* variables globales pour la fractale */ double ax,bx,ay,by; /* coefficient de changement de repere */ double xr0,xr1,yr0,yr1,tmp; /* borne du domaine reel [xr0,xr1]*[yr0,yr1] */ unsigned long palette[N]; /* couleurs pour le dessin de la fractale */ R Rcourant,Rancien; int main(int nbarg,char *arg[]) { int display_width, display_height; /* taille de l'ecran (root window) */ int width, height; /* taille de la fenetre */ int x=0, y=0; /* position de la fenetre */ int Xold,Yold; XColor couleur; int ancx,ancy; int x0,y0,x1,y1; /* coordonnee pour le zoom */ int pb; int clic; int to; /* Initialiser la taille de la fenetre en fonction de la taille de l'ecran */ if (nbarg!=1) { width=atoi(arg[1]); height=atoi(arg[2]); } else { width = 550; height = 550; } printf("Utiliser la souris pour zoomer sur une partie de l'ensemble\n"); InitialiserGraphique(); CreerFenetre(0,0,width,height); init_parametre(); dessine_mandelbrot(width,height); while(1) { if (SourisCliquee()) { if (clic==0) { Xold=_X; Yold=_Y; Rcourant.x=_X; Rcourant.y=_Y; x0=Rcourant.x; y0=Rcourant.y; xr0=ax*_X+bx; yr0=ay*_Y+by; Rcourant.width=Rcourant.height=0; ChoisirModeDessin(2); DessinerRectangle(Rcourant.x,Rcourant.y,Rcourant.width,Rcourant.height); ChoisirModeDessin(0); clic=1; } else { xr1=ax*_X+bx; yr1=ay*_Y+by; if (xr1