/*!\file thread.h * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Fichier contenant les entêtes des fonctions de dessin des fractales de Julia, Mandelbrot Ifs et Flame. Ce sont les fonctions executées par le ou les threads lancées depuis le thread "main" * */ #include "julia.h" #include "mandelbrot.h" #include "flame.h" #include "ifs.h" #include /*!\fn void* threadMandelbrot(void *Data) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Calcule et dessine la fractale de Mandelbrot * * \pre * \post * * \param Data : * */ void* threadMandelbrot(void *Data); /*!\fn void* threadJulia(void *Data) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Calcule et dessine la fractale de Julia * * \pre * \post * * \param Data : * */ void* threadJulia(void *Data); /*!\fn void iterationMandelbrot(int* pi_nbIt,int i_nbIter,double d_zX, double d_zY, double d_cX,double d_cY,double d_zX1) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Calcule le nombre d'itérations * * \pre * \post * * \param pi_nbIt : pointeur vers un entier représentant le nombre d'itérations parcourues * \param i_nbIter : pointeur vers un entier représentant le nombre d'itérations maximum * \param d_zX : réel correspondant à la partie réelle du complexe Z * \param d_zY : réel correspondant à la partie imaginaire du complexe Z * \param d_cX : réel correspondant à la partie réelle du complexe C * \param d_cY : réel correspondant à la partie imaginaire du complexe C * \param d_zX1 : réel correspondant à la partie réelle du complexe Z * */ void iterationMandelbrot(int* pi_nbIt,int i_nbIter,double d_zX, double d_zY, double d_cX,double d_cY,double d_zX1); /*!\fn void loopMandelbrot(Mandelbrot* mand_mandel, int* pi_nbIt, int* pi_oldIt, double d_xmin, double d_xmax, double d_ymin, double d_ymax) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Parcours la totalité de l'écran en calculant et dessinant la fractale de Mandelbrot * * \pre * \post * * \param mand_mandel : pointeur vers une structure Mandelbrot * \param pi_nbIt : pointeur vers un entier représentant le nombre d'itérations parcourues * \param pi_oldIt : pointeur vers un entier représentant le nombre d'itérations parcourues au pixel précédent * * \param d_xmax: réel correspondant à la partie réelle du complexe Z * \param d_xmin : réel correspondant à la partie imaginaire du complexe Z * \param d_ymax : réel correspondant à la partie réelle du complexe C * \param d_ymin : réel correspondant à la partie imaginaire du complexe C * */ void loopMandelbrot(Mandelbrot* mand_mandel, int* pi_nbIt, int* pi_oldIt,double d_xmin, double d_xmax, double d_ymin, double d_ymax); /*!\fn void loopJulia(Julia* jul_julia, int* pi_nbIt, int* pi_oldIt, double d_xmin, double d_xmax, double d_ymin, double d_ymax) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Parcours la totalité de l'écran en calculant et dessinant la fractale de Julia * * \pre * \post * * \param jul_julia : pointeur vers une structure Julia * \param pi_nbIt : pointeur vers un entier représentant le nombre d'itérations parcourues * \param pi_oldIt : pointeur vers un entier représentant le nombre d'itérations parcourues au pixel précédent * \param d_xmax: réel correspondant à la partie réelle du complexe Z * \param d_xmin : réel correspondant à la partie imaginaire du complexe Z * \param d_ymax : réel correspondant à la partie réelle du complexe C * \param d_ymin : réel correspondant à la partie imaginaire du complexe C * */ void loopJulia(Julia* jul_julia, int* pi_nbIt, int* pi_oldIt,double d_xmin, double d_xmax, double d_ymin, double d_ymax); /*!\fn void loopJuliaReverse(Julia* jul_julia, double d_xmin, double d_xmax, double d_ymin, double d_ymax) * * \author LEDIT Alexandre * \version 1.0 * \date 13-01-2012 * * \brief Dessine la fractale de Julia en calculant les racines du nombre complexe * * \param jul_julia : pointeur vers une structure Julia * \param d_xmax: réel correspondant à la partie réelle du complexe Z * \param d_xmin : réel correspondant à la partie imaginaire du complexe Z * \param d_ymax : réel correspondant à la partie réelle du complexe C * \param d_ymin : réel correspondant à la partie imaginaire du complexe C * */ void loopJuliaReverse(Julia* jul_julia, double d_xmin, double d_xmax, double d_ymin, double d_ymax); /*!\fn void loopFlameChoice(Flame* flame_flame, int i_flameNumber, char* pc_fileIfs) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Calcul les points ( et leur couleur associée) de la fractale flamme dans le cas de transformations prédéfinies * * \param flame_flame : pointeur vers une structure Flame * \param i_flameNumber : numéro de la flamme à calculer * \param pc_fileIfs : nom du fichier Ifs * */ void loopFlameChoice(Flame* flame_flame, int i_flameNumber, char* pc_fileIfs); /*!\fn void loopFlame(Flame* flame_flame, char* pc_postfixX, char* pc_postfixY, char* pc_fileIfs) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Calcul les points ( et leur couleur associée) de la fractale flamme dans le cas de transformations non définie prédéfinies * * \pre * \post * * \param flame_flame : pointeur vers une structure Flame * \param pc_postfixX : Une chaine de caractère représentant la chaine postfixe transformée préalablement depuis la chaine infixe rentrée par l'utilisateur pour l'abscisse dans un fichier Flame * \param pc_postfixY : Une chaine de caractère représentant la chaine postfixe transformée préalablement depuis la chaine infixe rentrée par l'utilisateur pour l'ordonnée dans un fichier Flame * \param pc_fileIfs : nom du fichier Ifs * */ void loopFlame(Flame* flame_flame, char* pc_postfixX, char* pc_postfixY, char* pc_fileIfs); /*!\fn void* threadFlame(void *pvoid_flame) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Calcule et dessine les fractales de type flamme * * \pre * \post * * \param pvoid_flame : void * */ void* threadFlame(void *pvoid_flame); /*!\fn void* threadIfs(void *pvoid_ifs) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Calcule et dessine les fractales de type Ifs * * \pre * \post * * \param pvoid_ifs : void * */ void* threadIfs(void *pvoid_ifs); /*!\fn void loopDrawIfs(Ifs* ifs_ifs) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Dessine les points Ifs en parcourant un tableau de couleurs de la taille de l'écran rempli lors de la fonction loopIfs * * \pre * \post * * \param ifs_ifs : pointeur vers une structure Ifs * */ void loopDrawIfs(Ifs* ifs_ifs); /*!\fn void loopDrawFlame(Flame* flame_flame) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Dessine les points Flame en parcourant un tableau de couleurs de la taille de l'écran rempli lors de la fonction loopFlame * * \pre * \post * * \param flame_flame : pointeur vers une structure Flame * */ void loopDrawFlame(Flame* flame_flame); /*!\fn void colorAndPutPixel(SDL_Surface* surf_pixel, int* pi_nbIter, int* pi_nFirst, double* pd_color, int** ppi_tabColor,int i_nbGradColor) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Dessine un pixel suivant le dégradé et le nombre d'itérations * * \pre * \post * * \param surf_pixel : pointeur vers le pixel à dessiner * \param pi_nbIter : pointeur vers un entier représentant le nombre d'itérations maximum * \param pi_nFirst : pointeur vers un entier représentant le nombre d'itérations parcourues * \param pd_color : tableau de couleurs actuellement utilisé * \param ppi_tabColor : tableau deux dimensions représentant toutes les couleurs disponibles * \param i_nbGradColor : numéro de dégradé utilisé * */ void colorAndPutPixel(SDL_Surface *surf_pixel, int* pi_nbIter, int* pi_nFirst, double* pd_color, int** ppi_tabColor, int i_nbGradColor); /*!\fn void freeSpaceOfThreadFlameIfs(double** ppd_tabCoeff, int i_numberOfLine, double* pd_tabProba) * * \author SOUPLET Antoine * \version 1.0 * \date 13-01-2012 * * \brief Libère l'espace mémoire alloué pendant le dessin de la fractale Ifs ou Flame * * \pre * \post * * \param ppd_tabCoeff : Tableau de coefficient * \param i_numberOfLine : Nombre de ligne du fichier Flame * \param pd_tabProba : Tableau de probabilité * */ void freeSpaceOfThreadFlameIfs(double** ppd_tabCoeff, int i_numberOfLine, double* pd_tabProba);