/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   G E N E R A T I O N   D U   C H A M P   T R E F L E  :                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrq/trefle.80$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   PRAGMA_CPP_____MODULE_NON_DERIVABLE

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE
#include  image_image_IMAGESF_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H A M P   " T R E F L E "   D E   L O C A L I S A T I O N   D E   L A   M E R   D E   Q U A R K S  :                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ......................::::::::------++++++++++++++--------::::::                                                 */
/*                  ....................::::::::-----+++++++++++++++++++-------:::::                                                 */
/*                  .................:::::::::----+++++ooooooooooooo++++++------::::                                                 */
/*                  ............::::::::::::----++++oooooo******oooooo+++++-----::::                                                 */
/*                  ...:::::::::::::::::::-----+++ooo**************ooooo++++-----:::                                                 */
/*                  ::::::::::::::::::-------+++ooo****##########****oooo+++-----:::                                                 */
/*                  ::::::::::------------++++ooo***###############***ooo++++----:::                                                 */
/*                  ::::------------++++++++ooo***##################***ooo+++----:::                                                 */
/*                  ---------+++++++++ooooooo***####################***ooo+++---::::                                                 */
/*                  -----++++++ooooooo*******#########*****##########**oo+++----::::                                                 */
/*                  --++++++ooooo*****#############**oooooo**########**oo+++---:::::                                                 */
/*                  -+++++oooo****###############**o+----++oo*######**ooo++----:::::                                                 */
/*                  ++++oooo****############****oo+-:::::--+o*######**oo+++---::::::                                                 */
/*                  +++oooo***##########***o+++---:..  ..:-+o*#####**oo+++---::::::.                                                 */
/*                  ++oooo***##########**o++-::...      .:-o*######**oo++----::::::.                                                 */
/*                  ++oooo***##########*oo+--:..       .:-+o*######**oo++----::::::.                                                 */
/*                  ++oooo***##########**o++-::...      .:-o*######**oo++----::::::.                                                 */
/*                  +++oooo***##########***o+++---:..  ..:-+o*#####**oo+++---::::::.                                                 */
/*                  ++++oooo****############****oo+-:::::--+o*######**oo+++---::::::                                                 */
/*                  -+++++oooo****###############**o+----++oo*######**ooo++----:::::                                                 */
/*                  --++++++ooooo*****#############**oooooo**########**oo+++---:::::                                                 */
/*                  -----++++++ooooooo*******#########*****##########**oo+++----::::                                                 */
/*                  ---------+++++++++ooooooo***####################***ooo+++---::::                                                 */
/*                  ::::------------++++++++ooo***##################***ooo+++----:::                                                 */
/*                  ::::::::::------------++++ooo***###############***ooo++++----:::                                                 */
/*                  ::::::::::::::::::-------+++ooo****##########****oooo+++-----:::                                                 */
/*                  ...:::::::::::::::::::-----+++ooo**************ooooo++++-----:::                                                 */
/*                  ............::::::::::::----++++oooooo******oooooo+++++-----::::                                                 */
/*                  .................:::::::::----+++++ooooooooooooo++++++------::::                                                 */
/*                  ....................::::::::-----+++++++++++++++++++-------:::::                                                 */
/*                  ......................::::::::------++++++++++++++--------::::::                                                 */
/*                  ........................::::::::-------------------------:::::::                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   X_TRANSLATION_DU_TREFLE                                                                                                       \
                    FDU
#define   X_ECHELLE_DU_TREFLE                                                                                                           \
                    FU
                                        /* Translation et echelle horizontale du champ,                                              */
#define   Y_TRANSLATION_DU_TREFLE                                                                                                       \
                    FDU
#define   Y_ECHELLE_DU_TREFLE                                                                                                           \
                    FU
                                        /* Translation et echelle verticale du champ.                                                */

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01
#    define    COEFFICIENT                                                                                                              \
                         FDU                                                                                                            \
                                        /* Coefficient de ponderation 'Cs' de la fonction 'sinus'.                                   */
#    define    COEFFICIENT_LINEAIRE                                                                                                     \
                         COMP(COEFFICIENT)                                                                                              \
                                        /* Coefficient lineaire 'Ts' de l'expression en 'sinus(rho)' ; le 'COMP()' est la afin       */ \
                                        /* de garantir que la fonction 'F(X,Y)' est dans [0,1]...                                    */
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
#    define    COEFFICIENT                                                                                                              \
                         FU                                                                                                             \
                                        /* Coefficient de ponderation 'Cs' de la fonction "polynomiale".                             */
