_______________________________________________________________________________________________________________________________________
/*************************************************************************************************************************************/
/* */
/* R E S E R V A T I O N D E S I M A G E S E N M E M O I R E : */
/* */
/* */
/* Definitions des termes utilises : */
/* */
/* On utilisera en general trois images, appelees */
/* "imageA1", "imageA2" et "imageR" (le "A" signifiant */
/* 'Argument' et le "R", 'Resultat') ; en effet, les */
/* operations effectuees seront du type : */
/* */
/* imageR <-- (imageA1).OP.(imageA2) */
/* */
/* ou '.OP.' designe un operateur. */
/* */
/* On appelera image "standard", une image dont */
/* les pixels sont generes par "genere_p" via "image", */
/* et image "CHAR"/"Int"/"Float" une image dont les */
/* pixels sont generes par "CHAR"/"Int"/"Float" */
/* via "imageC"/"imageI"/"imageF". */
/* */
/* Rangement en memoire : */
/* */
/* Les images image(X,Y) sont rangees sequentiellement */
/* dans la memoire de la facon suivante image[Y][X] : c'est la */
/* coordonnee "X" qui varie la plus vite ; on trouve donc */
/* ainsi dans l'ordre les points {X,Y} : */
/* */
/* (0,0),(1,0),(2,0),... */
/* (0,1),(1,1),(2,1),... */
/* (0,2),(1,2),(2,2),... */
/* . */
/* . */
/* . */
/* */
/* Ainsi, lors de la sortie d'images sur bande, */
/* elles sont pretes a etre visualisees sur un */
/* support raster ligne a ligne... */
/* */
/* */
/* Author of '$xiii/Images$STR' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 19870000000000). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E S " B U G S " P R E S E N T S : */
/* */
/*************************************************************************************************************************************/
#ifdef BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_ZONE_DE_SWAP_1 /* Common,DEFV(Fonction,) : bug... */
DEFV(Common,DEFV(Logical,_____BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_ZONE_DE_SWAP_1));
#Aifdef BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_ZONE_DE_SWAP_1 /* Common,DEFV(Fonction,) : bug... */
#Eifdef BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_ZONE_DE_SWAP_1 /* Common,DEFV(Fonction,) : bug... */
#ifdef BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_LIMIT_MEMORY_1 /* Common,DEFV(Fonction,) : bug... */
DEFV(Common,DEFV(Logical,_____BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_LIMIT_MEMORY_1));
#Aifdef BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_LIMIT_MEMORY_1 /* Common,DEFV(Fonction,) : bug... */
#Eifdef BUG_SYSTEME_NWS3000_NEWSOS_LACT23_EDFR11_HOME11_LIMIT_MEMORY_1 /* Common,DEFV(Fonction,) : bug... */
#ifdef BUG_SYSTEME_C_complexite_01 /* Common,DEFV(Fonction,) : bug... */
DEFV(Common,DEFV(Logical,_____BUG_SYSTEME_C_complexite_01));
/* ATTENTION : le 20061124142825 '_____BUG_SYSTEME_C_complexite_01' a ete installe ici */
/* depuis 'v $xiipd/fonction.1$FON 20061124142825' car, en effet, ce dernier fichier */
/* ('v $xiipd/fonction.1$FON') n'est pas compile (au passage le directory '$xbipd' */
/* n'existe pas...). */
#Aifdef BUG_SYSTEME_C_complexite_01 /* Common,DEFV(Fonction,) : bug... */
#Eifdef BUG_SYSTEME_C_complexite_01 /* Common,DEFV(Fonction,) : bug... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* R E S E R V A T I O N D E S I M A G E S " S T A N D A R D S " E N F A U S S E S C O U L E U R S : */
/* */
/*************************************************************************************************************************************/
#ifndef NE_PAS_GENERER_ImageA /* Common : la generation de 'ImageA' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,ImageA)));
/* Definition de l'image Argument unique. */
#Aifndef NE_PAS_GENERER_ImageA /* Common : la generation de 'ImageA' est facultative... */
#Eifndef NE_PAS_GENERER_ImageA /* Common : la generation de 'ImageA' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
#ifndef NE_PAS_GENERER_ImageA1 /* Common : la generation de 'ImageA1' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,ImageA1)));
/* Definition de la premiere image Argument, */
#Aifndef NE_PAS_GENERER_ImageA1 /* Common : la generation de 'ImageA1' est facultative... */
#Eifndef NE_PAS_GENERER_ImageA1 /* Common : la generation de 'ImageA1' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
#ifndef NE_PAS_GENERER_ImageA2 /* Common : la generation de 'ImageA2' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,ImageA2)));
/* Definition de la deuxieme image Argument. */
#Aifndef NE_PAS_GENERER_ImageA2 /* Common : la generation de 'ImageA2' est facultative... */
#Eifndef NE_PAS_GENERER_ImageA2 /* Common : la generation de 'ImageA2' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
#ifndef NE_PAS_GENERER_ImageR /* Common : la generation de 'ImageR' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,ImageR)));
/* Definition de l'image Resultat unique. */
#Aifndef NE_PAS_GENERER_ImageR /* Common : la generation de 'ImageR' est facultative... */
#Eifndef NE_PAS_GENERER_ImageR /* Common : la generation de 'ImageR' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
#ifndef NE_PAS_GENERER_ImageG /* Common : la generation de 'ImageG' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,ImageG)));
/* Definition de l'image Graphique. */
#Aifndef NE_PAS_GENERER_ImageG /* Common : la generation de 'ImageG' est facultative... */
#Eifndef NE_PAS_GENERER_ImageG /* Common : la generation de 'ImageG' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* R E S E R V A T I O N D E S I M A G E S " S T A N D A R D S " E N V R A I E S C O U L E U R S : */
/* */
/*************************************************************************************************************************************/
#ifndef NE_PAS_GENERER_Image_ROUGE /* Common : la generation de 'Image_ROUGE' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,Image_ROUGE)));
/* Definition de l'image ROUGE, */
#Aifndef NE_PAS_GENERER_Image_ROUGE /* Common : la generation de 'Image_ROUGE' est facultative... */
#Eifndef NE_PAS_GENERER_Image_ROUGE /* Common : la generation de 'Image_ROUGE' est facultative... */
#ifndef NE_PAS_GENERER_Image_VERTE /* Common : la generation de 'Image_VERTE' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,Image_VERTE)));
/* Definition de l'image VERTE, */
#Aifndef NE_PAS_GENERER_Image_VERTE /* Common : la generation de 'Image_VERTE' est facultative... */
#Eifndef NE_PAS_GENERER_Image_VERTE /* Common : la generation de 'Image_VERTE' est facultative... */
#ifndef NE_PAS_GENERER_Image_BLEUE /* Common : la generation de 'Image_BLEUE' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,Image_BLEUE)));
/* Definition de l'image BLEUE. */
#Aifndef NE_PAS_GENERER_Image_BLEUE /* Common : la generation de 'Image_BLEUE' est facultative... */
#Eifndef NE_PAS_GENERER_Image_BLEUE /* Common : la generation de 'Image_BLEUE' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A C C E L E R A T E U R D E L A C O M P I L A T I O N : */
/* */
/* */
/* Definition : */
/* */
/* Afin d'acceler la compilation de */
/* certains modules (et par exemple */
/* 'aleatoires.fon'), certaines valeurs */
/* definies par des '#define' vont etre */
/* etre definies ici sous forme de */
/* variables en memoire... */
/* */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E S T I O N D E L ' I N D E X A T I O N D E S I M A G E S : */
/* */
/*************************************************************************************************************************************/
#ifdef __VERSION__INDEXATION_SIMPLIFIEE_A_PRIORI /* Common,DEFV(Fonction,) : avec '__VERSION__'. */
DEFV(Common,DEFV(Logical,_______VERSION__INDEXATION_SIMPLIFIEE_A_PRIORI));
#Aifdef __VERSION__INDEXATION_SIMPLIFIEE_A_PRIORI /* Common,DEFV(Fonction,) : avec '__VERSION__'. */
#Eifdef __VERSION__INDEXATION_SIMPLIFIEE_A_PRIORI /* Common,DEFV(Fonction,) : avec '__VERSION__'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E S T I O N D U F O R M A T D E S I M A G E S : */
/* */
/* */
/* Definition : */
/* */
/* Il y a deux possibilites : soit le */
/* format des images est fige et defini par */
/* (dimX,dimY,dimZ), soit il est variable et */
/* defini par [Xmin,Xmax]x[Ymin,Ymax]x[Zmin,Zmax]. */
/* */
/* */
/*************************************************************************************************************************************/
#if ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03))) /* Common : */
DEFV(Common,DEFV(Logical,ZINT(cHOMOTHETIE_Std_AXES_____compatibilite_20120210,FAUX)));
DEFV(Common,DEFV(Logical,ZINT(lHOMOTHETIE_Std_AXES_____compatibilite_20120210,FAUX)));
/* Introduit le 20120210184353... */
#Aif ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03))) /* Common : */
#Eif ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03))) /* Common : */
DEFV(Common,DEFV(Int,ZINT(X,k___Xmin)));
DEFV(Common,DEFV(Int,ZINT(Y,k___Ymin)));
DEFV(Common,DEFV(Int,ZINT(Z,k___Zmin)));
DEFV(Common,DEFV(Int,ZINT(T,k___Tmin)));
/* Ces trois definitions, en apparence inutiles, ont ete introduites le 1995021600 a cause */
/* du programme 'v $xrv/champs_5.30$K' ; en effet, dans les procedures 'begin_fuiteQ(...)', */
/* 'begin_colonneQ(...)' et 'begin_ligneQ(...)' a ete introduite la sauvegarde de la */
/* valeur d'hypothetiques coordonnees {X,Y,Z} anterieures, et ce afin de permettre la */
/* recursivite de ces trois procedures. Ainsi, il a fallu creer des valeurs {X,Y,Z} au */
/* niveau le plus bas, c'est-a-dire ici... */
#ifdef GESTION_DES_IMAGES_STATIQUES_VERSION_02 /* Common,DEFV(Fonction,) : avec 'VERSION_02'. */
DEFV(Common,DEFV(Logical,ZINT(valider_les_axes_OX_OY_OZ,NE_PAS_VALIDER_LES_AXES_OX_OY_OZ)));
/* Cet indicateur precise s'il faut ('VRAI') ou pas ('FAUX') valider les trois axes. Ceci */
/* a ete ajoute le 19980324104621 afin de permettre de manipuler des fichiers "textes" */
/* comme des images definies par : */
/* */
/* Xmin = 0 */
/* Xmax = LongueurFichierTexte-1 */
/* */
/* Ymin = 0 */
/* Ymax = 0 */
/* */
/* ainsi, on pourra, par exemple, faire une sorte de "ou" entre deux textes a l'aide de la */
/* commande 'v $xci/maximum$K'. On notera au passage que le code du '$K_BLANC' est le plus */
/* faible des codes utiles, ce qui fait que ce caractere joue en quelque sorte le role du */
/* zero... */
/* */
/* Le 19980409181211, j'ai aussi pris conscience que tout en conservant la dimension d'une */
/* image (soit 'dimXY'), on pouvait changer en fait les deux couples {Xmin,Xmax} et */
/* {Ymin,Ymax} (en notant encore une fois que 'dimXY' doit etre conserve). Cette operation */
/* permet par exemple de changer la definition du voisinage d'un point (dans les operations */
/* de convolution par exemple) en faisant que ce voisinage ne soit plus fait des veritables */
/* voisins dans l'une des deux directions... */
/* */
/* Le 20120123131422, il y a eu passage de 'VALIDER_LES_AXES_OX_OY_OZ' a */
/* 'NE_PAS_VALIDER_LES_AXES_OX_OY_OZ' ce qui simplifie les choses... */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_forme_de_l_espace_tridimensionnel,COEFFICIENT_DE_FORME_DE_L_ESPACE_TRIDIMENSIONNEL)));
/* Ce qui precede fut completer le 20140103185215 par le parametrage possible du coefficient */
/* de forme de l'espace tridimensionnel... */
#Aifdef GESTION_DES_IMAGES_STATIQUES_VERSION_02 /* Common,DEFV(Fonction,) : avec 'VERSION_02'. */
#Eifdef GESTION_DES_IMAGES_STATIQUES_VERSION_02 /* Common,DEFV(Fonction,) : avec 'VERSION_02'. */
#if ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_01))) /* Common : */
#Aif ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_01))) /* Common : */
#Eif ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_01))) /* Common : */
#if ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03))) /* Common : */
DEFV(Common,DEFV(Int,ZINT(Xmin,k___Xmin)));
DEFV(Common,DEFV(Int,ZINT(Xmax,k___Xmax)));
/* Definition de l'axe 'OX' a l'aide de l'intervalle [Xmin,Xmax] ; toutes les autres */
/* definitions ('dimX', 'dimX2', 'Xmax2', 'Xcentre', 'MdimXY', 'MdimXYZ', 'dimXY', 'dimXYZ', */
/* 'PLUS_GRANDE_IMAGE_CARREE_INSCRITE' et 'PLUS_PETITE_IMAGE_CARREE_CIRCONSCRITE') en */
/* decoulent (voir le fichier 'v $xiiD/definit.1$DEF'). */
DEFV(Common,DEFV(Int,ZINT(Ymin,k___Ymin)));
DEFV(Common,DEFV(Int,ZINT(Ymax,k___Ymax)));
/* Definition de l'axe 'OY' a l'aide de l'intervalle [Ymin,Ymax] ; toutes les autres */
/* definitions ('dimY', 'dimY2', 'Ymax2', 'Ycentre', 'MdimXY', 'MdimXYZ', 'dimXY', 'dimXYZ', */
/* 'PLUS_GRANDE_IMAGE_CARREE_INSCRITE' et 'PLUS_PETITE_IMAGE_CARREE_CIRCONSCRITE') en */
/* decoulent (voir le fichier 'v $xiiD/definit.1$DEF'). */
DEFV(Common,DEFV(Int,ZINT(Zmin,k___Zmin)));
DEFV(Common,DEFV(Int,ZINT(Zmax,k___Zmax)));
/* Definition de l'axe 'OZ' a l'aide de l'intervalle [Zmin,Zmax] ; toutes les autres */
/* definitions ('dimZ', 'dimZ2', 'Zmax2', 'Zcentre', 'MdimXY', 'MdimXYZ', 'dimXY', 'dimXYZ', */
/* 'PLUS_GRANDE_IMAGE_CARREE_INSCRITE' et 'PLUS_PETITE_IMAGE_CARREE_CIRCONSCRITE') en */
/* decoulent (voir le fichier 'v $xiiD/definit.1$DEF'). */
DEFV(Common,DEFV(Int,ZINT(Tmin,k___Tmin)));
DEFV(Common,DEFV(Int,ZINT(Tmax,k___Tmax)));
/* Definition de l'axe 'OT' a l'aide de l'intervalle [Tmin,Tmax] (introduit le */
/* 20171219110444). */
#Aif ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03))) /* Common : */
#Eif ((defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03))) /* Common : */
DEFV(Common,DEFV(Int,ZINT(Xmin_reference,k___Xmin)));
DEFV(Common,DEFV(Int,ZINT(Xmax_reference,k___Xmax)));
DEFV(Common,DEFV(Int,ZINT(Ymin_reference,k___Ymin)));
DEFV(Common,DEFV(Int,ZINT(Ymax_reference,k___Ymax)));
DEFV(Common,DEFV(Int,ZINT(Zmin_reference,k___Zmin)));
DEFV(Common,DEFV(Int,ZINT(Zmax_reference,k___Zmax)));
/* Definition des axes 'OX', 'OY' et 'OZ' de reference (introduits le 20170322091625 afin */
/* de pouvoir definir des grandeurs "homothetiques" et par exemple des tailles de paves). */
/* */
/* ATTENTION : je note le 20170322102212 l'existence de plusieurs variables dans */
/* 'v $ximcf/conformes$FON _reference.k___'. Mais, on ne peut pas les faire disparaitre */
/* au profit des six variables ci-dessus car, en effet, si l'on changeait leur definition */
/* (par exemple au profit du format 'Pal' il ne faudrait pas, pour des raisons de */
/* compatibilite, changer celles de 'v $ximcf/conformes$FON _reference.k___'... */
DEFV(Common,DEFV(Float,ZINT(DENORMALISE_AXES_____epsilon,nEPSILON___DENORMALISE_AXES)));
/* Petite quantite utilisee dans les fonctions de type '_?DENORMALISE_AXES(...)'. */
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____coordonnees_dans_un_carre,VRAI)));
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____coordonnees_dans_un_carre,VRAI)));
/* Introduit le 20041107140655 afin de pouvoir garantir, par exemple, de generer une periode */
/* d'un sinus le long de 'dimX' et 'dimY' dans 'v $xci/sinus$K GENERATION_DU_CHAMP_DEMANDE'. */
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20061128,FAUX)));
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20061128,FAUX)));
/* Introduit le 20061128143233 afin de pouvoir garantir la compatibilite anterieure, si */
/* besoin est... */
/* */
/* Le 20061128160349 je note que la difference entre le mode normal et le mode "compatible" */
/* ne se manifeste que si l'echelle ('v $xiii/mono_image$FON coeffF_2D.POINTERs.echelle.') */
/* relative a la coordonnee concernee ('X' et/ou 'Y') differe de 1... */
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____compatibilite_20100210,FAUX)));
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____compatibilite_20100210,FAUX)));
/* Introduit le 20100210104232 afin de pouvoir garantir la compatibilite anterieure, si */
/* besoin est... */
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_X_D_UN_CHAMP_3D_____coordonnees_normalisees,VRAI)));
DEFV(Common,DEFV(Logical,ZINT(ACCES_A_LA_COORDONNEE_Y_D_UN_CHAMP_3D_____coordonnees_normalisees,VRAI)));
/* Introduit le 20060607174931 afin de pouvoir utiliser directement les coordonnees {X,Y} */
/* des images et ainsi, par exemple, pouvoir generer des tramages via 'v $xci/lineaire$K'. */
/* Ainsi, le 20060608114008, je note que : */
/* */
/* $xci/lineaire$X A=0 B=1 C=0 \ */
/* carre_X_CHAMP_3D=FAUX X_CHAMP_3D_denormalisee=VRAI \ */
/* carre_Y_CHAMP_3D=FAUX Y_CHAMP_3D_denormalisee=VRAI \ */
/* amplificateur=1 translateur=0 \ */
/* Tx=0 Ty=0 \ */
/* modulo=VRAI \ */
/* (...) */
/* */
/* donne une trame horizontale faite d'une alternance de lignes blanches et de lignes */
/* noires a condition de visualiser celle-ci avec la palette '$xiP/plan.01'... */
/* */
/* ATTENTION : 'ACCES_A_LA_COORDONNEE_?_D_UN_CHAMP_3D_____coordonnees_normalisees' demande */
/* 'EST_FAUX(ACCES_A_LA_COORDONNEE_?_D_UN_CHAMP_3D_____coordonnees_dans_un_carre') pour */
/* pouvoir etre activable... */
DEFV(Common,DEFV(Logical,ZINT(AXES_COORDONNEES_FERMES_OUVERTS_____compatibilite_20090929,FAUX)));
/* Introduit le 20090929092932 afin de pouvoir garantir la compatibilite anterieure, si */
/* besoin est... */
/* */
/* Le 20091203085638 je note un besoin pressant de cette compatibilite avec certains */
/* entrelacs (tous ?) et en particulier 'v $xiirv/STRV.J2' qui si cette image est recalculee */
/* via sa description ('xlistN Debut_listG_STRV_J2 Fin_listG_STRV_J2' dans '$xiirv') voit */
/* apparaitre un grand trefle (a trois feuilles) sous la forme de deux traits sombres et */
/* steompes. Ce phenomene disparait en faisant : */
/* */
/* COORDONNEES_____compatibilite_20090929=FAUX */
/* */
/* pour toutes les occurences de '$xci/trefle$X' (et pas les autres '$X'...). */
/* */
/* Le 20101005093319, en calculant 'v $xiirs/PROK.41', je note le probleme que cette */
/* option pose dans les programmes 'v $xrs/project2D.11$K 20101005092845' et */
/* 'v $xrs/project3D.11$K 20101005092842' pour les images generees anterieurement au */
/* 20090929092932, d'ou les modifications faites alors a ces deux programmes pour y */
/* autoriser par defaut cette compatibilite... */
DEFV(Common,DEFV(Logical,ZINT(AXE_NIVEAUX_OUVERT_FERME_____compatibilite_19951221,FAUX)));
/* Introduit le 20091015111754 afin de pouvoir garantir la compatibilite anterieure, si */
/* besoin est... */
/* */
/* Le 20091015114844 la valeur de 'AXE_NIVEAUX_OUVERT_FERME_____compatibilite_20091015' */
/* par defaut est passee de 'FAUX' a 'VRAI' ('v $xiiD/definit.2$DEF 20091015114101')... */
/* */
/* Le 20091015174102, "compatibilite_20091015" a ete change en "compatibilite_19951221" */
/* la date "19951221" etant approximative et resultat d'un 'retrouva $xiiD/definit.2$DEF' */
/* en choisissant la plus ancienne archive utilisant 'BLANC' et non plus 'COULEURS', */
/* c'est-a-dire finalement la premiere. Simultanement, la signification de cet indicateur */
/* a ete inversee, d'ou le retour a la valeur 'FAUX' par defaut... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N I V E A U X D E S I M A G E S E T D E S A L B U M S : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(genere_p,ZINT(Niveau____hors_image,NIVEAU_HORS_ECRAN)));
DEFV(Common,DEFV(genere_p,ZINT(Niveau____hors_album,NIVEAU_HORS_ECRAN)));
/* Introduits le 20070213144659... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E S O U S - E C H A N T I L L O N N A G E D E S I M A G E S : */
/* */
/* */
/* Definition : */
/* */
/* Afin de permettre a toutes les */
/* fonctions de manipuler et traiter */
/* des images de dimensions apparentes */
/* inferieures a [dimX,dimY], les pas */
/* d'echantillonnage des images, soit */
/* [pasX,pasY], sont des donnees pro- */
/* grammables. La dimension apparente */
/* d'une image est alors [dimX/pasX,dimY/pasY]. */
/* De plus, il est possible de transla- */
/* ter ce maillage ; ainsi on pourra */
/* multiplexer plusieurs images sous- */
/* echantillonnees, et creer ainsi des */
/* images "spatio-temporelles", c'est- */
/* a-dire finalement une animation... */
/* */
/* */
/* Utilisation : */
/* */
/* PUSH_ECHANTILLONNAGE; */
/* PULL_ECHANTILLONNAGE; */
/* */
/* permettent de sauvegarder, puis */
/* de restaurer (pasX,pasY,pasZ), et enfin, */
/* */
/* SET_ECHANTILLONNAGE(pas_sur_l_axe_OX,pas_sur_l_axe_OY); */
/* SET_ECHANTILLONNAGE_DE_PROFONDEUR(pas_sur_l_axe_OZ); */
/* */
/* permet de positionner (pasX,pasY) et 'pasZ' (seul). */
/* */
/* PUSH_TRANSLATION; */
/* PULL_TRANSLATION; */
/* */
/* permettent de sauvegarder, puis */
/* de restaurer (translationX,translationY), et enfin, */
/* */
/* SET_TRANSLATION(translation_sur_l_axe_OX,translation_sur_l_axe_OY); */
/* */
/* permet de positionner (translationX,translationY). */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,ZINT(echantillonnage,FAUX)));
/* Cet indicateur precise s'il y a ('VRAI') ou pas ('FAUX') */
/* echantillonnage ; il n'y a pas d'echantillonnage a */
/* chaque fois que : */
/* */
/* pasX==PasX, et */
/* pasY==PasY, et */
/* translationX==TraX, et */
/* translationY==TraY, */
/* */
/* ce qui correspond a l'etat initial, mais, on notera l'absence ici de 'pasZ'... */
DEFV(Common,DEFV(Int,ZINT(pasX,PasX)));
/* Pas d'echantillonnage horizontal, */
DEFV(Common,DEFV(Int,ZINT(pasY,PasY)));
/* Pas d'echantillonnage vertical, */
DEFV(Common,DEFV(Int,ZINT(pasZ,PasZ)));
/* Et enfin, pas d'echantillonnage suivant le troisieme axe, mais traite tout a fait a */
/* part, par rapport a 'pasX' et 'pasY'... */
DEFV(Common,DEFV(Int,ZINT(pasT,PasT)));
/* Introduit le 20171219110444... */
DEFV(Common,DEFV(Int,INIT(POINTERi(ApasX),ADRESSE(pasX))));
DEFV(Common,DEFV(Int,INIT(POINTERi(ApasY),ADRESSE(pasY))));
DEFV(Common,DEFV(Int,INIT(POINTERi(ApasZ),ADRESSE(pasZ))));
DEFV(Common,DEFV(Int,INIT(POINTERi(ApasT),ADRESSE(pasT))));
/* Ces trois relais sont destines a permettre un acces aux "vrais" (pasX,pasY,pasZ) meme */
/* lorsque ceux-ci sont "caches" par des variables locales de meme non (par exemple a */
/* l'interieur d'un couple ('begin_image','end_image')... */
DEFV(Common,DEFV(Int,ZINT(translationX,TraX)));
/* Translation horizontal du maillage de sous-echantillonnage, */
DEFV(Common,DEFV(Int,ZINT(translationY,TraY)));
/* Translation vertical du maillage de sous-echantillonnage, */
DEFV(Common,DEFV(Int,ZINT(translationZ,TraZ)));
/* Translation de profondeur du maillage de sous-echantillonnage. */
DEFV(Common,DEFV(Int,ZINT(translationT,TraT)));
/* Translation du temps du maillage de sous-echantillonnage. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R C O U R S E N S P I R A L E D ' U N E I M A G E : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Int,ZINT(SPIRALE_DEFINITION_____facteur_delta_horizontal,FACTEUR_DE_SPIRALE_DELTA_HORIZONTAL)));
DEFV(Common,DEFV(Int,ZINT(SPIRALE_DEFINITION_____facteur_delta_vertical,FACTEUR_DE_SPIRALE_DELTA_VERTICAL)));
/* Pour choisir la direction initiale d'une spirale. */
/* */
/* ATTENTION, on notera les differents conseils suivants : */
/* */
/* 1-pour un fonctionnement mathematiquement correct, il est imperatif que l'un de ces */
/* deux facteurs soit nul ; implicitement : */
/* */
/* SPIRALE_DEFINITION_____facteur_delta_horizontal = 1 */
/* SPIRALE_DEFINITION_____facteur_delta_vertical = 0 */
/* */
/* */
/* 2-lorsque l'un de ces deux facteurs est plus grand que 1, pour une utilisation dans */
/* l'une des fonctions 'Pconvolution(...)' et 'PFconvolution(...)', on aura interet a */
/* utiliser le cumul total des ponderations pour renormaliser (et non pas le cumul des */
/* ponderations utilisees). Il y a pour ce faire l'indicateur suivant : */
/* */
/* Pconvolution_____normaliser_uniquement_avec_les_ponderations_utilisees */
/* */
/* qui controle ce choix (sachant qu'il est implicitement 'VRAI'). Dans le cas contraire, */
/* on risque de voir apparaitre des discontinuites dans l'image resultante ; en particulier */
/* cela peut etre vu avec l'image '$xiio/MIRE' convoluee avec '$xci/convol.01$X' avec, par */
/* exemple, les parametres suivants : */
/* */
/* points=81 */
/* spirale_horizontal=32 */
/* ponderations_utiles=VRAI */
/* */
/* ce qui donne une luminance non monotone de la gauche vers la droite... */
DEFV(Common,DEFV(Int,ZINT(SPIRALE_PARCOURS_____sinus_de_l_angle_de_la_rotation,UN)));
/* Pour definir la rotation de parcours d'une spirale : */
/* */
/* +1 : +pi/2 */
/* -1 : -pi/2 */
/* */
DEFV(Common,DEFV(Int,ZINT(SPIRALE_DEPLACEMENT_____amplitude_horizontale,UN)));
DEFV(Common,DEFV(Int,ZINT(SPIRALE_DEPLACEMENT_____amplitude_verticale__,UN)));
DEFV(Common,DEFV(Int,ZINT(SPIRALE_CIRCULAIRE_DEPLACEMENT_ET_PARCOURS_____amplitude_horizontale,UN)));
DEFV(Common,DEFV(Int,ZINT(SPIRALE_CIRCULAIRE_DEPLACEMENT_ET_PARCOURS_____amplitude_verticale__,UN)));
/* Parametres introduits le 20151109145126 afin de simuler un pas de parcours des spirales */
/* dans 'SPIRALE_DEPLACEMENT(...)' et 'SPIRALE_CIRCULAIRE_DEPLACEMENT_ET_PARCOURS(...)' */
/* respectivement... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E F I L T R A G E D E S N I V E A U X : */
/* */
/* */
/* Definition : */
/* */
/* Un certain nombre de traitements */
/* pourront affecter un niveau apres */
/* son calcul : */
/* */
/* 1 - le "masque", */
/* 2 - l'"ecrasement", */
/* 3 - la "substitution", */
/* 4 - le "calibrage", */
/* 5 - une fonction variable "Vf". */
/* */
/* Toutes ces operations pourront */
/* etre activees ou desactivees glo- */
/* balement grace a l'indicateur */
/* introduit ici. */
/* */
/* */
/* Utilisation : */
/* */
/* PUSH_FILTRAGE; */
/* PULL_FILTRAGE; */
/* */
/* permettent de sauvegarder, puis */
/* de restaurer l'etat courant du */
/* filtrage des niveaux, et enfin, */
/* */
/* SET_FILTRAGE(ACTIF ou INACTIF); */
/* */
/* puis : */
/* */
/* PUSH_OPTIMISATION; */
/* PULL_OPTIMISATION; */
/* */
/* permettent de sauvegarder, puis */
/* de restaurer l'etat courant de */
/* l'optimisation portant sur l'uti- */
/* lisation des substitutions seules, */
/* et enfin : */
/* */
/* SET_OPTIMISATION(VRAI ou FAUX); */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,ZINT(etat_Filtrage_niveaux,INACTIF)));
/* L'indicateur 'etat_Filtrage_niveaux' controle globalement les transformations */
/* portant sur un niveau ; il prend deux valeurs 'ACTIF' et 'INACTIF' (cet */
/* etat initial inhibe globalement l'ensemble des transformations). */
DEFV(Common,DEFV(Logical,ZINT(ne_faire_que_les_substitutions,FAUX)));
/* L'indicateur 'ne_faire_que_les_substitutions' n'a de sens que si l'indicateur */
/* 'etat_Filtrage_niveaux' est 'ACTIF' ; il indique alors si le filtrage doit etre */
/* complet (il vaut alors 'FAUX') ou partiel, et ne porter alors que sur les */
/* substitutions (il vaut alors 'VRAI'). L'etat implicite donne acces a l'ensemble */
/* des filtrages ; dans l'etat contraire, le fonctionnement est plus rapide... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E M A S Q U E : */
/* */
/* */
/* Definition : */
/* */
/* Les acces aux images par les fonctions */
/* du type "load" ('load_point()',...), */
/* "store" ('store_point()',...) et de */
/* "parcours" ('traite_image_...') sont */
/* partiellement (point par point) inhibables */
/* a l'aide de ce que l'on appelera un */
/* "masque". Il s'agit d'une image parti- */
/* culiere ; lorsque l'on accede a un */
/* point {X,Y} d'une image quelconque, */
/* on teste la valeur du point {X,Y} du */
/* "masque", et suivant sa valeur et la */
/* fonction demandee ("load", "store" ou */
/* "acces"), l'acces a lieu ou pas... */
/* */
/* */
/* Utilisation : */
/* */
/* DEMASQUE_IMAGES; */
/* MASQUE_IMAGES(seuil); */
/* MASQUE_IMAGES_PORTEE(seuil,portee); */
/* */
/* permettent de mettre hors fonction */
/* ou bien d'activer le masquage avec */
/* un certain seuil (les points {X,Y} */
/* dont Masque(X,Y) associe est supe- */
/* rieur ou egal a "seuil" ne sont pas */
/* masques) et une certaine "portee" */
/* (c'est-a-dire suivant la fonction */
/* -"load", "store" ou "parcours"- */
/* demandee ; 'MASQUE_IMAGES a implicitement */
/* une portee limitee a la fonction de */
/* "parcours"), et enfin, */
/* */
/* PUSH_MASQUE; */
/* PULL_MASQUE; */
/* */
/* permettent de sauvegarder et de */
/* restaurer (respectivement) l'etat */
/* du masque. */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Statique,DEFV(image,Masque)));
/* Le "masque" est une image "standard" comme une autre... */
DEFV(Common,DEFV(Logical,ZINT(Masque_____etat,INACTIF)));
/* L'indicateur 'Masque_____etat' controle l'activite du "masque" ; il peut */
/* donc prendre deux valeurs 'ACTIF' et 'INACTIF'. */
DEFV(Common,DEFV(genere_p,ZINT(Masque_____seuil,NOIR)));
DEFV(Common,DEFV(binaire,ZINT(Masque_____portee,MASQUER_PARCOURS)));
/* Lorsque le "masque" est actif (Masque_____etat=ACTIF), l'acces au point {X,Y} */
/* n'a lieu que si : Masque(X,Y) >= seuil et si le masque de "portee" contient */
/* le bit (a 1) de la fonction demandee ("load", "store" ou "parcours"). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E M A R Q U E U R : */
/* */
/* */
/* Definition : */
/* */
/* Pour certains algorithmes, tels le */
/* remplissage de contour, il est neces- */
/* saire de marquer les points par les- */
/* quels on est passe. C'est le role */
/* des donnees et definition qui suivent. */
/* */
/* */
/* Utilisation : */
/* */
/* MARQUAGE_VALIDATION_ET_INITIALISATION; */
/* */
/* permet de verifier que la liste de */
/* substitution courante si elle est */
/* active est compatible avec les */
/* niveaux de marquage. */
/* */
/* MARQUAGE_POINT(x,y); */
/* */
/* permet de memoriser le passage par */
/* le point {x,y}. */
/* */
/* TEST_POINT_MARQUE(x,y); */
/* TEST_POINT_NON_MARQUE(x,y); */
/* */
/* qui permettent de savoir si le point */
/* {x,y} a deja ete atteint ou pas... */
/* */
/* */
/*************************************************************************************************************************************/
#ifndef NE_PAS_GENERER_Marqueur /* Common : la generation de 'Marqueur' est facultative... */
DEFV(Common,DEFV(Statique,DEFV(image,Marqueur)));
/* Le "marqueur" est une image "standard" comme une autre... */
#Aifndef NE_PAS_GENERER_Marqueur /* Common : la generation de 'Marqueur' est facultative... */
#Eifndef NE_PAS_GENERER_Marqueur /* Common : la generation de 'Marqueur' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E Z - B U F F E R : */
/* */
/* */
/* Definition : */
/* */
/* Une image de type 'imageF' va */
/* etre definie ici. Elle contiendra */
/* lorsque cela sera necessaire la */
/* troisieme coordonnee ('Z') de */
/* chaque point {X,Y}. Ainsi, elle */
/* donnera a tout instant en chaque */
/* point {X,Y}, la profondeur du point */
/* le plus proche de l'observateur */
/* marque. Un 'bypath' existe : s'il */
/* vaut +INFINI, on trace toujours, */
/* alors que pour -INFINI, on fait le */
/* test complet, et on ne trace que si */
/* Z >= Z-Buffer... */
/* */
/* On notera que l'axe 'OZ' va */
/* d'arriere en avant. */
/* */
/* */
/* Nota : */
/* */
/* Lorsque le 'Z-Buffer est inactif, */
/* au lieu de le mettre a jour, on procede */
/* au comptage des "pseudo-collisions", */
/* c'est-a-dire des cas tels que : */
/* */
/* Z_Buffer(X,Y) + Zavant > Z > Z_Buffer(X,Y) - Zarriere */
/* */
/* ou P(X,Y,Z) est point a tester et a condition */
/* que le point {X,Y} ne soit pas masque. */
/* */
/* */
/*************************************************************************************************************************************/
#ifndef NE_PAS_GENERER_Z_Buffer /* Common : la generation de 'Z_Buffer' est facultative... */
DEFV(Common,DEFV(Logical,ZINT(Z_Buffer_____actif,VRAI)));
/* Cet indicateur indique si le 'Z-Buffer' est actif ('VRAI'), auquel cas on le met */
/* a jour lorsqu'il est accede, ou bien inactif ('FAUX'), auquel cas il n'est pas */
/* mis a jour, et seules sont comptees les pseudo-collisions, c'est-a-dire les cas */
/* tels que, soit P(X,Y,Z) le point a marquer : il y a pseudo-collision si : */
/* Z_Buffer(X,Y) + Zavant > Z > Z_Buffer(X,Y) - Zarriere. */
DEFV(Common,DEFV(Logical,ZINT(Z_Buffer_____mettre_a_jour,VRAI)));
/* Lorsque le 'Z-Buffer' est actif (voir l'indicateur 'Z_Buffer_____actif' ci-dessus), cet */
/* indicateur precise si malgre tout le 'Z-Buffer' doit etre mis a jour ('VRAI'), ou bien */
/* laisse en l'etat ('FAUX'). Ceci peut etre utilise, par exemple, lorsque l'on manipule */
/* sequentiellement les trois composantes 'ROUGE', 'VERTE' et 'BLEUE' d'une image en vraies */
/* couleurs ; on fera : */
/* */
/* NE_PAS_METTRE_A_JOUR_LE_Z_Buffer; */
/* TRAITER_LA_COMPOSANTE(ROUGE); */
/* TRAITER_LA_COMPOSANTE(VERTE); */
/* METTRE_A_JOUR_LE_Z_Buffer; */
/* TRAITER_LA_COMPOSANTE(BLEUE); */
/* */
/* ainsi le 'Z-Buffer' ne sera mis a jour qu'une seule fois pour un meme point des trois */
/* composantes, et la coordonnee 'Z' testee le sera toujours par rapport a l'etat anterieur */
/* du 'Z-Buffer' (c'est-a-dire tel qu'il etait avant 'TRAITER_LA_COMPOSANTE(ROUGE)'). */
/* */
/* Mais ATTENTION : la procedure 'NE_PAS_METTRE_A_JOUR_LE_Z_Buffer' doit etre utilisee avec */
/* la plus grande precaution. En effet, s'il y a par exemple plusieurs objets 'ROUGE' qui se */
/* cachent les uns les autres, le 'Z-Buffer' n'etant pas mis a jour pour le 'ROUGE', il n'y */
/* aura pas elimination des lignes cachees, et cette meme composante 'ROUGE' sera donc */
/* incorrecte, et incoherente vis a vis de la composante 'BLEUE'. Enfin, ce qui a ete dit */
/* pour le 'ROUGE' vaut aussi pour le 'VERTE'... */
DEFV(Common,DEFV(Statique,DEFV(imageF,Z_Buffer)));
/* Definition du 'Z-buffer'. */
DEFV(Common,DEFV(Logical,INIT(Z_Buffer_____etat,INVALIDE)));
/* Cet indicateur indique si le contenu du 'Z-Buffer' est significatif ('VALIDE') */
/* ou pas ('INVALIDE') ; il est positionne par 'IloadF_image' */
/* et 'IFinitialisation'. */
DEFV(Common,DEFV(genere_Float,ZINT(Z_Buffer_____minimum,F_INFINI)));
DEFV(Common,DEFV(genere_Float,ZINT(Z_Buffer_____maximum,F_MOINS_L_INFINI)));
/* Definition du minimum et du maximum du 'Z-Buffer' au cours de son exploitation... */
/* On notera que ces ceux variables ont ete introduites parce que dans le cas du 'Z-Buffer' */
/* il est impossible d'utiliser la fonction 'IFnivo_extrema(...)' qui donnerait en ce qui */
/* concerne 'niveau_minimum' la valeur d'initialisation (ce qui serait de peu d'interet...). */
DEFV(Common,DEFV(Logical,INIT(Z_Buffer_____test_strict,FAUX)));
/* Cet indicateur introduit le 20100223172401 permet de choisir entre 'IFGT(...)' ('VRAI') */
/* et 'IFGE(...)' ('FAUX'), ce dernier etant le test par defaut pour des raisons de */
/* compatibilite anterieure... */
DEFV(Common,DEFV(Statique,DEFV(imageF,Z_Buffer_accumule)));
/* Definition du 'Z-buffer accumule'. Celui-ci a ete introduit le 20010722100154 ; il */
/* correspond au 'Z-buffer', mais a la difference de celui-ci, il n'est jamais reinitialise. */
/* Cela permet donc une accumulation du 'Z-buffer' au cours de l'execution d'un progarmme, */
/* ce qui permet, par exemple, de generer une "geometrie tridimensionnelle" a l'aide d'une */
/* sorte de principe ergodique concernant les objets manipules ; un exemple de ceci peut */
/* etre vu dans 'v $xrk/rdn_walk.52$K Z_Buffer_accumule'. */
DEFV(Common,DEFV(Logical,INIT(Z_Buffer_accumule_____etat,INVALIDE)));
/* Cet indicateur indique si le contenu du 'Z-Bufferaccumule ' est significatif ('VALIDE') */
/* ou pas ('INVALIDE') ; il est positionne par 'IFinitialisation'. */
DEFV(Common,DEFV(genere_Float,ZINT(Z_Buffer_accumule_____minimum,F_INFINI)));
DEFV(Common,DEFV(genere_Float,ZINT(Z_Buffer_accumule_____maximum,F_MOINS_L_INFINI)));
/* Definition du minimum et du maximum du 'Z-Buffer accumule' au cours de son exploitation. */
/* On notera que ces ceux variables ont ete introduites parce que dans le cas du 'Z-Buffer' */
/* il est impossible d'utiliser la fonction 'IFnivo_extrema(...)' qui donnerait en ce qui */
/* concerne 'niveau_minimum' la valeur d'initialisation (ce qui serait de peu d'interet...). */
DEFV(Common,DEFV(Float,ZINT(Z_Buffer_____bypath,F_MOINS_L_INFINI)));
/* 'bypath' du 'Z-Buffer' initialise de facon a l'invalider, et donc a faire le */
/* test complet... */
DEFV(Common,DEFV(Float,ZINT(Z_Buffer_____avant,FLOT(MOIT(KK___dimZ)))));
/* Borne relative "avant" de detection des pseudo-collisions. */
DEFV(Common,DEFV(Float,ZINT(Z_Buffer_____arriere,FLOT(MOIT(KK___dimZ)))));
/* Borne relative "arriere" de detection des pseudo-collisions. */
DEFV(Common,DEFV(Positive,INIT(Z_Buffer_____compteur_des_pseudo_collisions,ZERO)));
/* Compteur des pseudo-collisions dans le Z_Buffer ; ces trois variables n'ont de sens */
/* que lorsque le 'Z-Buffer' n'est pas actif... */
#Aifndef NE_PAS_GENERER_Z_Buffer /* Common : la generation de 'Z_Buffer' est facultative... */
#Eifndef NE_PAS_GENERER_Z_Buffer /* Common : la generation de 'Z_Buffer' est facultative... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* " A R R O N D I " D ' U N N I V E A U F L O T T A N T : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(GENP_____epsilon_des_fonctions_de_ce_type,nEPSILON_GENP)));
/* Petite quantite utilisee dans les fonctions de type 'GENP(...)'. */
DEFV(Common,DEFV(Float,ZINT(epsilon_de_LISSAGE_LISTE_DE_SUBSTITUTION,nEPSILON_GENP)));
/* Petite quantite utilisee dans 'v $xiii/Images$DEF LISSAGE_LISTE_DE_SUBSTITUTION' et */
/* introduit le 20040910140509. Une valeur nulle permet d'assurer la compatibilite */
/* anterieure ('v $xigP/.INTERPOLE$Y EpsilonLissage'). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E C A L I B R A G E : */
/* */
/* */
/* Definition : */
/* */
/* Lors des rangements des points dans */
/* les matrices "images", leurs niveaux, */
/* suivant la valeur des indicateurs qui */
/* suivront, sont calibres. Trois calibra- */
/* ges sont prevus : */
/* */
/* 1 - "modulo" : le niveau est ramene */
/* dans le segment [noir,blanc], */
/* */
/* 2 - "seuillage bas" : tous les niveaux */
/* inferieurs au "noir" sont mis a "noir", */
/* */
/* 3 - "seuillage haut" : tous les niveaux */
/* superieurs au "blanc" sont mis a "blanc". */
/* */
/* */
/* Utilisation : */
/* */
/* SEUILLAGE_BAS_INACTIF; */
/* SEUILLAGE_BAS_ACTIF(GENP(seuil)); */
/* SEUILLAGE_HAUT_INACTIF; */
/* SEUILLAGE_HAUT_ACTIF(GENP(seuil)); */
/* SEUILLAGE_MODULO_INACTIF; */
/* SEUILLAGE_MODULO_ACTIF(GENP(origine),GENP(extremite)); */
/* */
/* permettent d'inactiver ou d'activer */
/* respectivement les trois seuillages */
/* disponibles. */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,ZINT(etat_Cmodulo,INACTIF)));
/* Cet indicateur controle le fonctionement du calibrage "modulo". */
DEFV(Common,DEFV(genere_p,ZINT(seuil_Corigine,NOIR)));
/* Valeur du niveau origine du "modulo". */
DEFV(Common,DEFV(genere_p,ZINT(seuil_Cextremite,BLANC)));
/* Valeur du niveau extremite du "modulo". */
DEFV(Common,DEFV(Logical,ZINT(etat_Cbas,INACTIF)));
/* Cet indicateur controle le fonctionnement du calibrage "seuil bas". */
DEFV(Common,DEFV(genere_p,ZINT(seuil_Cbas,NOIR)));
/* Valeur du niveau de "seuillage bas". */
DEFV(Common,DEFV(Logical,ZINT(etat_Chaut,INACTIF)));
/* Cet indicateur controle le fonctionnement du calibrage "seuil haut". */
DEFV(Common,DEFV(genere_p,ZINT(seuil_Chaut,BLANC)));
/* Valeur du niveau de "seuillage haut". */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E P L A N C H E R : */
/* */
/* */
/* Definition : */
/* */
/* Nous allons definir la notion de */
/* "plancher" ; en effet, lorsque l'on */
/* marque un point dans une image a fond */
/* NOIR, si ce point est lui-meme NOIR, il */
/* n'apparaitra pas. D'ou ici cette definition */
/* d'un NOIR_PLANCHER utilise pour le marquage */
/* des points. Celui-ci est variable, et fonction */
/* des listes de SUBSTITUTION utilisees... */
/* */
/* */
/* Utilisation : */
/* */
/* SET_NOIR_PLANCHER(niveau); */
/* */
/* permettent de positionner le NOIR_PLANCHER */
/* courant... */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(genere_p,ZINT(noir_plancher_substitution,NOIR_PLANCHER)));
/* Valeur du niveau a ne pas franchir bien souvent ; on notera qu'un '#define' en */
/* majuscule 'NOIR_PLANCHER_SUBSTITUTION' a ete defini afin de ne pas avoir a modifier */
/* les fichiers le referencant... */
DEFV(Common,DEFV(genere_p,ZINT(noir_plancher_des_vecteurs,NOIR_PLANCHER)));
/* Niveau minimal (excepte le vrai 'NOIR') utilise lors du marquage des points d'un */
/* vecteur ; cette variable est introduite pour permettre une generation correcte des */
/* mires de barres. On notera que 'noir_plancher_des_vecteurs' se situe dans le fichier */
/* '$xiii/Images$STR' et non pas dans '$xiii/vecteurs$FON' car en effet elle est referencee */
/* d'une part par 'SET_FILTRAGE(INACTIF)' et d'autre part par la fonction "incontournable" */
/* 'Nsubstitution(...)' via la procedure 'CAS_ACCES_LISTE_DE_SUBSTITUTION(...)' ; ainsi */
/* cette variable est positionnee meme si les fonctions vectorielles ne sont par utilisees. */
DEFV(Common,DEFV(Int,ZINT(pas_entre_CLIPPING_INTENSITE_et_MIN_INTENSITE,PAS_COULEURS)));
/* Pas entre 'CLIPPING_INTENSITE' et 'MIN_INTENSITE'. Ce parametre a ete introduit le */
/* 19961007164935 afin de permettre de forcer completement a 'NOIR' les points d'une */
/* montagne correspondant a des points 'NOIR's de sa texture ('v $xiii/montagnes$FON'). */
/* On notera que cette definition est situee dans ce fichier parce qu'elle est utile aux */
/* differents modules separes de '$xiii/montagnes$FON'... */
DEFV(Common,DEFV(Float,ZINT(minimum_normalise_du_cosinus_d_une_normale,COORDONNEE_BARYCENTRIQUE_MINIMALE)));
DEFV(Common,DEFV(Float,ZINT(maximum_normalise_du_cosinus_d_une_normale,COORDONNEE_BARYCENTRIQUE_MAXIMALE)));
/* Definit le segment (a priori [0,1]) dans lequel un cosinus de normale est renormalise. */
/* On notera que ces definitions sont situees dans ce fichier parce qu'elles sont utiles aux */
/* differents modules separes de '$xiii/montagnes$FON'... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E S U B S T I T U T I O N : */
/* */
/* */
/* Definition : */
/* */
/* Nous allons definir la notion de */
/* substitution ; lorsqu'un niveau a ete */
/* fixe pour un point d'une image, et ce */
/* apres les fonctions 'Vf' et le "cali- */
/* brage", il passe par une phase de */
/* substitution, ou ce niveau calcule */
/* est un indice dans un vecteur qui donne */
/* le niveau a attribuer au point. */
/* Ce vecteur, est lui-meme range dans */
/* une matrice, ce qui permet d'avoir */
/* plusieurs listes de substitution */
/* accessibles simultanement. Enfin, une */
/* matrice "inverse" est utilisee lors */
/* des 'loadS_point's. */
/* */
/* */
/* Utilisation : */
/* */
/* PUSH_SUBSTITUTION; */
/* PULL_SUBSTITUTION; */
/* */
/* permettent de sauvegarder, puis */
/* de restaurer la substitution */
/* courante, et enfin, */
/* */
/* SUBSTITUTION(L_SUBSTITUTION_XX); */
/* */
/* permet de choisir la substitu- */
/* tion courante parmi la liste */
/* suivante : */
/* */
/* L_SUBSTITUTION_NEUTRE, */
/* L_SUBSTITUTION_01, */
/* L_SUBSTITUTION_02, */
/* L_SUBSTITUTION_11, */
/* L_SUBSTITUTION_12, */
/* L_SUBSTITUTION_13, */
/* L_SUBSTITUTION_14, */
/* L_SUBSTITUTION_21, */
/* L_SUBSTITUTION_22, */
/* L_SUBSTITUTION_23, */
/* L_SUBSTITUTION_24, */
/* L_SUBSTITUTION_25, */
/* L_SUBSTITUTION_26, */
/* L_SUBSTITUTION_27, */
/* L_SUBSTITUTION_28, */
/* L_SUBSTITUTION_31, */
/* L_SUBSTITUTION_32, */
/* L_SUBSTITUTION_33, */
/* L_SUBSTITUTION_34, */
/* L_SUBSTITUTION_35, */
/* L_SUBSTITUTION_36, */
/* L_SUBSTITUTION_37, */
/* L_SUBSTITUTION_38, */
/* L_SUBSTITUTION_39, */
/* L_SUBSTITUTION_3A, */
/* L_SUBSTITUTION_3B, */
/* L_SUBSTITUTION_3C, */
/* L_SUBSTITUTION_3D, */
/* L_SUBSTITUTION_3E, */
/* L_SUBSTITUTION_3F, */
/* L_SUBSTITUTION_3G, */
/* L_SUBSTITUTION_FF, */
/* L_SUBSTITUTION_FE, */
/* L_SUBSTITUTION_FC, */
/* L_SUBSTITUTION_F8, */
/* L_SUBSTITUTION_F0, */
/* L_SUBSTITUTION_E0, */
/* L_SUBSTITUTION_C0, */
/* L_SUBSTITUTION_80, */
/* L_SUBSTITUTION_ROUGE, */
/* L_SUBSTITUTION_VERTE, */
/* L_SUBSTITUTION_BLEUE, */
/* L_SUBSTITUTION_VARIABLE, */
/* L_SUBSTITUTION_HISTOGRAMME, */
/* L_SUBSTITUTION_SOLAR, */
/* L_SUBSTITUTION_X_WINDOW. */
/* */
/* et, */
/* */
/* MODIFICATION_LISTE_DE_COLORIAGE_X_WINDOW(niveau,niveau_substitue); */
/* MODIFICATION_LISTE_DE_SUBSTITUTION(niveau,niveau_substitue); */
/* MODIFICATION_LISTE_DE_COLORIAGE(niveau,niveau_substitue_R,niveau_substitue_V,niveau_substitue_B); */
/* */
/* permettent de modifier la liste */
/* "VARIABLE" element par element, */
/* ainsi que la liste dite de */
/* "COLORIAGE" ou triplet (ROUGE,VERTE,BLEUE) */
/* qui fait office de "look-up tables".. */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,INIT(init_substitution,FAUX)));
/* Cet indicateur est rendu necessaire, par le fait que la matrice des */
/* substitution ne peut etre initialisee a la compilation... Tant qu'il */
/* est a l'etat 'FAUX', cela signifie que les listes de substitution */
/* n'ont pas ete initialisees. */
DEFV(Common,DEFV(Int,ZINT(num_liste_de_substitution,L_SUBSTITUTION_NEUTRE)));
/* Cette variable donne le numero de la liste de substitution courante ; en */
/* standard, on utilise la liste qui ne fait rien... */
DEFV(Common,DEFV(Int,ZINT(num_liste_de_substitution_ROUGE,L_SUBSTITUTION_ROUGE_BASIC)));
DEFV(Common,DEFV(Int,ZINT(num_liste_de_substitution_VERTE,L_SUBSTITUTION_VERTE_BASIC)));
DEFV(Common,DEFV(Int,ZINT(num_liste_de_substitution_BLEUE,L_SUBSTITUTION_BLEUE_BASIC)));
/* Ces trois variables permettent de definir une permutation (et meme quelque chose de */
/* beucoup plus general) des trois listes de COLORIAGE. */
DEFV(Common,DEFV(Logical,DTb1(liste_d_autorisation_de_substitution_des_niveaux,COULEURS)));
/* Ce vecteur permet d'autoriser la substitution ('AUTORISE') d'un niveau quelconque, ou */
/* de l'interdire ('INTERDIT'), meme quand le mecanisme de substitution est actif. */
DEFV(Common,DEFV(genere_p,DTb2(listes_de_substitution,NOMBRE_DE_SUBSTITUTIONS,COULEURS)));
/* Matrice des substitutions : */
/* le premier indice donne le numero de la liste de substitutions, */
/* le second indice donne le niveau a substituer. */
DEFV(Common,DEFV(genere_p,DTb2(listes_inverses_de_substitution,NOMBRE_DE_SUBSTITUTIONS,COULEURS)));
/* Matrice "inverse" des substitutions : */
/* elle donne l'inverse de la matrice de substitution, et est donc */
/* utilise lors des 'load_point'. */
DEFV(Common,DEFV(Logical,DTb2(blocage_des_listes_de_substitution,NOMBRE_DE_SUBSTITUTIONS,COULEURS)));
/* Matrice des blocage des listes de substitutions ; elle est "parallele" a la */
/* matrice des substitutions, et chaque entree peut prendre les deux valeurs */
/* 'AUTORISE' (etat initial) et 'INTERDIT' qui indique si l'on peut ou pas */
/* modifier l'entree correspondante... */
DEFV(Common,DEFV(Int,ZINT(pas_COULEURS,PAS_COULEURS)));
/* Pas de parcours des listes de substitution ; mais attention, contrairement au sous- */
/* echantillonnage spatial (pasX,pasY), 'pas_COULEURS' n'est pas utilises systematiquement, */
/* et d'ailleurs plutot exceptionnellement... */
DEFV(Common,DEFV(Logical,ZINT(interpoler_les_listes_de_substitution_entre_D2_et_A3,VRAI)));
/* Cet indicateur a ete introduit le 19970929115853 a cause de problemes rencontres dans */
/* 'v $xigP/.INTERPOLE$Y Fderivee'. En effet, etant donnee la methode calcul des derivees */
/* au points de depart 'D' et d'arrivee 'A' par difference de valeurs en 2 points, ces */
/* derivees sont tres frequemment nulles (par exemple, 'v $xigP/abso.45$Z') car les valeurs */
/* en ces points (appeles {1,2} et {3,4} respectivement sans '$xigP/.INTERPOLE$Y') sont la */
/* plupart du temps egales. Le facteur multiplicatifs des derivees 'facteur_des_derivees' */
/* utilise dans 'LISSAGE_LISTE_DE_SUBSTITUTION(...)' est donc alors d'aucune utilite, */
/* puisque quelle que soit sa valeur s'il multiplie une valeur nulle, elle le reste. La */
/* solution est donc la suivante : en plus d'interpoler entre 'D2' et 'A3' (etat par defaut) */
/* la possibilite de le faire entre 'D1' et 'A4' est offerte le 19970929115853. Ainsi, on */
/* garde le principe anterieur, mais dorenavant, il est possible de faire que les niveaux */
/* 'D2' et 'A3' ne soient utilises que pour le calcul des derivees sans figurer ensuite dans */
/* la liste de 'SUBSTITUTION' que l'on est en train d'interpoler puisque cette operation */
/* aura lieu entre 'D1' et 'A4', et que 'D2' et 'A3' sont inclus dans [D1,A4]. En resume, */
/* il y a donc deux modes d'interpolation disponibles : */
/* */
/* D2 --> A3 : les niveaux definis en {D1,D2,A3,A4} figurent tel quel dans */
/* la palette. */
/* */
/* D1 --> A4 : seuls les niveaux definis en {D1,A4} figurent tel quel dans */
/* la palette alors que ceux qui sont definis en {D2,A3} ne */
/* servent qu'a definir les derivees en {D1,D2} et {A3,A4} */
/* respectivement ; les niveaux figurant en {D2,A3} a la fin */
/* du processus resultant de l'interpolation. */
/* */
/* Enfin, pour des raisons de compatibilite anterieure, le mode 'D2 --> A3' est le mode */
/* par defaut... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D ' E C R A S E M E N T : */
/* */
/* */
/* Definition : */
/* */
/* Avant les operations 'Vf', */
/* "calibrage" et "substitution" */
/* d'un point de coordonnees {X,Y}, */
/* on regarde le niveau anterieur ; */
/* ce niveau anterieur est un index */
/* dans un vecteur d'autorisation */
/* indiquant si l'on a le droit */
/* de l'ecraser ou pas... */
/* */
/* */
/* Utilisation : */
/* */
/* ECRASEMENT_AUTORISE(niveau); */
/* ECRASEMENT_INTERDIT(niveau); */
/* */
/* qui permettent d'autoriser et */
/* d'interdire individuellement */
/* chaque niveau, et */
/* */
/* TOUS_ECRASEMENTS_AUTORISES; */
/* */
/* qui (re-)autorise l'ecrasement */
/* de tous les niveaux. */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,DTb1(liste_d_ecrasement,COULEURS)));
/* Vecteur des ecrasements : donne par niveau l'etat d'iterdiction */
/* ou d'autorisation de son ecrasement lors d'un 'store_point'. */
DEFV(Common,DEFV(Logical,INIT(init_ecrasement,FAUX)));
/* Cet indicateur est rendu necessaire, par le fait que le vecteur des */
/* ecrasements ne peut etre initialisee a la compilation... Tant qu'il */
/* est a l'etat 'FAUX', cela signifie que la liste des ecrasements */
/* n'ont pas ete initialisees. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* L I S S A G E P A R A P P R O X I M A T I O N P A R A B O L I Q U E : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,INIT(LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_m2
,COEFFICIENT_DE_LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_DE_n_m2
)
)
);
DEFV(Common,DEFV(Float,INIT(LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_m1
,COEFFICIENT_DE_LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_DE_n_m1
)
)
);
DEFV(Common,DEFV(Float,INIT(LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_0
,COEFFICIENT_DE_LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_DE_n_0
)
)
);
DEFV(Common,DEFV(Float,INIT(LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_p1
,COEFFICIENT_DE_LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_DE_n_p1
)
)
);
DEFV(Common,DEFV(Float,INIT(LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_____coefficient_de__n_p2
,COEFFICIENT_DE_LISSAGE_PAR_APPROXIMATION_PARABOLIQUE_DE_n_p2
)
)
);
/* Introduit le 20160603151935 sous cette forme pour plus de generalite... */
/* */
/* Aux environs du 20160604093357, ils ont ete introduits dans des 'GET_ARGUMENT_F(...)' */
/* dans tous les programmes '$K' ou cela etait utile et facile. Cela a donc concerne : */
/* */
/* $xci/fract_2D.01$K IFfractal_2D_precises(...) */
/* $xci/fract_3D.01$K IFfractal_3D_precises(...) */
/* $xci/lissage$K IFlissage_parabolique(...) */
/* $xci/substitue$K IFmove_avec_substitution(...) */
/* */
/* Ce sont en fait les seuls '$K' ou 'LISSAGE_PAR_APPROXIMATION_PARABOLIQUE(...)' etait */
/* deja reellement utilisABLE via les fonctions et les procedures suivantes : */
/* */
/* IFlissage_parabolique(...) LISSAGE_PAR_APPROXIMATION_PARABOLIQUE */
/* IFmove_avec_substitution(...) CONVERSION_FLOTTANTE_D_UNE_LISTE_DE_SUBSTITUTION */
/* IFfractal_2D_precises(...) PREPARATION_DE_L_UTILISATION_D_UNE_LISTE_DE_SUBSTITUTION */
/* IFfractal_3D_precises(...) PREPARATION_DE_L_UTILISATION_D_UNE_LISTE_DE_SUBSTITUTION */
/* */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C O N V E R S I O N " F L O T T A N T E " D E L A L I S T E D E S U B S T I T U T I O N */
/* C O U R A N T E " S T A N D A R D " : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,INIT(CONVERSION_FLOTTANTE_D_UNE_LISTE_DE_SUBSTITUTION_____renormaliser,VRAI)));
/* Cet indicateur controle dans 'CONVERSION_FLOTTANTE_D_UNE_LISTE_DE_SUBSTITUTION(...)' */
/* la renormalisation des listes de substitution flottantes. Ceci a ete introduit le */
/* 20130114163336 pour 'v $xci/substitue$K _____renormaliser' principalement. La valeur */
/* par defaut garantit la compatibilite anterieure... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E T A B L E D E M U L T I P L I C A T I O N G E N E R A L I S E E : */
/* */
/* */
/* Definition : */
/* */
/* Nous allons definir la notion de */
/* produit generalise ; il s'agit la */
/* d'une operation binaire en general */
/* non commutative. On se donne deux */
/* images 'A1' et 'A2', et une matrice */
/* [COULEURS][COULEURS] qui donne pour */
/* chaque couple de niveaux (n(A1),n(A2)) */
/* le niveau n(R) de l'image resultante. */
/* */
/* On peut considerer cela comme une */
/* extension bi-dimensionnelle des */
/* listes de substitution. */
/* */
/* */
/* Utilisation : */
/* */
/* INITIALISATION_QUELCONQUE_TABLE_DE_MULTIPLICATION(table_de_multiplication,DEFINITION_DU_PRODUIT); */
/* */
/* permet d'initialiser une table de multiplication */
/* de facon tout a fait arbitraire, et : */
/* */
/* INITIALISATION_TABLE_DE_MULTIPLICATION(table_de_multiplication,DEFINITION_DU_PRODUIT); */
/* */
/* permet d'initialiser une table de multiplication */
/* a l'aide d'une certaine definition, et par */
/* exemple : 'PRODUIT_OU_FLOU',... */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,INIT(initialisation_table_de_multiplication_standard,INVALIDE)));
/* Indique si le contenu de la table de multiplication standard est */
/* 'VALIDE' ou encore 'INVALIDE'... */
DEFV(Common,DEFV(table_de_multiplication_generalisee,table_de_multiplication_standard));
/* Definition d'une table de multiplication standard. ATTENTION : a cause */
/* de 'Common', toutes les informations precedentes doivent etre sur la */
/* meme ligne... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D ' A U T O M A T E S C E L L U L A I R E S M O N O D I M E N S I O N N E L S : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,INIT(initialisation_automate_cellulaire_standard,INVALIDE)));
/* Indique si le contenu de l'automate cellulaire standard est */
/* 'VALIDE' ou encore 'INVALIDE'... */
DEFV(Common,DEFV(automate_cellulaire_monodimensionnel,automate_cellulaire_standard));
/* Definition de l'automate cellulaire standard. ATTENTION : a cause */
/* de 'Common', toutes les informations precedentes doivent etre sur la */
/* meme ligne... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D E S T A T I S T I Q U E S : */
/* */
/* */
/* Definition : */
/* */
/* Un certain nombre de donnees */
/* statistiques relatives a une */
/* image seront disponibles ici, et */
/* calculees par la fonction generale */
/* 'Ihistogramme'. */
/* */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,INIT(Ihistogramme_____etat,INVALIDE)));
/* Indicateur logique rendu necessaire par le fait qu'on ne peut initialiser */
/* l'histogramme a la compilation ; il prend donc soit l'etat 'VALIDE', */
/* soit l'etat 'INVALIDE'. */
DEFV(Common,DEFV(Int,DTb1(histogramme,COULEURS)));
/* L'histogramme est un vecteur comportant autant d'entrees qu'il y a de */
/* niveaux possibles ; dans chacune de celles-ci, on trouvera le nombre de */
/* points possedant ce niveau dans une image donnee. */
DEFV(Common,DEFV(Int,DTb1(histogramme_cumule,COULEURS)));
/* L'histogramme cumule donne pour chaque niveau la somme de tous les niveaux anterieurs */
/* y compris ce niveau courant. */
DEFV(Common,DEFV(Int,DTb1(classement_des_niveaux,COULEURS)));
/* Cette liste donne du 'V_BLANC' au 'V_NOIR' l'ordre des niveaux, du plus rempli */
/* (dit 'V_BLANC') au moins rempli (dit 'V_NOIR') ; de plus, cette liste est */
/* generee par des 'Int' et non des 'genere_p' afin d'eviter des problemes */
/* de tests numeriques sur ces valeurs... */
DEFV(Common,DEFV(Int,INIT(Ihistogramme______nombre_de_points_minimal,UNDEF)));
/* Donne le plus petit nombre de points possedant un meme niveau ; on */
/* notera qu'il s'agit d'un "Int" et non pas d'un "Positive", a cause */
/* d'eventuelles initialisations sur 'MOINS_L_INFINI'. */
DEFV(Common,DEFV(Int,INIT(Ihistogramme______nombre_de_points_maximal,UNDEF)));
/* Donne le plus grand nombre de points possedant un meme niveau ; on */
/* notera qu'il s'agit d'un "Int" et non pas d'un "Positive", a cause */
/* d'eventuelles initialisations sur 'MOINS_L_INFINI'. */
DEFV(Common,DEFV(Positive,INIT(Ihistogramme______nombre_de_points,UNDEF)));
/* Cette variable donne le nombre de points utilises par la fonction */
/* 'Ihistogramme' ; elle est rendue necessaire par la notion de "masque". */
DEFV(Common,DEFV(genere_p,INIT(Ihistogramme______niveau_minimal,NIVEAU_UNDEF)));
/* Cette variable donne le niveau minimal rencontre dans une image. */
DEFV(Common,DEFV(genere_p,INIT(Ihistogramme______niveau_maximal,NIVEAU_UNDEF)));
/* Cette variable donne le niveau maximal rencontre dans une image. */
DEFV(Common,DEFV(genere_p,INIT(Ihistogramme______niveau_moyen,NIVEAU_UNDEF)));
/* Cette variable donne le niveau moyen rencontre dans une image. */
DEFV(Common,DEFV(Positive,ZINT(Ihistogramme______hauteur_de_la_mire_de_barres_situee_a_la_base_de_l_histogramme,ZERO)));
/* Cette variable donne la hauteur de la mire de barres apparaissant systematiquement a la */
/* base des histogrammes (introduit le 20081006113508). */
/* */
/* Le 20081006152340, la valeur par defaut est passee de 'MIRE_Y_MINIMAL' a 'ZERO', cette */
/* derniere valeur etant plus logique puisque ne generant pas de barre lorsqu'un element de */
/* l'histogramme est nul... */
DEFV(Common,DEFV(Logical,ZINT(Ihistogramme______renormaliser_la_hauteur_de_la_mire_de_barres_par_rapport_au_maximum,VRAI)));
DEFV(Common,DEFV(Float,ZINT(Ihistogramme______facteur_de_renormalisation_hauteur_mire_de_barres_par_rapport_au_maximum
,FRA10(FRA10(FU))
)
)
);
/* Introduit le 20151124134322 afin de permettre d'avoir, si besoin est, des mires de */
/* barres comparables entre-elles pour differentes images. La valeur par defaut garantit */
/* la compatibilite anterieure... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D O N N E E S D E P R O J E C T I O N D U 3 - E S P A C E V E R S L E 2 - E S P A C E : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(projecteur_OX,PROJECTEUR_OX)));
/* Facteur de projection de l'axe des 'Z' sur l'axe des 'X', suivant la formule : */
/* */
/* X = X - (3/4).Z */
/* projete */
/* */
DEFV(Common,DEFV(Float,ZINT(projecteur_OY,PROJECTEUR_OY)));
/* Facteur de projection de l'axe des 'Z' sur l'axe des 'Y, suivant la formule : */
/* */
/* Y = Y - (1/2).Z */
/* projete */
/* */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N P A R A L L E L E D ' U N 4 - E S P A C E V E R S L E 3 - E S P A C E : */
/* */
/* */
/* Definition : */
/* */
/* On definit la projection parallele d'un */
/* point {x1,x2,x3,x4} appartenant a un espace */
/* a 4 dimensions sur un point {X,Y,Z} appartenant */
/* a un espace a 3 dimensions par : */
/* */
/* X = (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* X1 1 X2 2 X3 3 X4 4 */
/* */
/* Y = (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* Y1 1 Y2 2 Y3 3 Y4 4 */
/* */
/* Z = (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* Z1 1 Z2 2 Z3 3 Z4 4 */
/* */
/* la matrice 'A' etant initialisee implicitement */
/* avec les valeurs : */
/* */
/* | 1 0 0 1 | */
/* | 0 1 0 1 | */
/* | 0 0 1 1 | */
/* */
/* qui donnent de bons resultats... */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x1_X,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x2_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x3_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x4_X,FU___)));
/* Definition de la coordonnee 'X' apres projection 4D --> 3D (introduit le 20040331093927). */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x1_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x2_Y,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x3_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x4_Y,FU___)));
/* Definition de la coordonnee 'Y' apres projection 4D --> 3D (introduit le 20040331093927). */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x1_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x2_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x3_Z,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_4D_3D_x4_Z,FU___)));
/* Definition de la coordonnee 'Z' apres projection 4D --> 3D (introduit le 20040331093927). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N P E R S P E C T I V E D ' U N 4 - E S P A C E V E R S L E 3 - E S P A C E : */
/* */
/* */
/* Definition : */
/* */
/* On definit la projection perspective d'un */
/* point {x1,x2,x3,x4} appartenant a un espace */
/* a 4 dimensions sur un point {X,Y,Z} appartenant */
/* a un espace a 3 dimensions par. La transformation */
/* perspective est calculee au prealable : */
/* */
/* */
/* A.O1 + B.O2 + C.O3 + D.O4 + E */
/* R = --------------------------------------------------- */
/* A.(x1-O1) + B.(x2-O2) + C.(x3-O3) + D.(x4-O4) + E */
/* */
/* */
/* x1' = O1 + (-R).(x1-O1) */
/* x2' = O2 + (-R).(x2-O2) */
/* x3' = O3 + (-R).(x3-O3) */
/* x4' = O4 + (-R).(x4-O4) */
/* */
/* {A,B,C,D,E} etant un hyper-plan et */
/* {O1,O2,O3,O4} un hyper-observateur. */
/* */
/* Et enfin, le point {x1',x2',x3',x4'} fait */
/* l'objet de la projection paralelle definie */
/* precedemment : */
/* */
/* {x1',x2',x3',x4'} --> {X,Y,Z} */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_4D_X1,FDU)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_4D_X2,FDU)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_4D_X3,FDEUX)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_4D_X4,FZERO)));
/* Definition de l'hyper-Observateur (introduit le 20230310110208). */
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_4D_A,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_4D_B,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_4D_C,FU___)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_4D_D,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_4D_E,FZERO)));
/* Definition de l'hyper-Plan (introduit le 20230310110208). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N P A R A L L E L E D ' U N 6 - E S P A C E V E R S L E 3 - E S P A C E : */
/* */
/* */
/* Definition : */
/* */
/* On definit la projection parallele d'un */
/* point {x1,x2,x3,x4,x5,x6} appartenant a un espace */
/* a 6 dimensions sur un point {X,Y,Z} appartenant */
/* a un espace a 3 dimensions par : */
/* */
/* X = (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* X1 1 X2 2 X3 3 X4 4 X5 5 X6 6 */
/* */
/* Y = (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* Y1 1 Y2 2 Y3 3 Y4 4 Y5 5 Y6 6 */
/* */
/* Z = (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* Z1 1 Z2 2 Z3 3 Z4 4 Z5 5 Z6 6 */
/* */
/* la matrice 'A' etant initialisee implicitement */
/* avec les valeurs : */
/* */
/* | 1 0 0 1 0 0 | */
/* | 0 1 0 0 1 0 | */
/* | 0 0 1 0 0 1 | */
/* */
/* qui donnent de bons resultats... */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x1_X,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x2_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x3_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x4_X,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x5_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x6_X,FZERO)));
/* Definition de la coordonnee 'X' apres projection 6D --> 3D (introduit le 20040331093927). */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x1_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x2_Y,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x3_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x4_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x5_Y,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x6_Y,FZERO)));
/* Definition de la coordonnee 'Y' apres projection 6D --> 3D (introduit le 20040331093927). */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x1_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x2_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x3_Z,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x4_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x5_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_6D_3D_x6_Z,FU___)));
/* Definition de la coordonnee 'Z' apres projection 6D --> 3D (introduit le 20040331093927). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N P A R A L L E L E D ' U N 8 - E S P A C E V E R S L E 3 - E S P A C E : */
/* */
/* */
/* Definition : */
/* */
/* On definit la projection parallele d'un */
/* point {x1,x2,x3,x4,x5,x6,x7,x8} appartenant a un espace */
/* a 8 dimensions sur un point {X,Y,Z} appartenant */
/* a un espace a 3 dimensions par : */
/* */
/* X = (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* X1 1 X2 2 X3 3 X4 4 X5 5 X6 6 X7 7 X8 8 */
/* */
/* Y = (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* Y1 1 Y2 2 Y3 3 Y4 4 Y5 5 Y6 6 Y7 7 Y8 8 */
/* */
/* Z = (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) + (A .x ) */
/* Z1 1 Z2 2 Z3 3 Z4 4 Z5 5 Z6 6 Z7 7 Z8 8 */
/* */
/* la matrice 'A' etant initialisee implicitement */
/* avec les valeurs : */
/* */
/* | 1 0 0 1 1 0 0 1 | */
/* | 0 1 0 1 0 1 0 1 | */
/* | 0 0 1 1 0 0 1 1 | */
/* */
/* qui donnent de bons resultats... */
/* */
/* L'initialisation implicite est devenue le */
/* 20230207114915 : */
/* */
/* | 1 0 0 0 0 1 0 0 | */
/* | 0 1 0 0 0 1 0 0 | */
/* | 0 0 0 0 1 1 0 0 | */
/* */
/* qui permet de retrouver 'v $xiirs/CAYA.A1.0129' */
/* avec 'v $xiirs/CAYA.W3'... */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x1_X,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x2_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x3_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x4_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x5_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x6_X,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x7_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x8_X,FZERO)));
/* Definition de la coordonnee 'X' apres projection 8D --> 3D (introduit le 20230202142117). */
/* */
/* Lors de la mise au point de 'v $xiirs/CAYA.O3', le 20230207114915, je suis passe de : */
/* */
/* {FU___,FZERO,FZERO,FU___,FU___,FZERO,FZERO,FU___} */
/* */
/* a une version compatible avec la projection 4D --> 3D... */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x1_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x2_Y,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x3_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x4_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x5_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x6_Y,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x7_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x8_Y,FZERO)));
/* Definition de la coordonnee 'Y' apres projection 8D --> 3D (introduit le 20230202142117). */
/* */
/* Lors de la mise au point de 'v $xiirs/CAYA.O3', le 20230207114915, je suis passe de : */
/* */
/* {FZERO,FU___,FZERO,FU___,FZERO,FU___,FZERO,FU___} */
/* */
/* a une version compatible avec la projection 4D --> 3D... */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x1_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x2_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x3_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x4_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x5_Z,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x6_Z,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x7_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_8D_3D_x8_Z,FZERO)));
/* Definition de la coordonnee 'Z' apres projection 8D --> 3D (introduit le 20230202142117). */
/* */
/* Lors de la mise au point de 'v $xiirs/CAYA.O3', le 20230207114915, je suis passe de : */
/* */
/* {FZERO,FZERO,FU___,FU___,FZERO,FZERO,FU___,FU___} */
/* */
/* a une version compatible avec la projection 4D --> 3D... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N P E R S P E C T I V E D ' U N 8 - E S P A C E V E R S L E 3 - E S P A C E : */
/* */
/* */
/* Definition : */
/* */
/* On definit la projection perspective d'un */
/* point {x1,x2,x3,x4,x5,x6,x7,x8} appartenant a un espace */
/* a 8 dimensions sur un point {X,Y,Z} appartenant */
/* a un espace a 3 dimensions par. La transformation */
/* perspective est calculee au prealable : */
/* */
/* */
/* A.O1 + B.O2 + C.O3 + D.O4 + E.O5 + F.O6 +G.O7 + H.O8 + I */
/* R = --------------------------------------------------------------------------------------------------- */
/* A.(x1-O1) + B.(x2-O2) + C.(x3-O3) + D.(x4-O4) + D.(x5-O5) + D.(x6-O6) + D.(x7-O7) + D.(x8-O8) + I */
/* */
/* */
/* x1' = O1 + (-R).(x1-O1) */
/* x2' = O2 + (-R).(x2-O2) */
/* x3' = O3 + (-R).(x3-O3) */
/* x4' = O4 + (-R).(x4-O4) */
/* x5' = O5 + (-R).(x5-O5) */
/* x6' = O6 + (-R).(x6-O6) */
/* x7' = O7 + (-R).(x7-O7) */
/* x8' = O8 + (-R).(x8-O8) */
/* */
/* {A,B,C,D,E,F,G,H,I} etant un hyper-plan et */
/* {O1,O2,O3,O4,O5,O6,O7,O8} un hyper-observateur. */
/* */
/* Et enfin, le point {x1',x2',x3',x4',x5',x6',x7',x8'} fait */
/* l'objet de la projection paralelle definie */
/* precedemment : */
/* */
/* {x1',x2',x3',x4',x5',x6',x7',x8'} --> {X,Y,Z} */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X1,FDU)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X2,FDU)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X3,FDEUX)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X4,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X5,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X6,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X7,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_8D_X8,FZERO)));
/* Definition de l'hyper-Observateur (introduit le 20230316142734). */
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_A,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_B,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_C,FU___)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_D,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_E,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_F,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_G,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_H,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_8D_I,FZERO)));
/* Definition de l'hyper-Plan (introduit le 20230316142734). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N P A R A L L E L E D ' U N 1 6 - E S P A C E V E R S L E 3 - E S P A C E : */
/* */
/* */
/* Definition : */
/* */
/* On definit la projection parallele d'un */
/* point {x01,x02,...,x15,x16} appartenant a un espace */
/* a 16 dimensions sur un point {X,Y,Z} appartenant */
/* a un espace a 3 dimensions par : */
/* */
/* X = (A .x ) + (A .x ) + (...) + (A .x ) + (A .x ) */
/* X01 01 X02 02 X15 15 X16 16 */
/* */
/* Y = (A .x ) + (A .x ) + (...) + (A .x ) + (A .x ) */
/* Y01 01 Y02 02 Y15 15 Y16 16 */
/* */
/* Z = (A .x ) + (A .x ) + (...) + (A .x ) + (A .x ) */
/* Z01 01 Z02 02 Z15 15 Z16 16 */
/* */
/* la matrice 'A' etant initialisee implicitement */
/* avec les valeurs (introduites le 20230225100532) : */
/* */
/* | 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 | */
/* | 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 | */
/* | 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 | */
/* */
/* qui permet de retrouver 'v $xiirs/CAYA.A1.0129' */
/* avec 'v $xiirs/CAYA.O3'... */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x01_X,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x02_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x03_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x04_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x05_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x06_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x07_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x08_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x09_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x10_X,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x11_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x12_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x13_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x14_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x15_X,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x16_X,FZERO)));
/* Definition de la coordonnee 'X' apres projection 16D --> 3D. */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x01_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x02_Y,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x03_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x04_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x05_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x06_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x07_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x08_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x09_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x10_Y,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x11_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x12_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x13_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x14_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x15_Y,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x16_Y,FZERO)));
/* Definition de la coordonnee 'Y' apres projection 16D --> 3D. */
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x01_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x02_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x03_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x04_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x05_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x06_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x07_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x08_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x09_Z,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x10_Z,FU___)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x11_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x12_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x13_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x14_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x15_Z,FZERO)));
DEFV(Common,DEFV(Float,ZINT(coefficient_de_projection_parallele_01_16D_3D_x16_Z,FZERO)));
/* Definition de la coordonnee 'Z' apres projection 16D --> 3D. */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P R O J E C T I O N P E R S P E C T I V E D ' U N 1 6 - E S P A C E V E R S L E 3 - E S P A C E : */
/* */
/* */
/* Definition : */
/* */
/* On definit la projection perspective d'un */
/* point {x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15,x16} appartenant a un espace */
/* a 16 dimensions sur un point {X,Y,Z} appartenant */
/* a un espace a 3 dimensions par. Cette projection est */
/* tout a fait identique a celle definie pour un */
/* espace a 8 dimensions... */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X01,FDU)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X02,FDU)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X03,FDEUX)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X04,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X05,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X06,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X07,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X08,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X09,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X10,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X11,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X12,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X13,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X14,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X15,FZERO)));
DEFV(Common,DEFV(Float,ZINT(observateur_de_projection_perspective_01_16D_X16,FZERO)));
/* Definition de l'hyper-Observateur (introduit le 20230316142734). */
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_A,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_B,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_C,FU___)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_D,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_E,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_F,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_G,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_H,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_I,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_J,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_K,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_L,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_M,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_N,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_O,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_P,FZERO)));
DEFV(Common,DEFV(Float,ZINT(plan_de_projection_perspective_01_16D_Q,FZERO)));
/* Definition de l'hyper-Plan (introduit le 20230316142734). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N D I C A T E U R S D E C O N T R O L E U T I L E S A C E R T A I N E S C O M M A N D E S : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,ZINT(les_images_sont_standards,VRAI)));
DEFV(Common,DEFV(Logical,ZINT(les_imagesA_sont_standards,VRAI)));
DEFV(Common,DEFV(Logical,ZINT(les_imagesN_sont_standards,VRAI)));
DEFV(Common,DEFV(Logical,ZINT(les_imagesR_sont_standards,VRAI)));
DEFV(Common,DEFV(Logical,ZINT(les_images_standards_sont_a_renormaliser,FAUX)));
/* Indicateurs references via les procedures 'gI...(...)' definies dans quelques fichiers */
/* de type '$DEF' et qui permettent de savoir si les images a manipuler sont de type */
/* 'genere_Float' ("FAUX") ou bien de type 'genere_p' ("VRAI"), et dans ce dernier cas si */
/* elles doivent etre renormalisees ("VRAI") ou pas ("FAUX")... */
/* */
/* Le 20060307135422 furent introduits les indicateurs 'les_imagesA_sont_standards' et */
/* 'les_imagesR_sont_standards' permettant de traiter separemment, si besoin est, les */
/* images Arguments et les images Resultats. Cela fut rendu necessaire a cette date pour */
/* 'v $xci/filtre.01$K les_imagesA_sont_standards'... */
/* */
/* Le 20240812122154 fut introduit 'les_imagesN_sont_standards' par "symetrie" avec */
/* 'les_imagesA_sont_standards' pour 'v $xci/filtre.01$K les_imagesN_sont_standards' . */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* S U P E R - E C H E L L E S G R A P H I Q U E S : */
/* */
/*************************************************************************************************************************************/
#ifdef super_echelle_OZ_VERSION_01 /* Common,DEFV(Fonction,) : avec 'VERSION_01'. */
DEFV(Common,DEFV(Logical,_____super_echelle_OZ_VERSION_01));
#Aifdef super_echelle_OZ_VERSION_01 /* Common,DEFV(Fonction,) : avec 'VERSION_01'. */
#Eifdef super_echelle_OZ_VERSION_01 /* Common,DEFV(Fonction,) : avec 'VERSION_01'. */
#ifdef super_echelle_OZ_VERSION_02 /* Common,DEFV(Fonction,) : avec 'VERSION_02'. */
DEFV(Common,DEFV(Logical,_____super_echelle_OZ_VERSION_02));
#Aifdef super_echelle_OZ_VERSION_02 /* Common,DEFV(Fonction,) : avec 'VERSION_02'. */
#Eifdef super_echelle_OZ_VERSION_02 /* Common,DEFV(Fonction,) : avec 'VERSION_02'. */
/* Ces parametres ont ete implementes ici le 20001222141952, alors que jusqu'a present, */
/* ils figuraient dans '$xiii/vecteurs$FON'. Ceci est du a l'utilisation des super-echelles */
/* dans 'v $xiii/di_image$FON SUPER_ECHELLE' pour la fonction 'IFdensite(...)'. */
DEFV(Common,DEFV(Float,ZINT(super_echelle_OX,SUPER_ECHELLE_DE_BASE)));
DEFV(Common,DEFV(Float,ZINT(super_echelle_OY,SUPER_ECHELLE_DE_BASE)));
DEFV(Common,DEFV(Float,ZINT(super_echelle_OZ,SUPER_ECHELLE_DE_BASE)));
/* Definition des "super-echelles" sur les axes 'OX' et 'OY'. Ces deux "super-echelles" */
/* sont destinees a permettre plusieurs choses (notons-les 'seX' et 'seY') : */
/* */
/* 1-seX=seY=1 : dans ces conditions, un carre trace sur l'ecran aura les */
/* memes proportions que l'image elle-meme. Par exemple en */
/* format 'Pal', il donnera l'impression d'un rectangle */
/* horizontal. */
/* */
/* 2-seX=1, seY=(dimX/dimY) : dans ces conditions, un carre trace sur l'ecran aura bien */
/* l'air d'un "grand" carre. */
/* */
/* 3-seX=(dimY/dimX), seY=1 : dans ces conditions, un carre trace sur l'ecran aura bien */
/* l'air d'un "petit" carre (par rapport au format ci-dessus). */
/* */
/* La "super-echelle" sur l'axe 'OZ' a ete ajoutee le 20001224174626 afin de resoudre */
/* un probleme recontre dans 'v $xiii/di_album$FON AFdensite'. */
DEFV(Common,DEFV(Logical,ZINT(super_echelle_____utiliser_le_mode_rectangulaire,VRAI)));
DEFV(Common,DEFV(Logical,ZINT(super_echelle_____utiliser_le_mode_carre__grand_carre,VRAI)));
/* Choix des modes par defaut introduit le 20051216100446. On rappelle qu'en utilisant */
/* 'super_echelle_OZ_VERSION_02' et en notant {SX,SY,SZ} les "super-echelles" sur les */
/* axes {OX,OY,OZ} respectivement, on a : */
/* */
/* RECTANGULAIRE : */
/* SX=1 */
/* SY=1 */
/* SZ=1 */
/* */
/* GRAND CARRE : */
/* SX=1 */
/* SY=dimX/dimY (=1.35 en mode 'Pal' par exemple) */
/* SZ=1 */
/* */
/* PETIT CARRE : */
/* SX=dimY/dimX (=0.73 en mode 'Pal' par exemple) */
/* SY=1 */
/* SZ=1 */
/* */
/* Ceci a ete deplace de '$xiii/vecteurs$FON' a ici le 20051216103915... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A R R O N D I S D E C O N V E R S I O N P O U R ' Afloat_std(...) ' : */
/* */
/*************************************************************************************************************************************/
/* ATTENTION : cette definition ne peut etre dans 'v $xiii/conversion$FON 20020315122536' */
/* car, en effet, elle est referencee dans 'v $xig/fonct$vv$DEF 20020315122536' et donc */
/* dans toutes les commandes '$K'... */
DEFV(Common,DEFV(Float,ZINT(Afloat_std_____translation_d_arrondi_au_plus_proche_entier
,TRANSLATION_D_ARRONDI_AU_PLUS_PROCHE_ENTIER
)
)
);
/* Le 20020315122536, cette constante a ete introduite de facon a introduire un 'ARRI(...)' */
/* lors de la conversion 'GENP(...)', mais de facon a assurer la compatibilite avec les */
/* generations anterieures (il suffit pour cela d'annuler ce parametre...). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A R R O N D I S D E C O N V E R S I O N P O U R ' Ifloat_std(...) ' : */
/* */
/*************************************************************************************************************************************/
/* ATTENTION : cette definition ne peut etre dans 'v $xiii/conversion$FON 20020315122536' */
/* car, en effet, elle est referencee dans 'v $xig/fonct$vv$DEF 20020315122536' et donc */
/* dans toutes les commandes '$K'... */
DEFV(Common,DEFV(Float,ZINT(Ifloat_std_____translation_d_arrondi_au_plus_proche_entier
,TRANSLATION_D_ARRONDI_AU_PLUS_PROCHE_ENTIER
)
)
);
/* Le 20020315122536, cette constante a ete introduite de facon a introduire un 'ARRI(...)' */
/* lors de la conversion 'GENP(...)', mais de facon a assurer la compatibilite avec les */
/* generations anterieures (il suffit pour cela d'annuler ce parametre...). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* R E E C H A N T I L L O N N A G E D ' U N E I M A G E : */
/* */
/*************************************************************************************************************************************/
/* ATTENTION : cette definition ne peut etre dans 'v $xiii/di_image$FON' car, en effet, */
/* elle est referencee dans 'v $xiii/di_image$DEF gINITIALISATION_DES_INTERPOLATIONS...' */
/* qui est lui-meme reference dans differents '$FON' (en particulier 'v $xiii/di_image$FON' */
/* et 'v $xiipf/fonction.2$FON VOISINAGE_POINT_'). */
DEFV(Common,DEFV(Logical,ZINT(gINITIALISATION_DES_INTERPOLATIONS_BILINEAIRE_ET_BICUBIQUE_____compatibilite_20090225,FAUX)));
/* Le 20090225133105, cet indicateur a ete introduit... */
DEFV(Common,DEFV(Int,ZINT(VOISINAGE_POINT_BILINEAIRE_____pasX,PasX)));
DEFV(Common,DEFV(Int,ZINT(VOISINAGE_POINT_BILINEAIRE_____pasY,PasY)));
/* Pas d'echantillonnage de 'VOISINAGE_POINT_BILINEAIRE(...)' (introduit le 20160329120812). */
DEFV(Common,DEFV(Int,ZINT(VOISINAGE_POINT_BICUBIQUE_____pasX,PasX)));
DEFV(Common,DEFV(Int,ZINT(VOISINAGE_POINT_BICUBIQUE_____pasY,PasY)));
/* Pas d'echantillonnage de 'VOISINAGE_POINT_BICUBIQUE(...)' (introduit le 20160329120812). */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O T I O N D ' A S S O C I A T I O N D ' I M A G E S : */
/* */
/* */
/* Definition : */
/* */
/* On se donne ici la possibilite */
/* d'associer deux images point a */
/* point a l'aide de deux matrices */
/* qui donnent respectivement pour */
/* chaque point {X,Y}, les coordonnees */
/* X' et Y' du point qui lui est */
/* associe. */
/* */
/* Deux images de type 'I' sont ainsi */
/* definies : */
/* */
/* Iassociation_de_voisinage_____X : elle donne pour chaque point */
/* {X,Y} l'abscisse 'X' du point */
/* associe, */
/* Iassociation_de_voisinage_____Y : elle donne pour chaque point */
/* {X,Y} l'ordonnee 'Y' du point */
/* associe. */
/* */
/*************************************************************************************************************************************/
/* Deplace depuis 'v $xiii/tri_image$FON' le 20101011185144 car c'est en effet plus */
/* logique que cela soit ici et ce en particulier depuis l'introduction de la fonction */
/* 'v $xiii/pent_image$FON IFinterpolation_locale_de_voisinage'... */
DEFV(Common,DEFV(Statique,DEFV(imageI,Iassociation_de_voisinage_____X)));
/* Definition de la partie 'X' des associations, */
DEFV(Common,DEFV(Statique,DEFV(imageI,Iassociation_de_voisinage_____Y)));
/* Definition de la partie 'Y' des associations. */
DEFV(Common,DEFV(Logical,INIT(Iassociation_de_voisinage_____X_association__et__Y_association__sont_initialisees,FAUX)));
/* Afin de savoir si {Iassociation_de_voisinage_____X,Iassociation_de_voisinage_____Y} */
/* sont initialisees, par exemple, en etant passe au moins une fois dans */
/* 'Iassociation_de_voisinage(...)'. */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C O N V E R S I O N S " RVB " <--> " HLS " : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,ZINT(PASSAGE_RVB_HLS_____compatibilite_20120911,FAUX)));
/* Introduit le 20120911133745 pour garantir la compatibilite anterieure apres la correction */
/* d'une anomalie dans 'PASSAGE_RVB_HLS(...)'. */
DEFV(Common,DEFV(Logical,ZINT(PASSAGE_HLS_RVB_____compatibilite_20240327,FAUX)));
/* Introduit le 20240327181436 pour garantir la compatibilite anterieure... */
_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* C O N T R O L E D E C E R T A I N S M E S S A G E S D ' E R R E U R : */
/* */
/*************************************************************************************************************************************/
DEFV(Common,DEFV(Logical,ZINT(PASSAGE_HLS_RVB_____editer_les_messages_d_erreur,VRAI)));
/* Le 20111206112139, cet indicateur a ete introduit. On notera qu'il figure ici car, en */
/* effet, il ne peut etre dans 'v $xiii/conversion$FON PASSAGE_HLS_RVB', puisque cette */
/* procedure est aussi referencee dans 'v $xrv/HLS_RVB.01$K PASSAGE_HLS_RVB'... */
_______________________________________________________________________________________________________________________________________