Fractales de julia et mandelbrot en sdl

Description

-Déjà courants sur ce site, les algorithmes pour dessiner les fractales sont assez simple...mais comme je n'ai pas bien compris le principe en regardant les sources déjà présentes, j'ai essayé d'en faire une plus simple (à part les petites fonctions de zoom et de décalage) qui tient dans une fonction, je crois, assez claire.
Cette source a donc pour objectif de vous donner envie de dessiner des fractales par vous-meme, et de mieux comprendre la façon dont on dessine les ensembles de Julia.
-Plusieurs fractales sont enregistrées, il n'y a pas quel celle de Mandelbrot. Vous pouvez les voir en appuyant sur le bouton "home" (c'est une flèche au dessus de fin pour ceux qui savent pas) et quitter le plein écran avec "échap" ou y revenir avec "F2". Le zoom ce fait avec les haut et bas de page et le déplacement...avec les touches directionelles.

Source / Exemple :


/***************************************************************/
/********Juste la fonction de dessin ici, le reste dans le zip**/
/***************************************************************/

void fdessinfractale(int zoom, int Xrepereinit, int Yrepereinit, double paramCx, double paramCy){
    pixel=SDL_CreateRGBSurface(SDL_HWSURFACE, 1, 1, bits, 0, 0, 0, 0);
    px=0;
    while (px<width){
    py=0;
    while (py<height){
            position.x=px;
            position.y=py;
            Xinit=0;Yinit=0;
            Xinit=(int)(Xrepereinit-(width/2));
            Yinit=(int)(Yrepereinit-(height/2));
            Xrepere=4*((px+Xinit)/((double)(zoom*width)));
            Yrepere=4*((py+Yinit)/((double)(zoom*height)));
            Zx=Xrepere;
            Zy=Yrepere;
            if(paramCx!=0&&paramCy!=0){Cx=paramCx;Cy=paramCy;}
            else{Cx=Xrepere;Cy=Yrepere;};
            n=0;
            while ( n<255 && (Zx*Zx+Zy*Zy)<=4 ){copie=Zx;
                                              Zx=Zx*Zx-Zy*Zy+Cx;
                                              Zy=2*copie*Zy+Cy;
                                              n++;
                                             };
            if(n==255&&borderonly==1){SDL_FillRect(pixel, NULL, SDL_MapRGB(pixel->format, 255, 255 , 255));}
            else{SDL_FillRect(pixel, NULL, SDL_MapRGB(pixel->format, n, n , 0));};
            SDL_BlitSurface(pixel, NULL, ecran, &position);
            py++;
                     };
    px++;
    };
SDL_Flip(ecran);
};

Codes Sources

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.