/*************************************************************************************************************************************/
/* */
/* D I S P E R S I O N D ' U N E I M A G E F L O T T A N T E : */
/* */
/* */
/* Author of '$xci/disperse.01$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1997??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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_IMAGESF_EXT
#include image_image_ALEATOIRES_1_EXT
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define INITIALISER_imageR_avec_imageA \
FAUX \
/* Indique s'il faut initialiser 'imageR' avec 'imageA' ('VRAI') ou bien mettre a 'NOIR' */ \
/* 'imageR' ('FAUX'). */
#define GRAINE \
DEUX \
/* Graine du generateur aleatoire. */
#define NOMBRE_DE_POINTS_DU_NUAGE \
EXP2(DOUP(TROIS)) \
/* Nombre de points du nuage a generer. */
#define DISPERSION_INFERIEURE_DES_X \
NEGA(DEUX)
#define DISPERSION_SUPERIEURE_DES_X \
NEUT(DEUX)
/* Definition de la dispersion des coordonees 'X'. */
#define DISPERSION_INFERIEURE_DES_Y \
NEGA(DEUX)
#define DISPERSION_SUPERIEURE_DES_Y \
NEUT(DEUX)
/* Definition de la dispersion des coordonees 'Y'. */
#define DISPERSION_INFERIEURE_DES_NIVEAUX \
FLOT(NEGA(SEIZE))
#define DISPERSION_SUPERIEURE_DES_NIVEAUX \
FLOT(NEUT(SEIZE))
/* Definition de la dispersion des niveaux. */
#define PRENDRE_LE_MAXIMUM \
FAUX \
/* Indique s'il faut prendre le maximum entre la valeur courante et la valeur anterieure */ \
/* ('VRAI') ou proceder a un cumul arithmetique ('FAUX'). */
#define UTILISER_LE_MODE_BACK \
FAUX \
/* Indique s'il faut utiliser le mode {begin_image,end_image} ('FAUX') ou bien le mode */ \
/* {begin_image_back,end_image_back} ('VRAI'). Ceci a ete introduit le 20170402100844 afin */ \
/* de tester 'PROGRESSION_DES_BEGIN_END' dans le cas {begin_image_back,end_image_back}... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I S P E R S I O N D ' U N E I M A G E F L O T T A N T E : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
DEFV(Logical,INIT(initialiser_imageR_avec_imageA,INITIALISER_imageR_avec_imageA));
/* Indique s'il faut initialiser 'imageR' avec 'imageA' ('VRAI') ou bien mettre a 'NOIR' */
/* 'imageR' ('FAUX'). */
DEFV(Int,INIT(graine,GRAINE));
/* Graine du generateur aleatoire. */
DEFV(Int,INIT(nombre_de_points_du_nuage,NOMBRE_DE_POINTS_DU_NUAGE));
/* Nombre de points du nuage a generer. */
DEFV(Int,INIT(dispersion_inferieure_des_X,DISPERSION_INFERIEURE_DES_X));
DEFV(Int,INIT(dispersion_superieure_des_X,DISPERSION_SUPERIEURE_DES_X));
/* Definition de la dispersion des coordonees 'X'. */
DEFV(Int,INIT(dispersion_inferieure_des_Y,DISPERSION_INFERIEURE_DES_Y));
DEFV(Int,INIT(dispersion_superieure_des_Y,DISPERSION_SUPERIEURE_DES_Y));
/* Definition de la dispersion des coordonees 'Y'. */
DEFV(Float,INIT(dispersion_inferieure_des_niveaux,DISPERSION_INFERIEURE_DES_NIVEAUX));
DEFV(Float,INIT(dispersion_superieure_des_niveaux,DISPERSION_SUPERIEURE_DES_NIVEAUX));
/* Definition de la dispersion des niveaux. */
/* */
/* Le 20100423100708 la dispersion des niveaux est passee de 'Int' a 'Float' plus logique */
/* puisque les images sont de type 'imageF'... */
DEFV(Logical,INIT(prendre_le_maximum,PRENDRE_LE_MAXIMUM));
/* Indique s'il faut prendre le maximum entre la valeur courante et la valeur anterieure */
/* ('VRAI') ou proceder a un cumul arithmetique ('FAUX'). */
DEFV(Logical,INIT(utiliser_le_mode_back,UTILISER_LE_MODE_BACK));
/* Indique s'il faut utiliser le mode {begin_image,end_image} ('FAUX') ou bien le mode */
/* {begin_image_back,end_image_back} ('VRAI'). Ceci a ete introduit le 20170402100844 afin */
/* de tester 'PROGRESSION_DES_BEGIN_END' dans le cas {begin_image_back,end_image_back}... */
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_L("initialiser=",initialiser_imageR_avec_imageA);
GET_ARGUMENT_I("graine=",graine);
GET_ARGUMENT_L("affiner_rdn=",rdnIFnD_____affiner_la_generation);
GET_ARGUMENT_L("iterer_rdn=",rdnIFnD_____iterer_la_generation);
GET_ARGUMENT_I("points=",nombre_de_points_du_nuage);
GET_ARGUMENT_I("dix=""diX=",dispersion_inferieure_des_X);
GET_ARGUMENT_I("dsx=""dsX=",dispersion_superieure_des_X);
GET_ARGUMENT_I("diy=""diY=",dispersion_inferieure_des_Y);
GET_ARGUMENT_I("dsy=""dsY=",dispersion_superieure_des_Y);
GET_ARGUMENT_F("din=""diN=",dispersion_inferieure_des_niveaux);
GET_ARGUMENT_F("dsn=""dsN=",dispersion_superieure_des_niveaux);
GET_ARGUMENT_L("maximum=",prendre_le_maximum);
GET_ARGUMENT_L("mode_back=""back=",utiliser_le_mode_back);
/* Arguments introduits le 20170402100844... */
)
);
Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA,nom_imageA))))
Bblock
Test(IL_FAUT(initialiser_imageR_avec_imageA))
Bblock
CALi(IFmove(IFmageR,IFmageA));
/* Initialisation de l'image Resultat avec l'image Argument. */
Eblock
ATes
Bblock
CALi(IFinitialisation(IFmageR,FZERO));
/* Initialisation de l'image Resultat a 'NOIR'. */
Eblock
ETes
Test(IL_NE_FAUT_PAS(utiliser_le_mode_back))
Bblock
CALS(IFdispersion_aleatoire(IFmageR,IFmageA
,graine
,nombre_de_points_du_nuage
,dispersion_inferieure_des_X,dispersion_superieure_des_X
,dispersion_inferieure_des_Y,dispersion_superieure_des_Y
,dispersion_inferieure_des_niveaux,dispersion_superieure_des_niveaux
,prendre_le_maximum
)
);
/* Et dispersion... */
Eblock
ATes
Bblock
CALS(IFdispersion_aleatoire_back(IFmageR,IFmageA
,graine
,nombre_de_points_du_nuage
,dispersion_inferieure_des_X,dispersion_superieure_des_X
,dispersion_inferieure_des_Y,dispersion_superieure_des_Y
,dispersion_inferieure_des_niveaux,dispersion_superieure_des_niveaux
,prendre_le_maximum
)
);
/* Et dispersion en mode "back" (introduite le 20170402100844...). */
Eblock
ETes
CALi(IupdateF_image(nom_imageR,IFmageR));
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
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.