/*************************************************************************************************************************************/
/* */
/* I T E R A T I O N S C O M P L E X E S E T H Y P E R - C O M P L E X E S : */
/* */
/* */
/* Author of '$xrc/ITERATION.11$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 20070108141909). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* E N T R E E D E C E R T A I N S P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define PROCESS_ARGUMENTS_DE_PARAMETRAGE_DES_ITERATIONS_2 \
Bblock \
\
DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
\
GET_ARGUMENT_L("editer_fenetre_courante=""efc=" \
,iterations_dans_C_HC_HHC_____editer_la_fenetre_courante_avant_et_apres_homothetie \
); \
/* ATTENTION : ce parametre peut etre reference par ailleurs ; c'est ainsi le cas de */ \
/* 'v $xrc/mandel.01$K editer_la_fenetre_courante_avant_et_apres_homothetie'. Dans ce */ \
/* cas l'imbrication des parametres editees (via 'use' par exemple) n'est par, pour ce */ \
/* parametre, ce que l'on attend (faire 'suse $xrc/mandel.01$x' pour le verifier...). */ \
GET_ARGUMENT_L("OX_EX_OY_EY=""OE=" \
,iterations_dans_C_HC_HHC_____editer_la_fenetre_courante_sous_forme_OX_EX_OY_EY \
); \
GET_ARGUMENT_N("xbg_ybg_xhd_yhd=""bghd=" \
,iterations_dans_C_HC_HHC_____editer_la_fenetre_courante_sous_forme_OX_EX_OY_EY \
); \
/* Arguments introduits le 20110115103016... */ \
\
GET_ARGUMENT_L("fenetre_homothetique_image=""fhi=" \
,HOMOTHETIE__IMAGE__C_HC_HHC______prendre_en_compte_le_rapport_dimX_dimY \
); \
/* Arguments introduits le 20120123135915... */ \
GET_ARGUMENT_L("homothetie_utiliser_dimX_dimY=""hdXdY=",HOMOTHETIE__IMAGE__C_HC_HHC______utiliser_dimX_dimY); \
GET_ARGUMENT_N("homothetie_utiliser_Xmax_Ymax=""hXMYM=",HOMOTHETIE__IMAGE__C_HC_HHC______utiliser_dimX_dimY); \
/* Arguments introduits le 20120123130153... */ \
\
FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
\
Eblock \
/* Introduit le 20101102084053... */
#define PROCESS_ARGUMENTS_DE_PARAMETRAGE_DES_ITERATIONS_1 \
Bblock \
\
DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
/* Introduit le 20070130091001 car, en effet, il manquait... */ \
\
PROCESS_ARGUMENTS_DE_PARAMETRAGE_DES_ITERATIONS_2; \
/* Introduit le 20091122135541 et modifie le 20101102084053... */ \
\
GET_ARGUMENT_L("extension=""etendre_precision=""etendre=",iterations_dans_C_HC_HHC_____etendre_la_precision); \
GET_ARGUMENT_L("module=",iterations_dans_C_HC_HHC_____memoriser_le_module_plutot_que_les_arguments); \
GET_ARGUMENT_N("argument=",iterations_dans_C_HC_HHC_____memoriser_le_module_plutot_que_les_arguments); \
/* On note le 20061219124820 que le renvoi du module ne peut se faire qu'en activant */ \
/* la visualisation de l'argument de sortie. Ainsi, il faudra utiliser les arguments */ \
/* suivants : */ \
/* */ \
/* arguments=VRAI */ \
/* */ \
/* qui demande la visualisation de l'argument de sortie, ainsi que de plus : */ \
/* */ \
/* etendre_precision=VRAI */ \
/* argument=FAUX (ou son "complement" : module=VRAI) */ \
/* */ \
/* pour remplacer la sortie de l'argument de sortie par celle du module... */ \
GET_ARGUMENT_F("minimum_module=""minimum=" \
,iterations_dans_C_HC_HHC_____minimum_du_module_a_memoriser_plutot_que_les_arguments \
); \
GET_ARGUMENT_F("maximum_module=""maximum=" \
,iterations_dans_C_HC_HHC_____maximum_du_module_a_memoriser_plutot_que_les_arguments \
); \
/* Arguments introduits le 20061219094957... */ \
\
GET_ARGUMENT_L("visualiser_appartenance=""appartenance=" \
,iterations_dans_C_HC_HHC_____visualiser_l_appartenance_plutot_que_le_nombre_d_iterations \
); \
GET_ARGUMENT_N("visualiser_nombre_iterations=""nombre_iterations=" \
,iterations_dans_C_HC_HHC_____visualiser_l_appartenance_plutot_que_le_nombre_d_iterations \
); \
/* Arguments introduits le 20091120122239... */ \
GET_ARGUMENT_L("renormaliser_nombre_iterations=""rnni=" \
,iterations_dans_C_HC_HHC_____renormaliser_le_nombre_d_iterations \
); \
/* Arguments introduits le 20150126132028... */ \
\
FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
/* Introduit le 20070130091001 car, en effet, il manquait... */ \
\
Eblock \
/* Introduit le 20070108141909... */
#define PROCESS_ARGUMENTS_GEOMETRIQUES_DE_ROTATION_2_HC \
Bblock \
\
DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
\
GET_ARGUMENT_L("centrer_rotation_3D=""centrer_rotation=""cr=" \
,iterations_diverses_dans_HC_____centrer_la_rotation_3D_dans_la_fenetre \
); \
/* Introduit le 20121227110912... */ \
\
GET_ARGUMENT_F("X_centre_rotation_3D=""Xrotation=""Xrot=" \
,iterations_diverses_dans_HC_____X_centre_de_rotation_3D \
); \
GET_ARGUMENT_F("Y_centre_rotation_3D=""Yrotation=""Yrot=" \
,iterations_diverses_dans_HC_____Y_centre_de_rotation_3D \
); \
GET_ARGUMENT_F("Z_centre_rotation_3D=""Zrotation=""Zrot=" \
,iterations_diverses_dans_HC_____Z_centre_de_rotation_3D \
); \
\
FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
\
Eblock \
/* Introduit le 20091222135218. Le 20121227104740, j'ai pris conscience du fait que */ \
/* 'PROCESS_ARGUMENTS_GEOMETRIQUES_DE_ROTATION_2' ne concernait que 'HC'. A cette date, */ \
/* son nom a donc ete change en 'PROCESS_ARGUMENTS_GEOMETRIQUES_DE_ROTATION_2_HC' et */ \
/* 'PROCESS_ARGUMENTS_GEOMETRIQUES_DE_ROTATION_2_HHC' a ete introduit... */
#define PROCESS_ARGUMENTS_GEOMETRIQUES_DE_ROTATION_2_HHC \
Bblock \
\
DEBUT_D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
\
GET_ARGUMENT_L("centrer_rotation_3D=""centrer_rotation=""cr=" \
,iterations_diverses_dans_HHC_____centrer_la_rotation_3D_dans_la_fenetre \
); \
/* Introduit le 20121227110912... */ \
\
GET_ARGUMENT_F("X_centre_rotation_3D=""Xrotation=""Xrot=" \
,iterations_diverses_dans_HHC_____X_centre_de_rotation_3D \
); \
GET_ARGUMENT_F("Y_centre_rotation_3D=""Yrotation=""Yrot=" \
,iterations_diverses_dans_HHC_____Y_centre_de_rotation_3D \
); \
GET_ARGUMENT_F("Z_centre_rotation_3D=""Zrotation=""Zrot=" \
,iterations_diverses_dans_HHC_____Z_centre_de_rotation_3D \
); \
\
FIN___D_IMBRICATION_DES_____gPROCESS_PARAMETRE_____SECONDAIRES; \
\
Eblock \
/* Introduit le 20121227104740 (avec beaucoup de retard...). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E S T I O N D E L A R E D U C T I O N D E S F E N E T R E S D E C A L C U L : */
/* */
/*************************************************************************************************************************************/
#define CALCUL_DU_RAPPORT_DE_REDUCTION \
Bblock \
EGAL(rapport_de_reduction \
,COND(IFEQ(nombre_d_images,UNITE) \
,FU \
,PUIX(precision,INVE(FLOT(PRED(nombre_d_images)))) \
) \
); \
/* Notons 'D', 'C' et 'A' respectivement une */ \
/* coordonnee de Depart, Courante et d'Arrivee. */ \
/* Notons aussi 'K' le rapport de reduction */ \
/* permettant de passer de l'image de rang 'I' */ \
/* a l'image de rang 'I+1'. On choisit une */ \
/* relation barycentrique du type : */ \
/* */ \
/* C=K*C+(1-K)*A */ \
/* */ \
/* soit : */ \
/* */ \
/* C=K*(C-A)+A */ \
/* */ \
/* avec initialement : C=D. */ \
Eblock \
/* Calcul du rapport de reduction (introduit le 20091122183306). */
#define REDUCTION_DE_LA_FENETRE_COURANTE \
Bblock \
Cinitialisation(coin_bas_gauche_de_depart_puis_courant \
,BARY(Reelle(coin_bas_gauche_de_depart_puis_courant) \
,Reelle(coin_bas_gauche_d_arrivee) \
,COMP(rapport_de_reduction) \
) \
,BARY(Imaginaire(coin_bas_gauche_de_depart_puis_courant) \
,Imaginaire(coin_bas_gauche_d_arrivee) \
,COMP(rapport_de_reduction) \
) \
); \
Cinitialisation(coin_haut_droite_de_depart_puis_courant \
,BARY(Reelle(coin_haut_droite_de_depart_puis_courant) \
,Reelle(coin_haut_droite_d_arrivee) \
,COMP(rapport_de_reduction) \
) \
,BARY(Imaginaire(coin_haut_droite_de_depart_puis_courant) \
,Imaginaire(coin_haut_droite_d_arrivee) \
,COMP(rapport_de_reduction) \
) \
); \
Eblock \
/* Reduction de la fenetre de calcul courante (introduit le 20091122183306). */