#    define    COEFFICIENT_LINEAIRE                                                                                                     \
                         EXP2(MOIT(COEFFICIENT))                                                                                        \
                                        /* Coefficient lineaire 'Ts' de la fonction "polynomiale" ; le 'EXP2(MOIT())' est la afin    */ \
                                        /* de garantir que la fonction 'F(X,Y)' est dans [0,1]...                                    */
#    define    COEFFICIENT_CONTINU                                                                                                      \
                         FZERO                                                                                                          \
                                        /* Composante continue 'Co' de la fonction "polynomiale" ; elle permet de mettre en place    */ \
                                        /* une mer de quarks plus ou moins dense, suivant sa valeur...                               */
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01
#    define    COEFFICIENT_RHO                                                                                                          \
                         GRO8(PI)                                                                                                       \
                                        /* Coefficient de ponderation 'Cr' du module 'rho'.                                          */
#    define    COEFFICIENT_PHASE_RHO                                                                                                    \
                         NEGA(PI_SUR_2)                                                                                                 \
                                        /* Coefficient de phase 'Pr' du module 'rho' (desole pour l'abus de langage, mais 'rho'      */
                                        /* est utilise comme un angle...).                                                           */
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
#    define    MOITIE_DE_L_EXPOSANT                                                                                                     \
                         QUATRE                                                                                                         \
                                        /* Moitie 'r' de l'exposant de 'R(X,Y)' ; plus cette valeur est elevee, plus les cotes       */ \
                                        /* du triangle sont etroits.                                                                 */
#    define    COEFFICIENT_RHO                                                                                                          \
                         CERCLE_TRIGONOMETRIQUE                                                                                         \
                                        /* Coefficient de ponderation 'Cr' du module 'rho'.                                          */
#    define    COEFFICIENT_PHASE_RHO                                                                                                    \
                         FZERO                                                                                                          \
                                        /* Coefficient de phase 'Pr' du module 'rho' (desole pour l'abus de langage, mais 'rho'      */
                                        /* est utilise comme un angle...).                                                           */
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02

#define   COEFFICIENT_COSINUS                                                                                                           \
                    FRA4(FU)                                                                                                            \
                                        /* Coefficient de ponderation 'Cc' de la fonction 'cosinus'.                                 */
#define   COEFFICIENT_LINEAIRE_COSINUS                                                                                                  \
                    FDEUX                                                                                                               \
                                        /* Coefficient lineaire 'Tc' de l'expression en 'cosinus(theta)'.                            */
#define   COEFFICIENT_THETA                                                                                                             \
                    GRO3(FU)                                                                                                            \
                                        /* Coefficient de ponderation 'Ct' de l'angle 'theta'.                                       */
#define   COEFFICIENT_PHASE_THETA                                                                                                       \
                    FZERO                                                                                                               \
                                        /* Coefficient de phase 'Pt' de l'angle 'theta'.                                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H A M P   " T R O I S -  G A U S S I E N "   D E   C H O I X   D E S   C O U L E U R S  :                                */
/*                                                                                                                                   */
/*                                                 ....::::----------::::....                                                        */
/*                                                ...:::---++++++++++---:::...                                                       */
/*                                               ...:::--++oooooooooo++--:::...                                                      */
/*                                              ...:::--+ooo********ooo+--:::...                                                     */
/*                                              ...::--++o**       #**o++--::...                                                     */
/*                                              ...::--+oo** ROUGE #**oo+--::...                                                     */
/*                                              ...::--++o**       #**o++--::...                                                     */
/*                                              ...:::--+oo****##****oo++-:::...                                                     */
/*                        .......                ...:::--++oooo**oooo++--:::...                                                      */
/*                   .................            ...:::---++++++++++---:::...                                                       */
/*                  .....:::::::::......           ....::::----------::::....                                                        */
/*                  ..:::::-----:::::.....           .....::::::::::::.....                                                          */
/*                  :::------------::::....             ................                                                             */
/*                  ::---+++++++++---:::....                 ......                                                                  */
/*                  :---++       ++---::....                                                                                         */
/*                  :--+++ VERTE ++---:::...                                                                                         */
/*                  :---++       ++---::....                                                                                         */
/*                  ::---+++++++++---:::...                                                                                          */
/*                  :::------------::::....                                                                                          */
/*                  ..:::::-----:::::.....                                                                                           */
/*                  .....:::::::::......                   ..........                                                                */
/*                   .................                  ................                                                             */
/*                        .......                      ..................                                                            */
/*                                                    ......::::::::......                                                           */
/*                                                   .....::       :::.....                                                          */
/*                                                   .....:: BLEUE :::.....                                                          */
/*                                                   .....::       :::.....                                                          */
/*                                                    ......::::::::......                                                           */
/*                                                     ..................                                                            */
/*                                                      ................                                                             */
/*                                                         ..........                                                                */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   DEPHASAGE_DU_QUARK_ROUGE                                                                                                      \
                    FZERO                                                                                                               \
                                        /* Dephasage du premier quark (le 'ROUGE').                                                  */
