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