/*************************************************************************************************************************************/
/* */
/* C A L C U L D ' U N E N S E M B L E D E J U L I A */
/* D A N S L E P L A N C O M P L E X E : */
/* */
/* */
/* Author of '$xrc/julia.11$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1989??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
#define GENERER_LES_GET_ARGUMENTS_DE_CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS
/* Introduit le 20070129112538... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S : */
/* */
/*************************************************************************************************************************************/
#include INCLUDES_BASE
#include maths_compl_fonct_ITERATIONS_EXT
#include image_image_QUAD_IMAGE_EXT
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define NOMBRE_D_ITERATIONS \
SOUS(BLANC,NOIR) \
/* Nombre d'iterations demandees. */
#define MODE_DE_VISUALISATION \
VISUALISATION_DU_NOMBRE_D_ITERATIONS \
/* A priori, on visualise le nombre d'iterations... */
#define SEUIL_DE_LA_DISTANCE \
PARE(-1.0e2) \
/* Pour definir le seuil de la distance d(z). */
#define X_DEPART_GAUCHE \
PARE(-1.2)
#define X_DEPART_DROITE \
PARE(1.2)
#define Y_DEPART_BAS \
PARE(-1.2)
#define Y_DEPART_HAUT \
PARE(1.2)
/* Definition de la fenetre de calcul. */
#define GENERATEUR_REEL \
PARE(0.0)
#define GENERATEUR_IMAGINAIRE \
PARE(1.0)
/* Generateur de l'ensemble : on prend 'i' a priori... */
#define SEUIL_DE_MASQUAGE \
GRIS \
/* Seuil de masquage... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C A L C U L D ' U N E N S E M B L E D E J U L I A */
/* D A N S L E P L A N C O M P L E X E : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_masque),NOM_PIPE));
DEFV(Float,INIT(depart_gauche,X_DEPART_GAUCHE));
DEFV(Float,INIT(depart_bas,Y_DEPART_BAS));
DEFV(complexe,coin_bas_gauche);
/* Definition du point situe en bas a gauche de la fenetre courante, */
DEFV(Float,INIT(depart_droite,X_DEPART_DROITE));
DEFV(Float,INIT(depart_haut,Y_DEPART_HAUT));
DEFV(complexe,coin_haut_droite);
/* Definition du point situe en haut a droite de la fenetre courante. */
DEFV(Float,INIT(generateur_reel,GENERATEUR_REEL));
DEFV(Float,INIT(generateur_imaginaire,GENERATEUR_IMAGINAIRE));
DEFV(complexe,point_argument);
/* Nombre complexe generateur. */
DEFV(Int,INIT(nombre_d_iterations,NOMBRE_D_ITERATIONS));
/* Nombre maximal d'itrerations a effectuer. */
DEFV(Int,INIT(mode_de_visualisation,MODE_DE_VISUALISATION));
/* Choix du mode de visualisation. */
DEFV(Float,INIT(seuil_de_la_distance,SEUIL_DE_LA_DISTANCE));
/* Pour definir le seuil de la distance d(z). */
DEFV(genere_p,INIT(seuil_de_masquage,SEUIL_DE_MASQUAGE));
/* Pour definir le seuil de masquage (lorsque le masquage est actif). */
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_C("imageM=""M=",nom_masque);
GET_ARGUMENT_I("n=""iterations=""N=",nombre_d_iterations);
GET_ARGUMENT_I("mode=",mode_de_visualisation);
GET_ARGUMENT_F("xg=""Xg=",depart_gauche);
GET_ARGUMENT_F("yg=""Yg=",depart_bas);
GET_ARGUMENT_F("xd=""Xd=",depart_droite);
GET_ARGUMENT_F("yd=""Yd=",depart_haut);
GET_ARGUMENT_F("r=""gr=",generateur_reel);
GET_ARGUMENT_F("i=""gi=",generateur_imaginaire);
GET_ARGUMENT_F("seuil=""s=",seuil_de_la_distance);
GET_ARGUMENT_P("masque=""m=",seuil_de_masquage);
CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_COMPLEXES;
/* Cette extension a ete introduite le 20070129112538... */
)
);
CALi(Inoir(ImageR));
/* Initialisation de l'image Resultat. */
Test(IFNE_chaine(nom_masque,NOM_PIPE))
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(Masque,nom_masque))))
Bblock
MASQUE_IMAGES(seuil_de_masquage);
/* Le masquage n'a lieu que si l'image 'Masque' est chargee correctement... */
Eblock
ATes
Bblock
DEMASQUE_IMAGES;
/* Le masquage n'a lieu que si l'image 'Masque' est chargee correctement... */
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
Eblock
ATes
Bblock
DEMASQUE_IMAGES;
/* Le masquage n'est pas demande... */
Eblock
ETes
Test(IFOU(IFNE(mode_de_visualisation,VISUALISATION_DES_ORBITES)
,IFET(IFEQ(mode_de_visualisation,VISUALISATION_DES_ORBITES)
,PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA)))
)
)
)
Bblock
Cinitialisation(coin_bas_gauche,depart_gauche,depart_bas);
Cinitialisation(coin_haut_droite,depart_droite,depart_haut);
Cinitialisation(point_argument,generateur_reel,generateur_imaginaire);
CALS(Ijulia_chevelu_dans_C(ImageR
,ADRESSE(coin_bas_gauche),ADRESSE(coin_haut_droite)
,ADRESSE(point_argument)
,nombre_d_iterations
,seuil_de_la_distance
,mode_de_visualisation
,ImageA
)
);
CALi(Iupdate_image(nom_imageR,ImageR));
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
RETU_Commande;
Eblock
ECommande