#define   VOISINAGE_DU_QUARK_ROUGE                                                                                                      \
                    DIVI(PI,CENT)                                                                                                       \
                                        /* Afin de faire des recherches dans la direction du quark 'ROUGE'.                          */
#define   TIERS_DE_CERCLE                                                                                                               \
                    FRA3(CERCLE_TRIGONOMETRIQUE)                                                                                        \
                                        /* Un tiers du cercle trigonometrique.                                                       */
%define   X_TRANSLATION_r                                                                                                               \
                    ADD2(X_TRANSLATION_DU_TREFLE                                                                                        \
                        ,MUL2(echelle_de_translation                                                                                    \
                             ,COSX(ADD2(DEPHASAGE_DU_QUARK_ROUGE                                                                        \
                                       ,GRO0(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
                                        /* Translation horizontale du champ 'ROUGE' ('POSITIONNEMENT_D_UN_QUARK_DU_PROTON' ==> "="), */
%define   Y_TRANSLATION_r                                                                                                               \
                    ADD2(Y_TRANSLATION_DU_TREFLE                                                                                        \
                        ,MUL2(echelle_de_translation                                                                                    \
                             ,SINX(ADD2(DEPHASAGE_DU_QUARK_ROUGE                                                                        \
                                       ,GRO0(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
                                        /* Translation verticale du champ 'ROUGE' ('POSITIONNEMENT_D_UN_QUARK_DU_PROTON' ==> "="),   */
%define   X_TRANSLATION_v                                                                                                               \
                    ADD2(X_TRANSLATION_DU_TREFLE                                                                                        \
                        ,MUL2(echelle_de_translation                                                                                    \
                             ,COSX(ADD2(DEPHASAGE_DU_QUARK_ROUGE                                                                        \
                                       ,GRO1(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
                                        /* Translation horizontale du champ 'VERTE' ('POSITIONNEMENT_D_UN_QUARK_DU_PROTON' ==> "="), */
%define   Y_TRANSLATION_v                                                                                                               \
                    ADD2(Y_TRANSLATION_DU_TREFLE                                                                                        \
                        ,MUL2(echelle_de_translation                                                                                    \
                             ,SINX(ADD2(DEPHASAGE_DU_QUARK_ROUGE                                                                        \
                                       ,GRO1(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
                                        /* Translation verticale du champ 'VERTE' ('POSITIONNEMENT_D_UN_QUARK_DU_PROTON' ==> "="),   */
%define   X_TRANSLATION_b                                                                                                               \
                    ADD2(X_TRANSLATION_DU_TREFLE                                                                                        \
                        ,MUL2(echelle_de_translation                                                                                    \
                             ,COSX(ADD2(DEPHASAGE_DU_QUARK_ROUGE                                                                        \
                                       ,GRO2(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
                                        /* Translation horizontale du champ 'BLEUE' ('POSITIONNEMENT_D_UN_QUARK_DU_PROTON' ==> "="), */
%define   Y_TRANSLATION_b                                                                                                               \
                    ADD2(Y_TRANSLATION_DU_TREFLE                                                                                        \
                        ,MUL2(echelle_de_translation                                                                                    \
                             ,SINX(ADD2(DEPHASAGE_DU_QUARK_ROUGE                                                                        \
                                       ,GRO2(TIERS_DE_CERCLE)                                                                           \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
                                        /* Translation verticale du champ 'BLEUE ('POSITIONNEMENT_D_UN_QUARK_DU_PROTON' ==> "="),    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   D I S Q U E S   ( C O U L E U R S   E T   P O S I T I O N S )  :                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   RAYON_DES_DISQUES                                                                                                             \
                    HUIT                                                                                                                \
                                        /* Rayon des disques representatifs des points.                                              */
#define   NIVEAU_DES_COULEURS                                                                                                           \
                    BLANC                                                                                                               \
                                        /* Niveau de marquage maximum des disques flous 'COULEUR',                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   POSITIONNEMENT_D_UN_QUARK_DU_PROTON(contexte,COULEUR)                                                                         \
                                        /* Positionnement de l'un des trois quarks COULEUR=(R,V,B) du proton.                        */ \
                    Bblock                                                                                                              \
                    SET_CURSOR(X_TRANSLATION`COULEUR                                                                                    \
                              ,Y_TRANSLATION`COULEUR                                                                                    \
                              ,_____cNORMALISE_OZ(Zmax)                                                                                 \
                               );                                                                                                       \
                                        /* Mise en place du curseur graphique sur le quark courant 'COULEUR'.                        */ \
                    WCG(contexte);                                                                                                      \
                                        /* Et sauvegarde du contexte graphique...                                                    */ \
                    Eblock

#include  xrq/trefle.80.I"
                                        /* Introduit le 20061212110040 pour eviter le message :                                      */
                                        /*                                                                                           */
                                        /*                  TRACE_D_UN_POINT_D_UN_DOUBLET: unterminated macro call                   */
                                        /*                                                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   L A   G E N E R A T I O N   D U   C H A M P   T R E F L E  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
     DEFV(deltaF_2D,translation_du_proton);
     DEFV(coeffF_2D,echelle_du_proton);
                                        /* Translation et echelle du champ a utiliser pour contraindre la generation aleatoire.      */
     DEFV(Int,INIT(X_du_maximum_du_champ_trefle,UNDEF));
     DEFV(Int,INIT(Y_du_maximum_du_champ_trefle,UNDEF));
                                        /* Coordonnee {X,Y} du maximum du champ.                                                     */
     DEFV(Float,INIT(maximum_du_champ_trefle,F_MOINS_L_INFINI));
                                        /* Maximum du champ "trefle" rencontre dans la direction du premier quark.                   */
     DEFV(Float,INIT(echelle_de_translation,FLOT__UNDEF));
                                        /* Echelle de translation destinee a faire coincider les champs "trefle" et                  */
                                        /* "trois-gaussiens" ; pou ce faire, on recherche dans la direction du premier               */
                                        /* quark (le 'ROUGE') le maximum du champ "trefle"...                                        */
     DEFV(deltaF_2D,translation_r);
     DEFV(deltaF_2D,translation_v);
     DEFV(deltaF_2D,translation_b);
                                        /* Position des trois quarks.                                                                */
     DEFV(Int,INIT(rayon_des_disques,RAYON_DES_DISQUES));
                                        /* Rayon des disques flous (attention : ne peut etre un 'Positive' a cause des expressions   */
                                        /* arithmetiques qui l'utilisent...).                                                        */
     /*..............................................................................................................................*/
     EGAL(Ftrefle_____coefficient,COEFFICIENT);

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
     EGAL(Ftrefle_____moitie_de_l_exposant_de_rho_module,MOITIE_DE_L_EXPOSANT);
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02

     EGAL(Ftrefle_____coefficient_rho,COEFFICIENT_RHO);
     EGAL(Ftrefle_____coefficient_phase_rho,COEFFICIENT_PHASE_RHO);
     EGAL(Ftrefle_____coefficient_lineaire,COEFFICIENT_LINEAIRE);

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
     EGAL(Ftrefle_____coefficient_continu,COEFFICIENT_CONTINU);
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02

     EGAL(Ftrefle_____coefficient_cosinus,COEFFICIENT_COSINUS);
     EGAL(Ftrefle_____coefficient_theta,COEFFICIENT_THETA);
     EGAL(Ftrefle_____coefficient_phase_theta,COEFFICIENT_PHASE_THETA);
     EGAL(Ftrefle_____coefficient_lineaire_cosinus,COEFFICIENT_LINEAIRE_COSINUS);
     INITIALISATION_ACCROISSEMENT_2D(translation_du_proton,X_TRANSLATION_DU_TREFLE,Y_TRANSLATION_DU_TREFLE);
     INITIALISATION_COEFFICIENT_2D(echelle_du_proton,X_ECHELLE_DU_TREFLE,Y_ECHELLE_DU_TREFLE);
                                        /* Definition du champ "trefle"...                                                           */
     INITIALISATION_ACCROISSEMENT_2D(translation_r,X_TRANSLATION_r,Y_TRANSLATION_r);
                                        /* Initialisation de la translation du champ 'ROUGE' gaussien.                               */
     INITIALISATION_ACCROISSEMENT_2D(translation_v,X_TRANSLATION_v,Y_TRANSLATION_v);
                                        /* Initialisation de la translation du champ 'VERTE' gaussien.                               */
     INITIALISATION_ACCROISSEMENT_2D(translation_b,X_TRANSLATION_b,Y_TRANSLATION_b);
                                        /* Initialisation de la translation du champ 'BLEUE' gaussien.                               */

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01
     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_F("Tx=",ASD1(translation_du_proton,dx));
                         GET_ARGUMENT_F("Ty=",ASD1(translation_du_proton,dy));
                         GET_ARGUMENT_F("cs=""Cs=",Ftrefle_____coefficient);
                         GET_ARGUMENT_F("cr=""Cr=",Ftrefle_____coefficient_rho);
                         GET_ARGUMENT_F("pr=""Pr=",Ftrefle_____coefficient_phase_rho);
                         GET_ARGUMENT_F("ts=""Ts=",Ftrefle_____coefficient_lineaire);
                         GET_ARGUMENT_F("cc=""Cc=",Ftrefle_____coefficient_cosinus);
                         GET_ARGUMENT_F("ct=""Ct=",Ftrefle_____coefficient_theta);
                         GET_ARGUMENT_F("pt=""Pt=",Ftrefle_____coefficient_phase_theta);
                         GET_ARGUMENT_F("tc=""Tc=",Ftrefle_____coefficient_lineaire_cosinus);
                         GET_ARGUMENT_I("rayon=",rayon_des_disques);
                         )
                    );
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_01

#ifdef    FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_F("Tx=",ASD1(translation_du_proton,dx));
                         GET_ARGUMENT_F("Ty=",ASD1(translation_du_proton,dy));
                         GET_ARGUMENT_F("cs=""Cs=",Ftrefle_____coefficient);
                         GET_ARGUMENT_I("r=",Ftrefle_____moitie_de_l_exposant_de_rho_module);
                         GET_ARGUMENT_F("cr=""Cr=",Ftrefle_____coefficient_rho);
                         GET_ARGUMENT_F("pr=""Pr=",Ftrefle_____coefficient_phase_rho);
                         GET_ARGUMENT_F("ts=""Ts=",Ftrefle_____coefficient_lineaire);
                         GET_ARGUMENT_F("co=""Co=",Ftrefle_____coefficient_continu);
                         GET_ARGUMENT_F("cc=""Cc=",Ftrefle_____coefficient_cosinus);
                         GET_ARGUMENT_F("ct=""Ct=",Ftrefle_____coefficient_theta);
                         GET_ARGUMENT_F("pt=""Pt=",Ftrefle_____coefficient_phase_theta);
                         GET_ARGUMENT_F("tc=""Tc=",Ftrefle_____coefficient_lineaire_cosinus);
                         GET_ARGUMENT_I("rayon=",rayon_des_disques);
                         )
                    );
#Aifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02
#Eifdef   FACON_DE_CALCULER_LE_CHAMP_TREFLE_VERSION_02

#ifdef    PROJECTION_3D_2D_VERSION_02
     SET_FACTEUR_D_ELOIGNEMENT_EN_Z_DE_L_OBSERVATEUR(FACTEUR_D_ELOIGNEMENT_EN_Z_POUR_UNE_PROJECTION_PARALLELE);
                                        /* Facteur d'eloignement en 'Z' de l'observateur destine a simuler la projection parallele,  */
                                        /* c'est-a-dire celle qui provoque : {X,Y,Z} --> {X,Y}.                                      */
#Aifdef   PROJECTION_3D_2D_VERSION_02
#Eifdef   PROJECTION_3D_2D_VERSION_02

     begin_image
          Bblock
          Test(IFLE(SOUA(ACCES_A_UN_CHAMP(FU
                                         ,RIEN,Fargument
                                         ,FZERO
                                         ,X,Y
                                         ,ASD1,translation_du_proton,echelle_du_proton
                                          )
                        ,DEPHASAGE_DU_QUARK_ROUGE
                         )
                   ,VOISINAGE_DU_QUARK_ROUGE
                    )
               )
               Bblock
               DEFV(Float,INIT(champ_courant,ACCES_A_UN_CHAMP(FU
                                                             ,RIEN,Ftrefle
                                                             ,FZERO
                                                             ,X,Y
                                                             ,ASD1,translation_du_proton,echelle_du_proton
                                                              )
                               )
                    );
                                        /* Lorsque l'on se trouve dans la direction du premier quark, on regarde l'intensite du      */
                                        /* champ "trefle".                                                                           */
               Test(IFGT(champ_courant,maximum_du_champ_trefle))
                    Bblock
                    EGAL(X_du_maximum_du_champ_trefle,X);
                    EGAL(Y_du_maximum_du_champ_trefle,Y);
                    EGAL(maximum_du_champ_trefle,champ_courant);
                                        /* Lorsqu'on est en presence d'un maximum local, on le memorise, ainsi que le 'rho'          */
                                        /* correspondant et les coordonnees {X,Y} :                                                  */
                    EGAL(echelle_de_translation
                        ,ACCES_A_UN_CHAMP(FU
                                         ,RIEN,Fmodule
                                         ,FZERO
                                         ,X,Y
                                         ,ASD1,translation_du_proton,echelle_du_proton
                                          )
                         );
                                        /* Recherche du module 'rho' du point du champ "trefle" qui soit dans la direction           */
                                        /* du quark 'ROUGE' est qui corresponde a un maximum du champ "trefle".                      */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     end_image

     CAL2(Prin4("maximum du champ=%g au point (%d,%d) avec rho=%g\n"
               ,maximum_du_champ_trefle
               ,X_du_maximum_du_champ_trefle,Y_du_maximum_du_champ_trefle
               ,echelle_de_translation
                )
          );

     CALS(Iinit_Z_Buffer());
                                        /* Initialisation du  'Z-Buffer'...                                                          */
     CALi(IFinitialisation(IFmage_PR,FZERO));
                                        /* Initialisation de l'image dans laquelle on va generer le champ "trefle".                  */

     begin_image
          Bblock
          storeF_point(ACCES_A_UN_CHAMP(FU
                                       ,RIEN,Ftrefle
                                       ,FZERO
                                       ,X,Y
                                       ,ASD1,translation_du_proton,echelle_du_proton
                                        )
                      ,IFmage_PR
                      ,X,Y
                       );
          Test(IFET(IFEQ(X,X_du_maximum_du_champ_trefle),IFEQ(Y,Y_du_maximum_du_champ_trefle)))
               Bblock
               CAL2(Prin3("champ(%d,%d)=%g\n"
                         ,X_du_maximum_du_champ_trefle,Y_du_maximum_du_champ_trefle
                         ,loadF_point(IFmage_PR,X,Y)
                          )
                    );
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     end_image

     CAL2(Prin1("minimum=%g\n",IFnivo_minimum(IFmage_PR)));
     CAL2(Prin1("maximum=%g\n",IFnivo_maximum(IFmage_PR)));

     CALS(Ifloat_std_avec_renormalisation(ImageR,IFmage_PR));
                                        /* Generation de l'image du champ "trefle".                                                  */

     POSITIONNEMENT_D_UN_QUARK_DU_PROTON(vecteurs_____Gcon_11,r);
     TRACE_D_UN_POINT_D_UN_DOUBLET(vecteurs_____Gcon_11,NIVEAU_DES_COULEURS,GRO2);
                                        /* Trace du quark  'ROUGE' du proton,                                                        */
     POSITIONNEMENT_D_UN_QUARK_DU_PROTON(vecteurs_____Gcon_12,v);
     TRACE_D_UN_POINT_D_UN_DOUBLET(vecteurs_____Gcon_12,NIVEAU_DES_COULEURS,GRO2);
                                        /* Trace du quark  'VERTE' du proton,                                                        */
     POSITIONNEMENT_D_UN_QUARK_DU_PROTON(vecteurs_____Gcon_13,b);
     TRACE_D_UN_POINT_D_UN_DOUBLET(vecteurs_____Gcon_13,NIVEAU_DES_COULEURS,GRO2);
                                        /* Trace du quark  'BLEUE' du proton,                                                        */

     CALi(Iupdate_image(nom_imageR,ImageR));

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.