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



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.