/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A S S A G E   D E S   F A U S S E S   A U X   V R A I E S   C O U L E U R S     A L E A T O I R E S  :                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande calcule les trois                                                                               */
/*                  composantes en vraies couleurs aleatoires                                                                        */
/*                  de l'image Argument.                                                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/vraies_C_aleatoires$K' :                                                                                   */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20210520110857).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   UTILISER_LA_METHODE_NON_DETERMINISTE                                                                                          \
                    FAUX                                                                                                                \
                                        /* Faut-il utiliser la methode non deterministe ('VRAI)' ou deterministe ('FAUX') ? Ceci     */ \
                                        /* fut introduit le 20210521103643...                                                        */ \
                                        /*                                                                                           */ \
                                        /* La methode deterministe a ete activee par defaut le 20210523085838 (en passant de 'FAUX'  */ \
                                        /* a 'VRAI') grace a 'v $xiii/quad_image$FON _____selectionner_aleatoirement_les_index.VRAI' */ \
                                        /* qui marche parfaitement...                                                                */

#define   GENERER_UNE_IMAGE_EN_VRAIES_COULEURS                                                                                          \
                    FAUX                                                                                                                \
                                        /* Faut-il generer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois         */ \
                                        /* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX').            */

#define   GENERER_LA_COMPOSANTE_ROUGE                                                                                                   \
                    VRAI
#define   GENERER_LA_COMPOSANTE_VERTE                                                                                                   \
                    VRAI
#define   GENERER_LA_COMPOSANTE_BLEUE                                                                                                   \
                    VRAI
#define   GENERER_LA_LUMINANCE                                                                                                          \
                    FAUX
                                        /* Indicateurs precisant s'il faut generer ('VRAI') ou pas ('FAUX') la composante            */
                                        /* chromatique correspondante.                                                               */

#define   UTILISER_LE_POINT_COURANT_COMME_BORNE_SUPERIEURE                                                                              \
                    FAUX                                                                                                                \
                                        /* Faut-il utiliser le point courant pour les trois bornes superieures ('VRAI') ou bien      */ \
                                        /* prendre des valeurs par defaut ('FAUX') ? Ceci fut introduit le 20210520145214...         */

#define   NOMBRE_MAXIMAL_D_ITERATIONS                                                                                                   \
                    CENT                                                                                                                \
                                        /* Nombre maximal d'iterations de recherche d'une solution...                                */

#define   GRAINE_ROUGE                                                                                                                  \
                    PARE(1789)
#define   GRAINE_VERTE                                                                                                                  \
                    PARE(1947)
#define   GRAINE_BLEUE                                                                                                                  \
                    PARE(2001)
                                        /* Graines de generation aleatoire...                                                        */

#define   FACTEUR_ROUGE                                                                                                                 \
                    FRA10(FRA2(FU))
#define   FACTEUR_VERTE                                                                                                                 \
                    FRA10(FRA2(FU))
