package Pkg_Outils_Fractals is --------------------------TYPES-------------------------- type T_Couleur is record R : Natural; G : Natural; B : Natural; end record; type T_Tab_Couleur is array (Natural range <>) of T_Couleur; type T_Matrice_Couleur is array (0..Largeur_Ecran, 0..Hauteur_Ecran) of T_Couleur; type T_Matrice_Iteration is array (Integer range <>, Integer range <>) of Natural; type T_Centre is record X : Long_Float := 0.6; --(0.6) (1.63) Y : Long_Float := 0.0; --(0.0) (0.001) end record; -------------------------VARIABLES------------------------ NB_Iteration_Max : Positive := 256; --Nombre d'iteration C_Diverge_Limite : Long_Float := 4.0; --doit être compris entre 0 et 4 (4 etant la valeur par défaut(normal)) Zoom : Long_Float := 1.0/4.0; --Facteur de zoom sur la fractal(1/4) (1200.0) Centre : T_Centre := (-0.6, 0.0); Cx : Long_Float := -0.577; Cy : Long_Float := 0.468; Nb_Iteration : Natural; Points : T_Tab_Couleur := ((255,0,0), (0,255,0), (0,0,255), (255,255,0) ); Antialiasing : Boolean := False; -- Degrade : T_Tab_Couleur(1 .. Nb_Iteration_Max); Matrice_Ecran : T_Matrice_Iteration (0..Largeur_Ecran, 0..Hauteur_Ecran); Matrice_Couleur : T_Matrice_Couleur; ------------------------------------------------------------------------------------------------ -- Nom : Creer_Degrade -- -- But : Creer un tableau de degrade de couleur en fonction de couleur determinee -- ------------------------------------------------------------------------------------------------ procedure Creer_Degrade (Points_Definis_Param : in T_Tab_Couleur; Degrade : out T_Tab_Couleur; Nb_Iteration : in Natural); ------------------------------------------------------------------------------------------------ -- Nom : Affiche_Degrade -- -- But : Affiche le degrade sur la longueur demandé sur 5 pixels de hauteur -- ------------------------------------------------------------------------------------------------ procedure Affiche_Degrade (Points_Definis : in T_Tab_Couleur; Longueur : in Integer); ------------------------------------------------------------------------------------------------ -- Nom : Conversion_Couleur -- -- But : Convertit une matrice d'iteration en une matrice de couleur -- ------------------------------------------------------------------------------------------------ procedure Conversion_Couleur (Matrice : in T_Matrice_Iteration; Degrade : in T_Tab_Couleur; Matrice_Couleur : out T_Matrice_Couleur); ------------------------------------------------------------------------------------------------ -- Nom : Calcul_Antialiasing -- -- But : Contracter une matrice en une autre 2 fois plus petite -- ------------------------------------------------------------------------------------------------ function Calcul_Antialiasing(Matrice_Antialiasing : T_Matrice_Iteration) return T_Matrice_Iteration; ------------------------------------------------------------------------------------------------ -- Nom : Mandel_Gen -- -- But : Genere une matrice d'iteration selon Mandelbrot -- ------------------------------------------------------------------------------------------------ function Mandel_Gen (Largeur_Zone, Hauteur_Zone : Natural ; Zoom, C_Diverge_Limite : Long_Float; NB_Iteration_Max : Positive; Centre : T_Centre; Antialiasing : Boolean := False) return T_Matrice_Iteration; ------------------------------------------------------------------------------------------------ -- Nom : Julia_Gen -- -- But : Genere une matrice d'iteration selon Mandelbrot -- ------------------------------------------------------------------------------------------------ function Julia_Gen (Largeur_Zone, Hauteur_Zone : Natural; Zoom, C_Diverge_Limite : Long_Float; NB_Iteration_Max : Positive; Centre : T_Centre; Cx, Cy : Long_Float; Antialiasing : Boolean) return T_Matrice_Iteration; end Pkg_Outils_Fractals;