/*************************************************************************************************************************************/
/* */
/* V I S U A L I S A T I O N D E C I N Q C H A M P S S C A L A I R E S S I M U L T A N E M E N T : */
/* */
/* */
/* Author of '$xrv/champs_5.10$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1992??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA1
@define PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA2
@define PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA3
@define PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA4
@define PRAGMA_CPP_____POUR_LES_Iload_NE_PAS_VERIFIER_LES_MULTIPLES_UTILISATIONS_DE_L_IMAGE_____ImageA5
/* Introduit le 20060124092235. */
@define PRAGMA_CL_____MODULE_NON_OPTIMISABLE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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
/* Introduit le 20111019181829... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E B A S E E T U N I V E R S E L L E S : */
/* */
/*************************************************************************************************************************************/
#include xrv/dimensionnement.01.vv.I"
/* Introduit le 20111209173601... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E L A C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
#define __VERSION__GENERATION_D_UN_NUCLEON \
/* Et oui, car on veut faire croire que l'on est dans '$xrq/nucleon.L0$K'... */
#include xrq/nucleon.L1.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S C O N S T A N T E S U N I V E R S E L L E S : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.L2.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D U T E M P S : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.L3.I"
#include xrv/particule.41.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 3 */
/* D E F I N I T I O N D E L ' E S P A C E P H Y S I Q U E D A N S R ( D E B U T ) : */
/* */
/*************************************************************************************************************************************/
#define Xcentre_ESPACE \
FLOT(k___Xmin)
#define Ycentre_ESPACE \
FLOT(k___Ymin)
#define Zcentre_ESPACE \
FLOT(k___Zmin)
/* Definition de l'origine (ou "centre") de l'espace physique. En fait, elles ne servent */
/* qu'a recentrer l'objet lors de la visualisation, et d'autre part, elles doivent */
/* etre des constantes absolues a cause de : */
/* */
/* DEFINITION_D_UNE_POSITION(position_indefinie,Xcentre_ESPACE,...); \ */
/* */
/* dans '$xrq/nucleon.L5$I'. */
#define Xtranslation \
MOIT(dimX)
#define Ytranslation \
MOIT(dimY)
#define Ztranslation \
MOIT(dimZ)
/* Definition des demi-longueurs des trois axes. */
#define hXmin_ESPACE \
SOUS(Xmin,Xtranslation)
#define hYmin_ESPACE \
SOUS(Ymin,Ytranslation)
#define hZmin_ESPACE \
SOUS(Zmin,Ztranslation)
/* Definition du "coin" inferieur-gauche-arriere de l'espace physique. */
#define hXmax_ESPACE \
ADD2(Xmin,Xtranslation)
#define hYmax_ESPACE \
ADD2(Ymin,Ytranslation)
#define hZmax_ESPACE \
ADD2(Zmin,Ztranslation)
/* Definition du "coin" superieur-droite-avant de l'espace physique. */
#include xrk/attractor.12.I"
#include xrk/attractor.1D.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S D I F F E R E N T S E S P A C E S : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.L4.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E S T I O N D E L A B R U M E E V E N T U E L L E : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.16.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.14.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P O U R S E S I M P L I F I E R L A V I E : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.L5.I"
#include xrq/nucleon.L6.I"
#include xrq/nucleon.LB.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A N T I - A L I A S I N G : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.LP.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E L A S O U R C E L U M I N E U S E : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.LQ.I"
#include xrv/champs_5.21.I"
/* Pour corriger les initialisations precedentes. ATTENTION, a cause de la derivation */
/* formelle d'ordre superieur a 1, ces 'undef's ne peuvent etre que dans un fichier */
/* d'include... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S F O N D U S : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.LR.2.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E L A G E S T I O N D U " D E P T H - C U E I N G " : */
/* */
/*************************************************************************************************************************************/
#define AJUSTER_AUTOMATIQUEMENT_PROFONDEUR_MINIMALE_ET_PROFONDEUR_MAXIMALE \
VRAI \
/* Afin d'ajuster automatiquement lex extrema de la troisieme coordonnee... */
#define PROFONDEUR_MINIMALE_DE_TRONCATION \
GRO2(FRA4(COORDONNEE_BARYCENTRIQUE_MAXIMALE)) \
/* Afin de ne pas avoir trop de depth-cueing... */
#include xrq/nucleon.Ld.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E L A G E S T I O N D U Z O O M : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.Le.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E L A V I S U A L I S A T I O N D ' U N E S P H E R E : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.1C.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S T R A N S L A T I O N S E T R O T A T I O N S : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.LT.2.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E S T I O N D E S C O U L E U R S : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.15.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E S T I O N D E L A L I S T E D E S P O I N T S D E S T I N E E A F A I R E U N T R I */
/* S U R L A C O O R D O N N E E ' Z ' D ' A R R I E R E E N A V A N T P O U R L U T T E R */
/* E F F I C A C E M E N T C O N T R E L ' A L I A S I N G : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.11.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N T I O N D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#define ImageA_Z____ \
ImageA1
#define IFmageA_Z____ \
IFmageA1
#define ImageA_RAYON \
ImageA2
#define IFmageA_RAYON \
IFmageA2
#define ImageA_ROUGE \
ImageA3
#define IFmageA_ROUGE \
IFmageA3
#define ImageA_VERTE \
ImageA4
#define IFmageA_VERTE \
IFmageA4
#define ImageA_BLEUE \
ImageA5
#define IFmageA_BLEUE \
IFmageA5
/* Definitions introduites le 20111019172810... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S M O D E S D E R E P R E S E N T A T I O N D E S C H A M P S : */
/* */
/*************************************************************************************************************************************/
#define PAS_HORIZONTAL \
GRO8(PasX)
#define PAS_VERTICAL \
GRO8(PasY)
DEFV(Local,DEFV(Int,INIT(pas_horizontal,PAS_HORIZONTAL)));
DEFV(Local,DEFV(Int,INIT(pas_vertical,PAS_VERTICAL)));
/* Pas de sous-echantillonnage des champs (introduit ici sous forme de 'Int's le */
/* 20111019191648). */
#define DIMENSION_DE_LA_MAILLE_X \
UN
#define DIMENSION_DE_LA_MAILLE_Y \
UN
DEFV(Local,DEFV(Int,INIT(dimension_de_la_maille_X,DIMENSION_DE_LA_MAILLE_X)));
DEFV(Local,DEFV(Int,INIT(dimension_de_la_maille_Y,DIMENSION_DE_LA_MAILLE_Y)));
#define TRANSLATION_DE_LA_MAILLE_X \
ZERO
#define TRANSLATION_DE_LA_MAILLE_Y \
ZERO
DEFV(Local,DEFV(Int,INIT(translation_de_la_maille_X,TRANSLATION_DE_LA_MAILLE_X)));
DEFV(Local,DEFV(Int,INIT(translation_de_la_maille_Y,TRANSLATION_DE_LA_MAILLE_Y)));
/* Introduits le 20111020075526 afin de pouvoir mailler la surface... */
#define CHAMP_X(x,y) \
FLOT(SOUS(COXR(x),Xtranslation)) \
/* Definition de la coordonnee 'X'. */
#define CHAMP_Y(x,y) \
FLOT(SOUS(COYR(y),Ytranslation)) \
/* Definition de la coordonnee 'Y'. */
DEFV(Local,DEFV(Logical,INIT(denormaliser_les_Zs_non_standards,VRAI)));
/* Introduit le 20111020094530 afin de savoir s'il faut denormaliser ou pas les 'Z's */
/* non standards... */
#define FACTEUR_DU_Z \
FU
DEFV(Local,DEFV(Float,INIT(facteur_du_Z,FACTEUR_DU_Z)));
/* Facteur permettant de "scaler" la troisieme dimension... */
#define CHAMP_Z(x,y) \
MUL2(facteur_du_Z \
,COND(EST_VRAI(les_images_sont_standards) \
,FLOT(SOUS(COZR(_cDENORMALISE_OZ(______NORMALISE_NIVEAU(load_point(ImageA_Z____,x,y)))),Ztranslation)) \
,COND(IL_FAUT(denormaliser_les_Zs_non_standards) \
,SOUS(_cDENORMALISE_OZ(loadF_point(IFmageA_Z____,x,y)),Ztranslation) \
,SOUS(loadF_point(IFmageA_Z____,x,y),_____lNORMALISE_OZ(Ztranslation)) \
) \
) \
) \
/* Definition de la coordonnee 'Z'. */
#include xrv/champs_5.1B.I"
#define RAYON_DE_VISUALISATION \
FLOT(TRENTE_DEUX) \
/* Introduit le 20060311095953 a cause de 'v $xrv/champs_5.1A$I PROKESS_ARGUMENT_F' qui */ \
/* en a besoin depuis le 20060224121036... */
#define FACTEUR_DU_RAYON_DE_VISUALISATION \
DIVI(RAYON_DE_VISUALISATION,FU)
DEFV(Local,DEFV(Float,INIT(facteur_du_rayon_de_visualisation,FACTEUR_DU_RAYON_DE_VISUALISATION)));
/* Facteur permettant de "scaler" le rayon des spheres. Il donne aussi le rayon maximal des */
/* spheres de visualisation... */
#define CHAMP_RAYON(x,y) \
RAYON_DES_SPHERES_REPRESENTATIVES(facteur_du_rayon_de_visualisation \
,COND(EST_VRAI(les_images_sont_standards) \
,______NORMALISE_NIVEAU(load_point(ImageA_RAYON,x,y)) \
,loadF_point(IFmageA_RAYON,x,y) \
) \
) \
/* Definition du rayon des spheres. */
DEFV(Local,DEFV(Logical,INIT(normaliser_les_niveaux_non_standards,VRAI)));
/* Introduit le 20111020093809 afin de savoir s'il faut renormaliser ou pas les niveaux */
/* non standards... */
#include xrv/champs_5.1D.I"
/* Introduit le 20111020095504 a cause de la presence de 'OPC1(...)' dans la definition */
/* de 'CHAMP_ROUGE(..)', 'CHAMP_VERTE(..)' et 'CHAMP_BLEUE(..)'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N D E M E M O R I S A T I O N D U P O I N T C O U R A N T : */
/* */
/*************************************************************************************************************************************/
#include xrk/attractor.24.I"
#include xrv/champs_5.26.I"
BFonctionI
DEFV(Local,DEFV(FonctionI,memorisation_1_point_02(X,Y)))
DEFV(Argument,DEFV(Int,X));
DEFV(Argument,DEFV(Int,Y));
/* Definition de la position {x,y} du point courant dans les coordonnees des champs. */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
#include xrk/attractor.15.I"
/* Donnees utiles... */
INIT_ERROR;
/*..............................................................................................................................*/
MEMORISATION_DU_POINT_COURANT_COMPLET(CHAMP_X(X,Y),CHAMP_Y(X,Y),CHAMP_Z(X,Y)
,CHAMP_RAYON(X,Y)
,CHAMP_ROUGE(X,Y),CHAMP_VERTE(X,Y),CHAMP_BLEUE(X,Y)
);
/* Memorisation du point courant , mais uniquement s'il est visible en fonction des */
/* conditions de visualisation... */
RETU_ERROR;
Eblock
EFonctionI
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N D E V I S U A L I S A T I O N D U P O I N T C O U R A N T : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.12.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E S T I O N D E L A V I S U A L I S A T I O N S T E R E O S C O P I Q U E : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.13.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E L ' I N T E R P O L A T I O N D E S P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.LX.2.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S I N I T I A L I S A T I O N S : */
/* */
/*************************************************************************************************************************************/
#include xrv/champs_5.17.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D U S E U I L L A G E : */
/* */
/*************************************************************************************************************************************/
#define LE_SEUILLAGE_EST_ALEATOIRE \
FAUX \
/* Le seuillage est-il aleatoire ('VRAI') ou deterministe ('FAUX') et lie donc aux */ \
/* parametres 'SEUIL_DE_MASQUAGE_INFERIEUR' et 'SEUIL_DE_MASQUAGE_SUPERIEUR'. */
#define GRAINE \
DEUX \
/* Graine initiale. */
#define FACTEUR_DES_NIVEAUX \
FU \
/* Seuil implicite de generation des points. */
#define SEUIL_DE_MASQUAGE_INFERIEUR \
FLOT__NOIR \
/* Seuil de masquage en-deca duquel les points des images 'nom_imageA_Z____' sont ignores. */
#define SEUIL_DE_MASQUAGE_SUPERIEUR \
FLOT__BLANC \
/* Seuil de masquage au-dela duquel les points des images 'nom_imageA_Z____' sont ignores. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A C C E S A U X I M A G E S : */
/* */
/*************************************************************************************************************************************/
#define SEQUENCES_EVOLUTIVES \
FAUX
DEFV(Local,DEFV(Logical,INIT(sequences_evolutives,SEQUENCES_EVOLUTIVES)));
/* Indicateur precisant si les images 'RAYON', 'ROUGE', 'VERTE' et 'BLEUE' evoluent au */
/* au cours du temps ('VRAI') ou restent "constantes" ('FAUX')... */
#define ACCES_AUX_IMAGES(image,imageF,nom_d_image,charger_une_sequence_evolutive,numero_d_image) \
/* L'argument 'imageF' a ete introduit le 20111019172810... */ \
Bblock \
Test(IFNE_chaine(nom_d_image,NOM_PIPE_Local)) \
/* ATTENTION, jusqu'au 1994120700 il y avait ici : */ \
/* */ \
/* Test(IFNE_chaine(nom_d_image,NOM_PIPE)) */ \
/* */ \
/* ce qui semble faux... */ \
Bblock \
Test(IL_NE_FAUT_PAS(sequences_evolutives)) \
Bblock \
CALi(gIload_image(les_images_sont_standards,image,imageF,nom_d_image)); \
/* Chargement d'une image non numerotee... */ \
Eblock \
ATes \
Bblock \
Test(IL_FAUT(charger_une_sequence_evolutive)) \
Bblock \
DEFV(CHAR,INIT(POINTERc(nom_image),NOM_UNDEF)); \
EGAL(nom_image \
,chain_Aconcaten2_sauf_nom_pipe(nom_d_image \
,chain_numero_modulo(NUMERO_D_IMAGE(numero_d_image) \
,nombre_de_chiffres \
) \
) \
); \
/* Le 20221212121023, 'chain_numero_modulo(...)' a remplace 'chain_numero(...)'... */ \
\
CALi(Iload_image(image,nom_image)); \
/* Chargement d'une image numerotee... */ \
CALZ_FreCC(nom_image); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Acces a une image lorsque cela est necessaire... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N U M E R O T A G E D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#define NUMERO_D_IMAGE(numero_d_image) \
numero_d_image \
/* Fonction de calcul du numero de l'image courante... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* V I S U A L I S A T I O N D E C I N Q C H A M P S S C A L A I R E S S I M U L T A N E M E N T : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIT(POINTERc(nom_imageA_Z____),NOM_PIPE_Local));
DEFV(CHAR,INIT(POINTERc(nom_imageA_RAYON),NOM_PIPE_Local));
DEFV(CHAR,INIT(POINTERc(nom_imageA_ROUGE),NOM_PIPE_Local));
DEFV(CHAR,INIT(POINTERc(nom_imageA_VERTE),NOM_PIPE_Local));
DEFV(CHAR,INIT(POINTERc(nom_imageA_BLEUE),NOM_PIPE_Local));
/* Nom des cinq champs a visualiser. */
DEFV(Logical,INIT(le_seuillage_est_aleatoire,LE_SEUILLAGE_EST_ALEATOIRE));
/* Le seuillage est-il aleatoire ('VRAI') ou deterministe ('FAUX') et lie donc aux */
/* parametres 'SEUIL_DE_MASQUAGE_INFERIEUR' et 'SEUIL_DE_MASQUAGE_SUPERIEUR'. */
DEFV(Int,INIT(graine,GRAINE));
/* Graine du generateur aleatoire... */
DEFV(Float,INIT(facteur_des_niveaux,FACTEUR_DES_NIVEAUX));
/* Pour calculer le seuil de generation aleatoire a partir d'un niveau. */
DEFV(Float,INIT(borne_inferieure,PROBABILITE_NULLE));
/* Borne inferieure du generateur, */
DEFV(Float,INIT(borne_superieure,PROBABILITE_UNITE));
/* Borne superieure du generateur. */
DEFV(pointI_2D,point_courant);
/* Point (entier) courant. */
DEFV(genere_Float,INIT(seuil_de_masquage_inferieur,SEUIL_DE_MASQUAGE_INFERIEUR));
/* Seuil de masquage en-deca duquel les points des images 'nom_imageA_Z____' sont ignores. */
DEFV(genere_Float,INIT(seuil_de_masquage_superieur,SEUIL_DE_MASQUAGE_SUPERIEUR));
/* Seuil de masquage au-dela duquel les points des images 'nom_imageA_Z____' sont ignores. */
/*..............................................................................................................................*/
INITIALISATIONS_GENERALES;
/* Initialisations generales faites au tout debut... */
#include xrv/champs_5.1A.I"
GET_ARGUMENTSv(nombre_d_arguments
,BLOC(PROCESS_ARGUMENTS_GEOMETRIQUES;
GET_ARGUMENT_L("evolution=",sequences_evolutives);
GET_ARGUMENT_C("cZ=",nom_imageA_Z____);
GET_ARGUMENT_C("cRAYON=",nom_imageA_RAYON);
GET_ARGUMENT_C("cROUGE=",nom_imageA_ROUGE);
GET_ARGUMENT_C("cVERTE=",nom_imageA_VERTE);
GET_ARGUMENT_C("cBLEUE=",nom_imageA_BLEUE);
GET_ARGUMENT_L("standard=",les_images_sont_standards);
/* Argument introduit le 20111019172810... */
PROCESS_ARGUMENTS_DE_VISUALISATION_PRIMAIRES;
GET_ARGUMENT_L("aleatoire=",le_seuillage_est_aleatoire);
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_F("facteurN=",facteur_des_niveaux);
GET_ARGUMENT_F("seuilI=""seuil=""masqueI=""masque=",seuil_de_masquage_inferieur);
GET_ARGUMENT_F("seuilS=""masqueS=",seuil_de_masquage_superieur);
/* Les seuils sont passes de 'GET_ARGUMENT_P(...)' a 'GET_ARGUMENT_F(...)' le */
/* 20111019174620... */
GET_ARGUMENT_F("facteurZ=",facteur_du_Z);
GET_ARGUMENT_I("pas_horizontal=""pash=",pas_horizontal);
GET_ARGUMENT_I("pas_vertical=""pasv=",pas_vertical);
/* Arguments introduits le 20111019183320... */
GET_ARGUMENT_I("dimension_maille_X=""dmX=",dimension_de_la_maille_X);
GET_ARGUMENT_I("dimension_maille_Y=""dmY=",dimension_de_la_maille_Y);
GET_ARGUMENT_I("translation_maille_X=""tmX=",translation_de_la_maille_X);
GET_ARGUMENT_I("translation_maille_Y=""tmY=",translation_de_la_maille_Y);
/* Arguments introduits le 20111020075526... */
PROCESS_ARGUMENTS_DE_DEFINITION_DU_RAYON_DES_SPHERES_REPRESENTATIVES;
GET_ARGUMENT_F("facteurR=",facteur_du_rayon_de_visualisation);
GET_ARGUMENT_L("denormaliser_Z_non_standards=""dZ=",denormaliser_les_Zs_non_standards);
/* Argument introduit le 20111020094530... */
GET_ARGUMENT_L("normaliser_niveaux_non_standards=""nn=",normaliser_les_niveaux_non_standards);
/* Argument introduit le 20111020093809... */
)
);
SET_ECHANTILLONNAGE(pas_horizontal,pas_vertical);
/* Introduit le 20111019190915... */
#include xrv/champs_5.19.I"
/* Pour eviter le message : */
/* */
/* Static function is not referenced. */
/* */
/* sur 'SYSTEME_ES9000_AIX_CC'... */
Test(IFGT(nombre_de_periodes_de_la_simulation,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION))
Bblock
PRINT_ERREUR("la simulation demandee est trop longue");
EGAL(nombre_de_periodes_de_la_simulation,NOMBRE_MAXIMAL_DE_PERIODES_DE_LA_SIMULATION);
/* Et on seuille le nombre de periodes... */
Eblock
ATes
Bblock
Eblock
ETes
DEFINITION_DE_L_ESPACE_PHYSIQUE;
/* Initialisation de la definition de l'espace physique apres que les dimensions des images */
/* aient ete definies... */
Test(EST_VRAI(le_seuillage_est_aleatoire))
Bblock
INITIALISATION_POINT_2D(point_courant,Xmin,Ymin);
CALS(rdnI2D(ADRESSE(point_courant),UNDEF,RDN_INIT,borne_inferieure,borne_superieure));
/* Initialisation du generateur aleatoire. */
Eblock
ATes
Bblock
Eblock
ETes
CALi(gIIinitialisation(les_images_sont_standards,ImageA_Z____,IFmageA_Z____,BLANC,FU));
CALi(gIIinitialisation(les_images_sont_standards,ImageA_RAYON,IFmageA_RAYON,BLANC,FU));
CALi(gIIinitialisation(les_images_sont_standards,ImageA_ROUGE,IFmageA_ROUGE,BLANC,FLOT__BLANC));
CALi(gIIinitialisation(les_images_sont_standards,ImageA_VERTE,IFmageA_VERTE,BLANC,FLOT__BLANC));
CALi(gIIinitialisation(les_images_sont_standards,ImageA_BLEUE,IFmageA_BLEUE,BLANC,FLOT__BLANC));
/* Ainsi, si l'un des champs n'est pas defini, il fournira une contribution maximale... */
ACCES_AUX_IMAGES(ImageA_Z____,IFmageA_Z____,nom_imageA_Z____,FAUX,UNDEF);
ACCES_AUX_IMAGES(ImageA_RAYON,IFmageA_RAYON,nom_imageA_RAYON,FAUX,UNDEF);
ACCES_AUX_IMAGES(ImageA_ROUGE,IFmageA_ROUGE,nom_imageA_ROUGE,FAUX,UNDEF);
ACCES_AUX_IMAGES(ImageA_VERTE,IFmageA_VERTE,nom_imageA_VERTE,FAUX,UNDEF);
ACCES_AUX_IMAGES(ImageA_BLEUE,IFmageA_BLEUE,nom_imageA_BLEUE,FAUX,UNDEF);
/* Acces aux images non evolutives... */
Komp(numero_de_la_periode_courante_de_la_simulation,nombre_de_periodes_de_la_simulation)
Bblock
ACCES_AUX_IMAGES(ImageA_Z____,IFmageA_Z____,nom_imageA_Z____,VRAI,numero_de_la_periode_courante_de_la_simulation);
ACCES_AUX_IMAGES(ImageA_RAYON,IFmageA_RAYON,nom_imageA_RAYON,VRAI,numero_de_la_periode_courante_de_la_simulation);
ACCES_AUX_IMAGES(ImageA_ROUGE,IFmageA_ROUGE,nom_imageA_ROUGE,VRAI,numero_de_la_periode_courante_de_la_simulation);
ACCES_AUX_IMAGES(ImageA_VERTE,IFmageA_VERTE,nom_imageA_VERTE,VRAI,numero_de_la_periode_courante_de_la_simulation);
ACCES_AUX_IMAGES(ImageA_BLEUE,IFmageA_BLEUE,nom_imageA_BLEUE,VRAI,numero_de_la_periode_courante_de_la_simulation);
/* Acces aux images evolutives... */
PUSH_ECHANTILLONNAGE;
SET_ECHANTILLONNAGE(PasX,PasY);
INITIALISATIONS_RELATIVES_A_CHAQUE_NOUVELLE_IMAGE(numero_de_la_periode_courante);
/* Initialisations necessaires avant le calcul et la generation de chaque nouvelle image. */
PULL_ECHANTILLONNAGE;
begin_image
Bblock
Test(IFOU(DIVISIBLE(ADD2(X,translation_de_la_maille_X),dimension_de_la_maille_X)
,DIVISIBLE(ADD2(Y,translation_de_la_maille_Y),dimension_de_la_maille_Y)
)
)
/* Test introduit le 20111020075526 afin de pouvoir mailler la surface... */
Bblock
Test(EST_VRAI(le_seuillage_est_aleatoire))
Bblock
INITIALISATION_POINT_2D(point_courant,X,Y);
Eblock
ATes
Bblock
Eblock
ETes
Test(IFOU(IFET(EST_VRAI(le_seuillage_est_aleatoire)
,IFLE(rdnI2D(ADRESSE(point_courant)
,graine
,RDN_GENERE
,FLOT__ARGUMENT_ABSENT,FLOT__ARGUMENT_ABSENT
)
,MUL2(facteur_des_niveaux
,COND(EST_VRAI(les_images_sont_standards)
,______NORMALISE_NIVEAU(load_point(ImageA_Z____,X,Y))
,loadF_point(IFmageA_Z____,X,Y)
)
)
)
)
,IFET(EST_FAUX(le_seuillage_est_aleatoire)
,IFOU(IFET(EST_VRAI(les_images_sont_standards)
,IFINff(load_point(ImageA_Z____,X,Y)
,GENP(seuil_de_masquage_inferieur)
,GENP(seuil_de_masquage_superieur)
)
)
,IFET(EST_FAUX(les_images_sont_standards)
,IFINff(loadF_point(IFmageA_Z____,X,Y)
,seuil_de_masquage_inferieur
,seuil_de_masquage_superieur
)
)
)
)
)
)
Bblock
CALi(memorisation_1_point_02(X,Y));
/* Memorisation du point courant apres toutes les transformations geometriques, et selon */
/* les coordonnees de visualisation, mais uniquement s'il est dans la plage definie par */
/* les seuils de masquage... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
end_image
PUSH_ECHANTILLONNAGE;
SET_ECHANTILLONNAGE(PasX,PasY);
CALCUL_DU_PSEUDO_CENTRE_DE_GRAVITE_ET_TRI_D_UNE_LISTE_DE_POINTS;
/* Tri eventuel de la liste des points par 'Z' croissants, avec retour prealable sur le */
/* dernier point memorise dans la liste... */
VISUALISATION_D_UNE_LISTE_DE_POINTS(numero_de_la_periode_courante);
/* Visualisation de la liste des points (eventuellement triees). */
GENERATION_DE_L_EVENTUEL_EFFET_DE_BRUME;
/* Generation de l'eventuel effet de brume... */
PULL_ECHANTILLONNAGE;
GENERATION_D_UNE_IMAGE(numero_de_la_periode_courante);
/* Memorisation de l'image courante. */
INCR(numero_de_la_periode_courante,I);
/* Et passage a l'image suivante... */
Eblock
EKom
RETU_Commande;
Eblock
ECommande