/*************************************************************************************************************************************/ /* */ /* 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). */