#define   FACTEUR_BLEUE                                                                                                                 \
                    FRA10(FRA2(FU))
                                        /* Afin de calculer les bornes inferieure et superieure de generation aleatoire...           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/vraies_C.01.I"
#include  xci/luminance.01.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A S S A G E   D E S   F A U S S E S   A U X   V R A I E S   C O U L E U R S     A L E A T O I R E S  :                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
                                        /* Nom de l'image a displayer.                                                               */

     DEFV(CHAR,INIC(POINTERc(nom_imagesR),NOM_PIPE));
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
                                        /* Nom de la racine d'une image en vraies couleurs.                                          */
     DEFV(CHAR,INIC(POINTERc(nom_imageRR),NOM_PIPE));
                                        /* Nom de l'image ROUGE a generer,                                                           */
     DEFV(CHAR,INIC(POINTERc(nom_imageRV),NOM_PIPE));
                                        /* Nom de l'image VERTE a generer,                                                           */
     DEFV(CHAR,INIC(POINTERc(nom_imageRB),NOM_PIPE));
                                        /* Nom de l'image BLEUE a generer,                                                           */
     DEFV(CHAR,INIC(POINTERc(nom_imageRL),NOM_PIPE));
                                        /* Nom de l'image LUMINANCE a generer.                                                       */

     DEFV(Logical,INIT(utiliser_la_methode_non_deterministe,UTILISER_LA_METHODE_NON_DETERMINISTE));
                                        /* Faut-il utiliser la methode non deterministe ('VRAI)' ou deterministe ('FAUX') ? Ceci     */
                                        /* fut introduit le 20210521103643...                                                        */
                                        /*                                                                                           */
                                        /* La methode deterministe a ete activee par defaut le 20210523085838 (en passant de 'FAUX'  */
                                        /* a 'VRAI') grace a 'v $xiii/quad_image$FON _____selectionner_aleatoirement_les_index.VRAI' */
                                        /* qui marche parfaitement...                                                                */

     DEFV(Logical,INIT(generer_une_image_en_vraies_couleurs,GENERER_UNE_IMAGE_EN_VRAIES_COULEURS));
                                        /* Faut-il generer une image en vraies couleurs ('VRAI)' c'est-a-dire dont les trois         */
                                        /* composantes ont la meme racine, ou bien trois images "independantes" ('FAUX'). La         */
                                        /* valeur par defaut est choisie pour assurer la compatibilite anterieure...                 */
     DEFV(Logical,INIT(generer_la_composante_ROUGE,GENERER_LA_COMPOSANTE_ROUGE));
     DEFV(Logical,INIT(generer_la_composante_VERTE,GENERER_LA_COMPOSANTE_VERTE));
     DEFV(Logical,INIT(generer_la_composante_BLEUE,GENERER_LA_COMPOSANTE_BLEUE));
     DEFV(Logical,INIT(generer_la_luminance,GENERER_LA_LUMINANCE));
                                        /* Indicateurs precisant s'il faut genere ('VRAI') ou pas ('FAUX') la composante             */
                                        /* chromatique correspondante.                                                               */

     DEFV(Logical,INIT(utiliser_le_point_courant_comme_borne_superieure,UTILISER_LE_POINT_COURANT_COMME_BORNE_SUPERIEURE));
                                        /* Faut-il utiliser le point courant pour les trois bornes superieures ('VRAI') ou bien      */
                                        /* prendre des valeurs par defaut ('FAUX') ? Ceci fut introduit le 20210520145214...         */

     DEFV(Positive,INIT(nombre_maximal_d_iterations,NOMBRE_MAXIMAL_D_ITERATIONS));
                                        /* Nombre maximal d'iterations de recherche d'une solution...                                */

     DEFV(Int,INIT(graine_ROUGE,GRAINE_ROUGE));
     DEFV(Int,INIT(graine_VERTE,GRAINE_VERTE));
     DEFV(Int,INIT(graine_BLEUE,GRAINE_BLEUE));
                                        /* Graines de generation aleatoire...                                                        */
     DEFV(Float,INIT(facteur_ROUGE,FACTEUR_ROUGE));
     DEFV(Float,INIT(facteur_VERTE,FACTEUR_VERTE));
     DEFV(Float,INIT(facteur_BLEUE,FACTEUR_BLEUE));
                                        /* Afin de calculer les bornes inferieure et superieure de generation aleatoire...           */
     /*..............................................................................................................................*/
     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_C("Rouge=""RR=""ROUGE=",nom_imageRR);
                         GET_ARGUMENT_C("Verte=""VERTE=""RV=",nom_imageRV);
                         GET_ARGUMENT_C("RB=""Bleue=""BLEUE=",nom_imageRB);
                         GET_ARGUMENT_C("RL=""Luminance=""LUMINANCE=",nom_imageRL);

                         GET_ARGUMENT_L("RVB=",generer_une_image_en_vraies_couleurs);
                         GET_ARGUMENT_L("genereR=""gROUGE=",generer_la_composante_ROUGE);
                         GET_ARGUMENT_L("genereV=""gVERTE=",generer_la_composante_VERTE);
                         GET_ARGUMENT_L("genereB=""gBLEUE=",generer_la_composante_BLEUE);
                         GET_ARGUMENT_L("genereL=""gLUMINANCE=",generer_la_luminance);

                         GET_ARGUMENT_L("non_deterministe=""aleatoire=""nd=",utiliser_la_methode_non_deterministe);
                         GET_ARGUMENT_N("deterministe=""d=",utiliser_la_methode_non_deterministe);
                                        /* Arguments introduits le 20210521103643...                                                 */

                         GET_ARGUMENT_I("nombre_repetitions=""repetitions=""nr="
                                       ,Ivraies_couleurs_non_aleatoires_____nombre_de_repetitions
                                        );
                                        /* Arguments introduits le 20210522080354...                                                 */

                         GET_ARGUMENT_L("selection_aleatoire_index=""sax="
                                       ,Ivraies_couleurs_non_aleatoires_____selectionner_aleatoirement_les_index
                                        );
                         GET_ARGUMENT_I("graine=""g=",Ivraies_couleurs_non_aleatoires_____graine_de_selection_aleatoire_des_index);
                                        /* Arguments introduits le 20210523082516...                                                 */

                         GET_ARGUMENT_L("point_courant_borne_superieure=""pcbs=",utiliser_le_point_courant_comme_borne_superieure);
                                        /* Argument introduit le 20210520145214...                                                   */

                         GET_ARGUMENT_I("iterations=",nombre_maximal_d_iterations);

                         GET_ARGUMENT_I("graine_ROUGE=""gR=",graine_ROUGE);
                         GET_ARGUMENT_I("graine_VERTE=""gV=",graine_VERTE);
                         GET_ARGUMENT_I("graine_BLEUE=""gB=",graine_BLEUE);

                         GET_ARGUMENT_F("facteur_ROUGE=""fR=",facteur_ROUGE);
                         GET_ARGUMENT_F("facteur_VERTE=""fV=",facteur_VERTE);
                         GET_ARGUMENT_F("facteur_BLEUE=""fB=",facteur_BLEUE);
                         )
                    );

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageA))))
          Bblock
          Test(IL_FAUT(utiliser_la_methode_non_deterministe))
                                        /* Test introduit le 20210521103643...                                                       */
               Bblock
               CALS(Ivraies_couleurs_aleatoires(Image_ROUGE,Image_VERTE,Image_BLEUE
                                               ,ImageA
                                               ,utiliser_le_point_courant_comme_borne_superieure
                                               ,nombre_maximal_d_iterations
                                               ,graine_ROUGE,graine_VERTE,graine_BLEUE
                                               ,facteur_ROUGE,facteur_VERTE,facteur_BLEUE
                                                )
                    );
               Eblock
          ATes
               Bblock
               CALS(Ivraies_couleurs_non_aleatoires(Image_ROUGE,Image_VERTE,Image_BLEUE
                                                   ,ImageA
                                                    )
                    );
               Eblock
          ETes

          Test(IL_FAUT(generer_la_luminance))
               Bblock
               CALS(Iluminance(ImageR,Image_ROUGE,Image_VERTE,Image_BLEUE));

               CALi(Iupdate_image(nom_imageRL,ImageR));
               Eblock
          ATes
               Bblock
               GENERER_LE_NOM_DE_TROIS_COMPOSANTES_CHROMATIQUES_RVB(nom_imageR,nom_imageRR,nom_imageRV,nom_imageRB)

               Test(IL_FAUT(generer_la_composante_ROUGE))
                    Bblock
                    GENERATION_D_UNE_COMPOSANTE(nom_imageRR,c_ROUGE,Image_ROUGE);
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               Test(IL_FAUT(generer_la_composante_VERTE))
                    Bblock
                    GENERATION_D_UNE_COMPOSANTE(nom_imageRV,c_VERTE,Image_VERTE);
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               Test(IL_FAUT(generer_la_composante_BLEUE))
                    Bblock
                    GENERATION_D_UNE_COMPOSANTE(nom_imageRB,c_BLEUE,Image_BLEUE);
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     RETU_Commande;
     Eblock
ECommande



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