/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D ' U N E I M A G E A P A R T I R D E D E U X */
/* L I S T E S D E C O O R D O N N E E S C A R T E S I E N N E S : */
/* */
/* */
/* Nota : */
/* */
/* Il est possible de chainer les points entre */
/* eux via 'chainer_les_points'. Mais il est aussi */
/* possible de "simuler" ce chainage (mais pas "en etoile") */
/* des points {X,Y,Z} arguments en utilisant au */
/* prealable 'v $xci/interpole.01$K' qui interpole */
/* lineairement entre deux points consecutifs. */
/* */
/* */
/* Note : */
/* */
/* Le 20161114160503, je note qu'une */
/* utilisation "neutre" possible est la */
/* suivante : */
/* */
/* */
/* :Debut_listG_load_image__store_image: */
/* */
/* $Z $xci/valeurs_imag$X \ */
/* $Z denormalisees=VRAI \ */
/* $Z premiere=1 \ */
/* $Z derniere=$tailleI \ */
/* $Z PX=1 \ */
/* $Z PY=0 \ */
/* $Z >& $xTV/COORDONNEES$COORD_X */
/* $Z $xci/valeurs_imag$X \ */
/* $Z denormalisees=VRAI \ */
/* $Z premiere=1 \ */
/* $Z derniere=$tailleI \ */
/* $Z PX=0 \ */
/* $Z PY=1 \ */
/* $Z >& $xTV/COORDONNEES$COORD_Y */
/* $Z */
/* $Z $xrv/load_image$X \ */
/* $Z A=$xTV/IMAGE.1 \ */
/* $Z LISTE_X=$xTV/COORDONNEES$COORD_X \ */
/* $Z LISTE_Y=$xTV/COORDONNEES$COORD_Y \ */
/* $Z >& $xTV/COORDONNEES$LUMIN */
/* $Z $xrv/store_image$X \ */
/* $Z ne=0 \ */
/* $Z LISTE_X=$xTV/COORDONNEES$COORD_X \ */
/* $Z LISTE_Y=$xTV/COORDONNEES$COORD_Y \ */
/* $Z LISTE_NIVEAU=$xTV/COORDONNEES$LUMIN \ */
/* $Z R=$xTV/IMAGE.2 \ */
/* $Z Ndenormalises=VRAI \ */
/* $Z Xdenormalisees=VRAI \ */
/* $Z Ydenormalisees=VRAI */
/* */
/* :Fin_listG_load_image__store_image: */
/* */
/* */
/* A la fin de ce processus, les deux images */
/* '$xTV/IMAGE.1/ et '$xTV/IMAGE.2' doivent */
/* evidemment etre identiques... */
/* */
/* */
/* Author of '$xrv/store_image$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20051207151403). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S : */
/* */
/*************************************************************************************************************************************/
#include INCLUDES_BASE
#include image_image_IMAGESF_EXT
/* Introduit le 20121110112405... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* V A L E U R S I M P L I C I T E S D E S P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define LES_COORDONNEES_X_SONT_NORMALISEES \
VRAI
#define LES_COORDONNEES_Y_SONT_NORMALISEES \
VRAI
#define LES_NIVEAUX_______SONT_NORMALISES_ \
VRAI
/* Introduit le 20140430152305 pour eviter des problemes d'arrondis lors des operations */
/* de denormalisation... */
#define FACTEUR_DES_COORDONNEES_X \
FU
#define TRANSLATION_DENORMALISEE_DES_COORDONNEES_X \
ZERO
#define FACTEUR_DES_COORDONNEES_Y \
FU
#define TRANSLATION_DENORMALISEE_DES_COORDONNEES_Y \
ZERO
#define FACTEUR_DES_NIVEAUX______ \
FU
#define TRANSLATION___NORMALISEE_DES_NIVEAUX______ \
ZERO
/* Introduit le 20210309160941 pour, par exemple, visualiser des noyaux de convolution... */
/* */
/* Par exemple, avec 'v $xci/nettete.01$X', on pourra faire : */
/* */
/* $xrv/VisualisationNoyauConvolution.11$Z $xci/nettete.01$X */
/* */
/* ce qui donne une image centree du noyau de convolution par defaut... */
#define CUMULER_LES_NIVEAUX \
FAUX
#define PONDERATION_CUMULER_LES_NIVEAUX_ADD2 \
FU
#define PONDERATION_CUMULER_LES_NIVEAUX_MAX2 \
FZERO
/* Introduit le 20131119160651 afin de permettre de choisir entre ranger les niveaux avec */
/* "ecrasement" ('FAUX') ou bien les cumuler ('VRAI') ? Les ponderations de choix de la */
/* methode de cumul ont ete introduites le 20190116141516 et les valeurs par defaut */
/* garantissent la compatibilite anterieure... */
#define DISPERSER_LES_NIVEAUX_AUX_quatre_COINS_DES_CARRES_ELEMENTAIRES \
FAUX
#define ECRASER_LES_NIVEAUX_ANTERIEURS \
FAUX
/* Introduit le 20140101151916 afin de permettre la dispersion "interpole" de chaque niveau */ \
/* aux quatre coins des carres elementaires... */
#define FAIRE_UN_EPAISSISSEMENT_CIRCULAIRE \
FAUX \
/* Introduit le 20120517082358 afin de permettre de choisir entre un epaississement carre */ \
/* ('FAUX') et un epaississement circulaire ('VRAI'). */
#define DEMI_PAVE_X \
ZERO
#define DEMI_PAVE_Y \
ZERO
/* Introduit le 20120430094519 afin de pouvoir epaissir les points, mais surtout par */
/* "symetrie" avec 'v $xrv/store_album$K 20120429165655'... */
#define DEMI_PAVE_XG \
ZERO
#define DEMI_PAVE_YG \
ZERO
#define DEMI_PAVE_XD \
ZERO
#define DEMI_PAVE_YD \
ZERO
/* Introduit le 20120430094519 afin de generaliser le processus d'epaississement symetrique */
/* precedent, sans perdre la compatibilite avec lui... */
#define FAIRE_DES_PAVES_HOMOTHETIQUES \
FAUX \
/* Introduit le 20170322095152 pour permettre de faire des paves "homothetiques", */ \
/* c'est-a-dire des paves dont la taille est fonction de '$formatI'... */
#define TESTER_LES_HORS_BORNES_NATURELLES \
FAUX \
/* Introduit le 20111113113031 pour ne pas tester les "hors bornes naturelles"... */ \
/* */ \
/* La valeur par defaut est passee de 'VRAI' a 'FAUX' le 20120417134325, depuis que */ \
/* 'SUPER_cDENORMALISE_O(...)' ont ete introduits car, en effet, ces procedures peuvent */ \
/* generer des valeurs hors bornes naturelles... */
#define EDITER_LE_MESSAGE_DES_HORS_BORNES_NATURELLES \
VRAI \
/* Introduit le 20120124075103 pour gerer le message des "hors bornes naturelles"... */
#define TRACER_L__HORIZONTALE_DE_CHAQUE_POINT \
FAUX
#define TRACER_LA_VERTICALE___DE_CHAQUE_POINT \
FAUX
/* Introduit le 20160323083049 afin de pouvoir materialiser l'horizontale et la verticale */
/* de chaque point... */
#define CHAINER_LES_POINTS \
FAUX
#define CHAINER_LES_POINTS_EN_ETOILE \
FAUX
/* Introduit le 20120124075908 pour permettre le chainage des points entre-eux et complete */
/* le 20120129101749 afin de permettre le chainage en etoile (par rapport au premier point). */
#define UTILISER_LE_MODE_HISTOGRAMME \
FAUX
#define UTILISER_LE_MODE_HISTOGRAMME_HORIZONTAL \
FAUX
#define Xmin_HISTOGRAMME_HORIZONTAL \
Xmin
#define UTILISER_LE_MODE_HISTOGRAMME_VERTICAL \
VRAI
#define Ymin_HISTOGRAMME_VERTICAL \
Ymin
/* Introduit le 20131201094231 et utile si 'IL_NE_FAUT_PAS(chainer_les_points)' : cela */
/* permet de materialiser chaque point par un segment vertical et/ou horizontal... */
/* */
/* Cela fut complete par {Xmin,Ymin} le 20210826103359... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S F I C H I E R S : */
/* */
/*************************************************************************************************************************************/
#include xrv/ARITHMET.1d.I"
/* Passage a l'allocation dynamique le 20060214193405... */
#include xrv/ARITHMET.21.I"
#include xrv/champs_5.41.I"
#define X_IMPLICITE \
FZERO
#define Y_IMPLICITE \
FZERO
#define Z_IMPLICITE \
FZERO
gGENERATION_D_UN_FICHIER(fichier_LISTE_X,liste_initiale_des_X);
gGENERATION_D_UN_FICHIER(fichier_LISTE_Y,liste_initiale_des_Y);
gGENERATION_D_UN_FICHIER(fichier_LISTE_Z,liste_initiale_des_Z);
/* Definition en memoire des fichiers de coordonnees cartesiennes. Le fichier des */
/* coordonnees 'Z' a ete introduit le 20060208161951... */
#define ELEMENT_DU_FICHIER_LISTE_X(index) \
gELEMENT_DU_FICHIER(liste_initiale_des_X,index)
#define ELEMENT_DU_FICHIER_LISTE_Y(index) \
gELEMENT_DU_FICHIER(liste_initiale_des_Y,index)
#define ELEMENT_DU_FICHIER_LISTE_Z(index) \
gELEMENT_DU_FICHIER(liste_initiale_des_Z,index)
/* Acces a un element courant des fichiers de coordonnees cartesiennes. */
#define NIVEAU_IMPLICITE \
FU
gGENERATION_D_UN_FICHIER(fichier_LISTE_NIVEAU,liste_initiale_des_NIVEAU);
/* Definition en memoire du fichier des niveaux... */
#define ELEMENT_DU_FICHIER_LISTE_NIVEAU(index) \
gELEMENT_DU_FICHIER(liste_initiale_des_NIVEAU,index)
/* Acces a un element courant du fichier des niveaux... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E L ' E P A I S S I S S E M E N T : */
/* */
/*************************************************************************************************************************************/
#define DEMI_PAVE_X_IMPLICITE \
FLOT(DEMI_PAVE_X)
#define DEMI_PAVE_Y_IMPLICITE \
FLOT(DEMI_PAVE_Y)
gGENERATION_D_UN_FICHIER(fichier_LISTE_DEMI_PAVE_X,liste_initiale_des_DEMI_PAVE_X);
gGENERATION_D_UN_FICHIER(fichier_LISTE_DEMI_PAVE_Y,liste_initiale_des_DEMI_PAVE_Y);
/* Definition en memoire des fichiers des "demi-paves" (introduits le 20160428093732). */
#define ELEMENT_DU_FICHIER_DEMI_PAVE_X(index) \
INTE(gELEMENT_DU_FICHIER(liste_initiale_des_DEMI_PAVE_X,index))
#define ELEMENT_DU_FICHIER_DEMI_PAVE_Y(index) \
INTE(gELEMENT_DU_FICHIER(liste_initiale_des_DEMI_PAVE_Y,index))
/* Acces a un element courant des fichiers des "demi-paves" (introduits le 20160428093732). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D ' U N E I M A G E A P A R T I R D E D E U X */
/* L I S T E S D E C O O R D O N N E E S C A R T E S I E N N E S : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
#include xrv/ARITHMET.22.I"
#include xci/valeurs.03.I"
DEFV(CHAR,INIT(POINTERc(nom_imageA),NOM_PIPE_Local));
/* Nom de l'eventuelle image Argument (de fond) introduit le 20181008143042... */
DEFV(CHAR,INIT(POINTERc(nom_imageR),NOM_PIPE_Local));
/* Nom de l'image a generer... */
DEFV(Positive,INIT(dimension_de_l_espace,BI_DIMENSIONNEL));
/* Dimension de l'espace des coordonnees ({X.Y} par defaut...). */
DEFV(Logical,INIT(les_coordonnees_X_sont_normalisees,LES_COORDONNEES_X_SONT_NORMALISEES));
DEFV(Logical,INIT(les_coordonnees_Y_sont_normalisees,LES_COORDONNEES_Y_SONT_NORMALISEES));
DEFV(Logical,INIT(les_niveaux_______sont_normalises_,LES_NIVEAUX_______SONT_NORMALISES_));
/* Introduit le 20140430152305 pour eviter des problemes d'arrondis lors des operations */
/* de denormalisation... */
DEFV(Float,INIT(facteur_des_coordonnees_X,FACTEUR_DES_COORDONNEES_X));
DEFV(Int,INIT(translation_denormalisee_des_coordonnees_X,TRANSLATION_DENORMALISEE_DES_COORDONNEES_X));
DEFV(Float,INIT(facteur_des_coordonnees_Y,FACTEUR_DES_COORDONNEES_Y));
DEFV(Int,INIT(translation_denormalisee_des_coordonnees_Y,TRANSLATION_DENORMALISEE_DES_COORDONNEES_Y));
DEFV(Float,INIT(facteur_des_niveaux______,FACTEUR_DES_NIVEAUX______));
DEFV(Float,INIT(translation___normalisee_des_niveaux______,TRANSLATION___NORMALISEE_DES_NIVEAUX______));
/* Introduit le 20210309160941 pour, par exemple, visualiser des noyaux de convolution... */
DEFV(Logical,INIT(cumuler_les_niveaux,CUMULER_LES_NIVEAUX));
DEFV(Float,INIT(ponderation_cumuler_les_niveaux_ADD2,PONDERATION_CUMULER_LES_NIVEAUX_ADD2));
DEFV(Float,INIT(ponderation_cumuler_les_niveaux_MAX2,PONDERATION_CUMULER_LES_NIVEAUX_MAX2));
/* Introduit le 20131119160651 afin de permettre de choisir entre ranger les niveaux avec */
/* "ecrasement" ('FAUX') ou bien les cumuler ('VRAI') ? Les ponderations de choix de la */
/* methode de cumul ont ete introduites le 20190116141516 et les valeurs par defaut */
/* garantissent la compatibilite anterieure... */
DEFV(Logical,INIT(disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires
,DISPERSER_LES_NIVEAUX_AUX_quatre_COINS_DES_CARRES_ELEMENTAIRES
)
);
DEFV(Logical,INIT(ecraser_les_niveaux_anterieurs,ECRASER_LES_NIVEAUX_ANTERIEURS));
/* Introduit le 20140101151916 afin de permettre la dispersion "interpole" de chaque niveau */
/* aux quatre coins des carres elementaires... */
DEFV(Logical,INIT(faire_un_epaississement_circulaire,FAIRE_UN_EPAISSISSEMENT_CIRCULAIRE));
/* Introduit le 20120517082358 afin de permettre de choisir entre un epaississement carre */
/* ('FAUX') et un epaississement circulaire ('VRAI'). */
DEFV(Int,INIT(demi_pave_XG,DEMI_PAVE_XG));
DEFV(Int,INIT(demi_pave_YG,DEMI_PAVE_YG));
DEFV(Int,INIT(demi_pave_XD,DEMI_PAVE_XD));
DEFV(Int,INIT(demi_pave_YD,DEMI_PAVE_YD));
/* Introduit le 20120430184507 afin de generaliser le processus d'epaississement symetrique */
/* precedent, sans perdre la compatibilite avec lui... */
DEFV(Logical,INIT(faire_des_paves_homothetiques,FAIRE_DES_PAVES_HOMOTHETIQUES));
/* Introduit le 20170322095152 pour permettre de faire des paves "homothetiques", */
/* c'est-a-dire des paves dont la taille est fonction de '$formatI'... */
DEFV(Logical,INIT(tester_les_hors_bornes_naturelles,TESTER_LES_HORS_BORNES_NATURELLES));
/* Introduit le 20111113112752 pour ne pas tester les "hors bornes naturelles"... */
/* */
/* La valeur par defaut est passee de 'VRAI' a 'FAUX' le 20120417134325, depuis que */
/* 'SUPER_cDENORMALISE_O(...)' ont ete introduits car, en effet, ces procedures peuvent */
/* generer des valeurs hors bornes naturelles... */
DEFV(Logical,INIT(editer_le_message_des_hors_bornes_naturelles,EDITER_LE_MESSAGE_DES_HORS_BORNES_NATURELLES));
/* Introduit le 20120124075103 pour gerer le message des "hors bornes naturelles"... */
DEFV(Logical,INIT(tracer_l__horizontale_de_chaque_point,TRACER_L__HORIZONTALE_DE_CHAQUE_POINT));
DEFV(Logical,INIT(tracer_la_verticale___de_chaque_point,TRACER_LA_VERTICALE___DE_CHAQUE_POINT));
/* Introduit le 20160323083049 afin de pouvoir materialiser l'horizontale et la verticale */
/* de chaque point... */
DEFV(Logical,INIT(chainer_les_points,CHAINER_LES_POINTS));
DEFV(Logical,INIT(chainer_les_points_en_etoile,CHAINER_LES_POINTS_EN_ETOILE));
/* Introduit le 20120124075908 pour permettre le chainage des points entre-eux et complete */
/* le 20120129101749 afin de permettre le chainage en etoile (par rapport au premier point). */
DEFV(Logical,INIT(utiliser_le_mode_histogramme,UTILISER_LE_MODE_HISTOGRAMME));
DEFV(Logical,INIT(utiliser_le_mode_histogramme_horizontal,UTILISER_LE_MODE_HISTOGRAMME_HORIZONTAL));
DEFV(Int,INIT(Xmin_histogramme_horizontal,Xmin_HISTOGRAMME_HORIZONTAL));
DEFV(Logical,INIT(utiliser_le_mode_histogramme_vertical,UTILISER_LE_MODE_HISTOGRAMME_VERTICAL));
DEFV(Int,INIT(Ymin_histogramme_vertical,Ymin_HISTOGRAMME_VERTICAL));
/* Introduit le 20131201094231 et utile si 'IL_NE_FAUT_PAS(chainer_les_points)' : cela */
/* permet de materialiser chaque point par un segment vertical et/ou horizontal... */
/* */
/* Cela fut complete par {Xmin,Ymin} le 20210826103359... */
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(PROCESS_ARGUMENT_I("nombre_elements=""ne=",nombre_d_elements
,BLOC(VIDE;)
,BLOC(Bblock
PRINT_AVERTISSEMENT("'ne=' doit etre defini avant toute entree de fichiers");
Eblock
)
);
PROCESS_ARGUMENTS_DE_DEFINITION_DES_FICHIERS_01;
PROKESF_ARGUMENT_FICHIER("LISTE_X="
,fichier_LISTE_X
,liste_initiale_des_X
,X_IMPLICITE
,lTRANSFORMAT_0d
,iGENERATION_D_UN_FICHIER
);
PROKESF_ARGUMENT_FICHIER("LISTE_Y="
,fichier_LISTE_Y
,liste_initiale_des_Y
,Y_IMPLICITE
,lTRANSFORMAT_0d
,iGENERATION_D_UN_FICHIER
);
PROKESF_ARGUMENT_C("LISTE_Z=",fichier_LISTE_Z
,BLOC(VIDE;)
,BLOC(VIDE;)
,BLOC(
Bblock
lTRANSFORMAT_0d(fichier_LISTE_Z
,liste_initiale_des_Z
,Z_IMPLICITE
);
EGAL(dimension_de_l_espace,TRI_DIMENSIONNEL);
/* Lorsque le fichier 'LISTE_Z', on force le mode {X,Y,Z} (introduit le 20060208161951...). */
Eblock
)
,BLOC(iGENERATION_D_UN_FICHIER(liste_initiale_des_Z,Z_IMPLICITE);)
);
PROKESF_ARGUMENT_FICHIER("LISTE_NIVEAU="
,fichier_LISTE_NIVEAU
,liste_initiale_des_NIVEAU
,NIVEAU_IMPLICITE
,lTRANSFORMAT_0d
,iGENERATION_D_UN_FICHIER
);
PROKESF_ARGUMENT_FICHIER("LISTE_DEMI_PAVE_X=""demi_pave_X=""dpX="
,fichier_LISTE_DEMI_PAVE_X
,liste_initiale_des_DEMI_PAVE_X
,DEMI_PAVE_X_IMPLICITE
,lTRANSFORMAT_0d
,iGENERATION_D_UN_FICHIER
);
PROKESF_ARGUMENT_FICHIER("LISTE_DEMI_PAVE_Y=""demi_pave_Y=""dpY="
,fichier_LISTE_DEMI_PAVE_Y
,liste_initiale_des_DEMI_PAVE_Y
,DEMI_PAVE_Y_IMPLICITE
,lTRANSFORMAT_0d
,iGENERATION_D_UN_FICHIER
);
GET_ARGUMENT_I("premier=",premier_element_d_un_fichier);
GET_ARGUMENT_I("pas=",pas_de_parcours_d_un_fichier);
/* Parametres introduits le 20211004113151... */
GET_ARGUMENT_C("imageA=""A=""F=""fond=",nom_imageA);
/* Arguments introduits le 20181008143042... */
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_L("standard=",les_images_sont_standards);
/* Argument introduit le 20121110112352... */
GET_ARGUMENT_P("niveau_du_fond=""noir=",Inoir_____NOIR);
/* Argument introduit le 20210819133729 pour 'v $xiirv/.BOLT.11.1.$U', mais en fait non */
/* utilise puisque redondant avec "imageA=""A=""F=""fond="... */
GET_ARGUMENT_L("cumuler_niveaux=""cumuler=""cumul=",cumuler_les_niveaux);
GET_ARGUMENT_F("cumuler_ADD2=""ADD2=",ponderation_cumuler_les_niveaux_ADD2);
GET_ARGUMENT_F("cumuler_MAX2=""MAX2=",ponderation_cumuler_les_niveaux_MAX2);
/* Argument introduit le 20131119160651 et complete le 20190116141516 par les ponderations. */
GET_ARGUMENT_L("Xnormalisees=""Xnorm=""Xn=",les_coordonnees_X_sont_normalisees);
GET_ARGUMENT_N("Xdenormalisees=""Xdenorm=""Xdn=",les_coordonnees_X_sont_normalisees);
GET_ARGUMENT_L("Ynormalisees=""Ynorm=""Yn=",les_coordonnees_Y_sont_normalisees);
GET_ARGUMENT_N("Ydenormalisees=""Ydenorm=""Ydn=",les_coordonnees_Y_sont_normalisees);
GET_ARGUMENT_L("Nnormalises=""Nnorm=""Nn=",les_niveaux_______sont_normalises_);
GET_ARGUMENT_N("Ndenormalises=""Ndenorm=""Ndn=",les_niveaux_______sont_normalises_);
/* Argument introduit le 20140430152305... */
GET_ARGUMENT_F("facteur_X=""fX=",facteur_des_coordonnees_X);
GET_ARGUMENT_I("translation_X=""tX=",translation_denormalisee_des_coordonnees_X);
GET_ARGUMENT_F("facteur_Y=""fY=",facteur_des_coordonnees_Y);
GET_ARGUMENT_I("translation_Y=""tY=",translation_denormalisee_des_coordonnees_Y);
GET_ARGUMENT_F("facteur_niveaux=""fn=",facteur_des_niveaux______);
GET_ARGUMENT_F("translation_niveaux=""tn=",translation___normalisee_des_niveaux______);
/* Arguments introduits le 20210309160941... */
GET_ARGUMENT_L("disperser=",disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires);
GET_ARGUMENT_N("concentrer=",disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires);
GET_ARGUMENT_L("ecraser_niveaux=""ecraser=",ecraser_les_niveaux_anterieurs);
/* Arguments introduits le 20140101151916... */
GET_ARGUMENT_L("epaississement_circulaire=""ecirculaire=""circulaire=",faire_un_epaississement_circulaire);
GET_ARGUMENT_N("epaississement_carre=""ecarre=",faire_un_epaississement_circulaire);
/* Arguments introduits le 20120517082358. On notera l'absence de "carre=" a cause de */
/* 'v $xig/fonct$vv$DEF carre='... */
GET_ARGUMENT_I("demi_pave_XG=""dpXG=",demi_pave_XG);
GET_ARGUMENT_I("demi_pave_YG=""dpYG=",demi_pave_YG);
GET_ARGUMENT_I("demi_pave_XD=""dpXD=",demi_pave_XD);
GET_ARGUMENT_I("demi_pave_YD=""dpYD=",demi_pave_YD);
/* Arguments introduits le 20120430184507... */
GET_ARGUMENT_L("paves_homothetiques=""ph=",faire_des_paves_homothetiques);
/* Arguments introduits le 20170322095152... */
GET_ARGUMENT_L("tester_hors_bornes_naturelles=""hors_bornes_naturelles=""hbn="
,tester_les_hors_bornes_naturelles
);
/* Arguments introduits le 20111113113031... */
GET_ARGUMENT_L("editer_hors_bornes_naturelles=""ehbn="
,editer_le_message_des_hors_bornes_naturelles
);
/* Arguments introduits le 20120124075103... */
GET_ARGUMENT_L("horizontale=""ho=",tracer_l__horizontale_de_chaque_point);
GET_ARGUMENT_L("verticale=""ve=",tracer_la_verticale___de_chaque_point);
/* Arguments introduits le 20160323083049... */
GET_ARGUMENT_L("chainer_points=""cp=",chainer_les_points);
GET_ARGUMENT_L("chainer_points_etoile=""cpe=",chainer_les_points_en_etoile);
/* Arguments introduits le 20111113113031 et completes le 20120129101749... */
GET_ARGUMENT_L("histogramme=""h=",utiliser_le_mode_histogramme);
GET_ARGUMENT_L("histogramme_horizontal=""hh=",utiliser_le_mode_histogramme_horizontal);
GET_ARGUMENT_I("Xmin_histogramme_horizontal=""hhXmin=",Xmin_histogramme_horizontal);
GET_ARGUMENT_L("histogramme_vertical=""hv=",utiliser_le_mode_histogramme_vertical);
GET_ARGUMENT_I("Ymin_histogramme_vertical=""hvYmin=",Ymin_histogramme_vertical);
/* Arguments introduits le 20131201094231 et completes par {Xmin,Ymin} le 20210826103359... */
)
);
Test(IFET(EST_FAUX(les_images_sont_standards)
,IL_FAUT(chainer_les_points)
)
)
/* Test introduit le 20121110112405... */
Bblock
PRINT_ATTENTION("le chainage des points n'est pas possible pour les images non standards");
EGAL(chainer_les_points,FAUX);
/* Et le chainage des points est inhibe... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(EST_FAUX(les_images_sont_standards)
,IL_FAUT(utiliser_le_mode_histogramme)
)
)
/* Test introduit le 20131201094231... */
Bblock
PRINT_ATTENTION("le mode histogramme n'est pas possible pour les images non standards");
EGAL(utiliser_le_mode_histogramme,FAUX);
/* Et le mode histogramme est inhibe... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(EST_FAUX(les_images_sont_standards)
,IL_FAUT(disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires)
)
)
/* Test introduit le 20140101152554... */
Bblock
PRINT_ATTENTION("le mode dispersion des niveaux n'est pas possible pour les images non standards");
EGAL(disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires,FAUX);
/* Et le mode histogramme est inhibe... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(IL_FAUT(chainer_les_points)
,IL_FAUT(utiliser_le_mode_histogramme)
)
)
/* Test introduit le 20131201094231... */
Bblock
PRINT_ATTENTION("le mode histogramme est incompatible avec le chainage des points");
EGAL(utiliser_le_mode_histogramme,FAUX);
/* Et le mode histogramme est inhibe... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(IL_FAUT(disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires)
,IL_FAUT(utiliser_le_mode_histogramme)
)
)
/* Test introduit le 20140101152554... */
Bblock
PRINT_ATTENTION("le mode dispersion des niveaux est incompatible avec le chainage des points");
EGAL(disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires,FAUX);
/* Et le mode dispersion des niveaux est inhibe... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(IL_FAUT(utiliser_le_mode_histogramme)
,IFET(IL_NE_FAUT_PAS(utiliser_le_mode_histogramme_horizontal)
,IL_NE_FAUT_PAS(utiliser_le_mode_histogramme_vertical)
)
)
)
/* Test introduit le 20131201094231... */
Bblock
PRINT_ATTENTION("le mode histogramme n'est ni horizontal, ni vertical");
EGAL(utiliser_le_mode_histogramme,FAUX);
/* Et le mode histogramme est inhibe... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IFET(IL_FAUT(cumuler_les_niveaux)
,IFNE(dimension_de_l_espace,BI_DIMENSIONNEL)
)
)
/* Test introduit le 20131119160651... */
Bblock
PRINT_ATTENTION("le cumul des niveaux n'est possible qu'en mode bidimensionnel");
EGAL(cumuler_les_niveaux,FAUX);
/* Et le cumul des niveaux est inhibe... */
Eblock
ATes
Bblock
Eblock
ETes
begin_nouveau_block
Bblock
DEFV(Logical,INIT(initialiser_le_fond,VRAI));
/* La valeur par defaut assure la compatibilite anterieure (introduit le 123456789). */
DEFV(Logical,INIT(c_est_le_premier_point,VRAI));
/* Utile uniquement dans le cas du chainage... */
Test(IFNE_chaine(nom_imageA,NOM_PIPE_Local))
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageG,IFmageR,nom_imageA))))
Bblock
/* Chargement de l'image Argument, un eventuel fond (ceci fut introduit le 20181008143042). */
EGAL(initialiser_le_fond,FAUX);
/* Lorsque cela s'est bien passe, le fond n'est evidemment pas a initialiser... */
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(initialiser_le_fond))
Bblock
Test(EST_VRAI(les_images_sont_standards))
Bblock
CALi(FgERASE());
/* Initialisation de l'image Resultat (ATTENTION : il s'agit de 'ImageG'...). */
Eblock
ATes
Bblock
CALi(IFinitialisation(IFmageR,FZERO));
/* Initialisation de l'image Resultat. */
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
DoIn(index
,premier_element_d_un_fichier
,DERNIER_ELEMENT_D_UN_FICHIER
,pas_de_parcours_d_un_fichier
)
/* Le 20211004113151 {premier_element_d_un_fichier,pas_de_parcours_d_un_fichier} ont ete */
/* introduits... */
Bblock
DEFV(Float,INIT(coordonnee_X_normalisee,ELEMENT_DU_FICHIER_LISTE_X(index)));
DEFV(Float,INIT(coordonnee_Y_normalisee,ELEMENT_DU_FICHIER_LISTE_Y(index)));
DEFV(Float,INIT(coordonnee_Z_normalisee,ELEMENT_DU_FICHIER_LISTE_Z(index)));
/* Recuperation des coordonnees normalisees {X,Y[,Z]} courantes dans les fichiers. */
DEFV(Int,INIT(coordonnee_X_denormalisee,UNDEF));
DEFV(Int,INIT(coordonnee_Y_denormalisee,UNDEF));
DEFV(Float,INIT(coordonnee_X_denormalisee_precise,FLOT__UNDEF));
DEFV(Float,INIT(coordonnee_Y_denormalisee_precise,FLOT__UNDEF));
/* Mis avant 'Test(IL_NE_FAUT_PAS(chainer_les_points))' le 20210312095035 afin de pouvoir */
/* beneficier des facteurs et translations des coordonnees... */
DEFV(Float,INIT(niveau_courant_normalise,ELEMENT_DU_FICHIER_LISTE_NIVEAU(index)));
/* On notera qu'il s'agit d'un 'Float' et non pas d'un 'genere_Float' car, en effet, c'est */
/* un element d'un fichier 'Float' et non pas un point 'genere_Float'... */
DEFV(genere_p,INIT(niveau_courant_denormalise,NIVEAU_UNDEF));
DEFV(Int,INIT(demi_pave_XG_effectif
,GRANDEURS_HOMOTHETIQUES_OX(MAX2(ELEMENT_DU_FICHIER_DEMI_PAVE_X(index),demi_pave_XG)
,faire_des_paves_homothetiques
,INTE
)
)
);
DEFV(Int,INIT(demi_pave_YG_effectif
,GRANDEURS_HOMOTHETIQUES_OY(MAX2(ELEMENT_DU_FICHIER_DEMI_PAVE_Y(index),demi_pave_YG)
,faire_des_paves_homothetiques
,INTE
)
)
);
DEFV(Int,INIT(demi_pave_XD_effectif
,GRANDEURS_HOMOTHETIQUES_OX(MAX2(ELEMENT_DU_FICHIER_DEMI_PAVE_X(index),demi_pave_XD)
,faire_des_paves_homothetiques
,INTE
)
)
);
DEFV(Int,INIT(demi_pave_YD_effectif
,GRANDEURS_HOMOTHETIQUES_OY(MAX2(ELEMENT_DU_FICHIER_DEMI_PAVE_Y(index),demi_pave_YD)
,faire_des_paves_homothetiques
,INTE
)
)
);
DEFV(Float,INIT(demi_diametre_du_pave,FLOT__UNDEF));
EGAL(demi_diametre_du_pave
,MIN2(FLOT(MIN2(demi_pave_XG_effectif,demi_pave_XD_effectif))
,FLOT(MIN2(demi_pave_YG_effectif,demi_pave_YD_effectif))
)
);
/* Demi-diametre du pave calcule a priori... */
Test(EST_VRAI(les_niveaux_______sont_normalises_))
/* Test introduit le 20140430152305... */
Bblock
EGAL(niveau_courant_normalise
,AXPB(facteur_des_niveaux______
,niveau_courant_normalise
,translation___normalisee_des_niveaux______
)
);
/* Introduit le 20210309160941... */
EGAL(niveau_courant_denormalise,__DENORMALISE_NIVEAU(niveau_courant_normalise));
/* Recuperation du niveau normalise et denormalise du point courant {X,Y} dans le fichier. */
Eblock
ATes
Bblock
EGAL(niveau_courant_denormalise,GENP(niveau_courant_normalise));
/* Les niveaux sont supposes deja denormalises (introduit le 20140430152305). */
Eblock
ETes
Test(EST_VRAI(les_coordonnees_X_sont_normalisees))
/* Test introduit le 20140430152305... */
Bblock
EGAL(coordonnee_X_denormalisee_precise,F__cDENORMALISE_OX(SUPER_ECHELLE_OX(coordonnee_X_normalisee)));
/* Coordonnees denormalisees precises introduites pour 'store_point_continu_lineaire(...)' */
/* et 'storeF_point_continu_lineaire(...)' le 20140101151916... */
EGAL(coordonnee_X_denormalisee,SUPER_cDENORMALISE_OX(coordonnee_X_normalisee));
/* Recuperation des coordonnees denormalisees {X,Y[,Z]} courantes dans les fichiers. */
/* */
/* Le 20120417134325, '_cDENORMALISE_O?(...)' a ete remplace par 'SUPER_cDENORMALISE_O(...)' */
/* afin de permettre de conserver, si besoin est, les proportions... */
Eblock
ATes
Bblock
EGAL(coordonnee_X_denormalisee_precise,coordonnee_X_normalisee);
EGAL(coordonnee_X_denormalisee,coordonnee_X_normalisee);
/* Les coordonnees 'X' sont supposees deja denormalisees (introduit le 20140430152305). */
Eblock
ETes
EGAL(coordonnee_X_denormalisee_precise
,COXA(AXPB(facteur_des_coordonnees_X
,COXR(coordonnee_X_denormalisee_precise)
,FLOT(translation_denormalisee_des_coordonnees_X)
)
)
);
EGAL(coordonnee_X_denormalisee
,COXA(INTE(AXPB(facteur_des_coordonnees_X
,COXR(coordonnee_X_denormalisee)
,translation_denormalisee_des_coordonnees_X
)
)
)
);
/* Introduit le 20210309160941 et mis avant 'Test(IL_NE_FAUT_PAS(chainer_les_points)) */
/* le 20210312095035... */
Test(EST_VRAI(les_coordonnees_Y_sont_normalisees))
/* Test introduit le 20140430152305... */
Bblock
EGAL(coordonnee_Y_denormalisee_precise,F__cDENORMALISE_OY(SUPER_ECHELLE_OY(coordonnee_Y_normalisee)));
/* Coordonnees denormalisees precises introduites pour 'store_point_continu_lineaire(...)' */
/* et 'storeF_point_continu_lineaire(...)' le 20140101151916... */
EGAL(coordonnee_Y_denormalisee,SUPER_cDENORMALISE_OY(coordonnee_Y_normalisee));
/* Recuperation des coordonnees denormalisees {X,Y[,Z]} courantes dans les fichiers. */
/* */
/* Le 20120417134325, '_cDENORMALISE_O?(...)' a ete remplace par 'SUPER_cDENORMALISE_O(...)' */
/* afin de permettre de conserver, si besoin est, les proportions... */
Eblock
ATes
Bblock
EGAL(coordonnee_Y_denormalisee_precise,coordonnee_Y_normalisee);
EGAL(coordonnee_Y_denormalisee,coordonnee_Y_normalisee);
/* Les coordonnees 'Y' sont supposees deja denormalisees (introduit le 20140430152305). */
Eblock
ETes
EGAL(coordonnee_Y_denormalisee_precise
,COYA(AXPB(facteur_des_coordonnees_Y
,COYR(coordonnee_Y_denormalisee_precise)
,FLOT(translation_denormalisee_des_coordonnees_Y)
)
)
);
EGAL(coordonnee_Y_denormalisee
,COYA(INTE(AXPB(facteur_des_coordonnees_Y
,COYR(coordonnee_Y_denormalisee)
,translation_denormalisee_des_coordonnees_Y
)
)
)
);
/* Introduit le 20210309160941 et mis avant 'Test(IL_NE_FAUT_PAS(chainer_les_points)) */
/* le 20210312095035... */
Test(IL_NE_FAUT_PAS(chainer_les_points))
/* Test introduit le 20120124075908... */
Bblock
Test(IFOU(IL_NE_FAUT_PAS(tester_les_hors_bornes_naturelles)
,IFET(IL_FAUT(tester_les_hors_bornes_naturelles)
,IFET(TEST_DANS_L_IMAGE(coordonnee_X_denormalisee,coordonnee_Y_denormalisee)
,IFOU(IFET(EST_VRAI(les_niveaux_______sont_normalises_)
,IFINff(niveau_courant_normalise
,______________NOIR_NORMALISE
,______________BLANC_NORMALISE
)
)
,IFET(EST_FAUX(les_niveaux_______sont_normalises_)
,IFINff(niveau_courant_normalise
,FLOT__NOIR
,FLOT__BLANC
)
)
)
)
)
)
)
Bblock
Test(IFET(IL_NE_FAUT_PAS(tracer_l__horizontale_de_chaque_point)
,IL_NE_FAUT_PAS(tracer_la_verticale___de_chaque_point)
)
)
/* Test introduit le 20160323083049... */
Bblock
begin_imageQ(DoIn
,COYA(SOUS(COYR(coordonnee_Y_denormalisee),demi_pave_YG_effectif))
,COYA(ADD2(COYR(coordonnee_Y_denormalisee),demi_pave_YD_effectif))
,PasY
,DoIn
,COXA(SOUS(COXR(coordonnee_X_denormalisee),demi_pave_XG_effectif))
,COXA(ADD2(COXR(coordonnee_X_denormalisee),demi_pave_XD_effectif))
,PasX
)
/* Introduit le 20120429165655 afin de pouvoir epaissir les points, mais surtout par */
/* "symetrie" avec 'v $xrv/store_album$K 20120429165655', puis generalise de facon */
/* potentiellement dissymetrique le 20120430184507... */
Bblock
DEFV(Logical,INIT(ranger_le_niveau,VRAI));
/* A priori, le niveau sera range systematiquement (indicateur introduit le 20120517083306). */
Test(IL_FAUT(faire_un_epaississement_circulaire))
/* Test introduit le 20120517083306... */
Bblock
DEFV(Float,INIT(distance_au_centre_du_pave
,RdisF2D(FLOT(coordonnee_X_denormalisee)
,FLOT(coordonnee_Y_denormalisee)
,FLOT(X)
,FLOT(Y)
)
)
);
/* Distance au centre du pave... */
Test(IFLE(distance_au_centre_du_pave,demi_diametre_du_pave))
Bblock
EGAL(ranger_le_niveau,VRAI);
Eblock
ATes
Bblock
EGAL(ranger_le_niveau,FAUX);
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(ranger_le_niveau))
/* Test introduit le 20120517083306... */
Bblock
Test(EST_VRAI(les_images_sont_standards))
/* Test introduit le 20121110112405... */
Bblock
DEFV(genere_p,INIT(niveau_courant_denormalise_effectif,niveau_courant_denormalise));
Test(IL_FAUT(cumuler_les_niveaux))
/* Test introduit le 20131119160651... */
Bblock
DEFV(genere_p,INIT(niveau_anterieur_denormalise,load_point_valide(ImageG,X,Y)));
/* On notera le 'load_point_valide(...)' car, en effet, les coordonnees {X,Y} peuvent tres */
/* bien etre en dehors de [Xmin,Xmax]x[Ymin,Ymax]... */
EGAL(niveau_courant_denormalise_effectif
,GENP(NIVA(LIZ2(ponderation_cumuler_les_niveaux_ADD2
,FLOT(ADD2(NIVR(niveau_anterieur_denormalise)
,NIVR(niveau_courant_denormalise_effectif)
)
)
,ponderation_cumuler_les_niveaux_MAX2
,FLOT(MAX2(NIVR(niveau_anterieur_denormalise)
,NIVR(niveau_courant_denormalise_effectif)
)
)
)
)
)
);
/* On notera au passage qu'il peut y avoir ici un debordement, mais que faire d'autre que */
/* de l'accepter... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_NE_FAUT_PAS(utiliser_le_mode_histogramme))
/* Test introduit le 20131201094231... */
Bblock
Test(IL_FAUT(disperser_les_niveaux_aux_quatre_coins_des_carres_elementaires))
Bblock
store_point_continu_lineaire(niveau_courant_denormalise
,ImageG
,ADD2(coordonnee_X_denormalisee_precise
,FLOT(SOUS(X,Xmin_begin_ligneQ))
)
,ADD2(coordonnee_Y_denormalisee_precise
,FLOT(SOUS(Y,Ymin_begin_colonneQ))
)
,ecraser_les_niveaux_anterieurs
);
/* Possibilite introduite le 20140101152554... */
Eblock
ATes
Bblock
store_point_ND(niveau_courant_denormalise_effectif
,ImageG
,X
,Y
,coordonnee_Z_normalisee
,dimension_de_l_espace
);
/* Rangement du point courant {X,Y[,Z]}... */
Eblock
ETes
Eblock
ATes
Bblock
DEFV(Int,INIT(X_point_courant,X));
DEFV(Int,INIT(Y_point_courant,Y));
/* Memorisation du point courant {X,Y[,Z]}... */
Test(IL_FAUT(utiliser_le_mode_histogramme_horizontal))
/* Test introduit le 20131201094231... */
Bblock
begin_ligneQ(DoIn,Xmin_histogramme_horizontal,X_point_courant,pasX)
Bblock
store_point_ND(niveau_courant_denormalise_effectif
,ImageG
,X
,Y_point_courant
,coordonnee_Z_normalisee
,dimension_de_l_espace
);
Eblock
end_ligneQ(EDoI)
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(utiliser_le_mode_histogramme_vertical))
/* Test introduit le 20131201094231... */
Bblock
begin_colonneQ(DoIn,Ymin_histogramme_vertical,Y_point_courant,pasY)
Bblock
store_point_ND(niveau_courant_denormalise_effectif
,ImageG
,X_point_courant
,Y
,coordonnee_Z_normalisee
,dimension_de_l_espace
);
Eblock
end_colonneQ(EDoI)
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ETes
Eblock
ATes
Bblock
DEFV(genere_Float,INIT(niveau_courant_normalise_effectif,niveau_courant_normalise));
Test(IL_FAUT(cumuler_les_niveaux))
/* Test introduit le 20131119160651... */
Bblock
DEFV(genere_Float,INIT(niveau_anterieur_normalise,loadF_point_valide(IFmageR,X,Y)));
EGAL(niveau_courant_normalise_effectif
,LIZ2(ponderation_cumuler_les_niveaux_ADD2
,ADD2(niveau_anterieur_normalise,niveau_courant_normalise_effectif)
,ponderation_cumuler_les_niveaux_MAX2
,MAX2(niveau_anterieur_normalise,niveau_courant_normalise_effectif)
)
);
/* On notera le 'loadF_point_valide(...)' car, en effet, les coordonnees {X,Y} peuvent tres */
/* bien etre en dehors de [Xmin,Xmax]x[Ymin,Ymax]... */
Eblock
ATes
Bblock
Eblock
ETes
storeF_point_ND(niveau_courant_normalise_effectif
,IFmageR
,X
,Y
,coordonnee_Z_normalisee
,dimension_de_l_espace
);
/* Rangement du point courant {X,Y[,Z]}... */
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
end_imageQ(EDoI,EDoI)
Eblock
ATes
Bblock
Test(IL_FAUT(tracer_l__horizontale_de_chaque_point))
/* Test introduit le 20160323083049... */
Bblock
begin_ligne
Bblock
store_point_ND(niveau_courant_denormalise
,ImageG
,X
,coordonnee_Y_denormalisee
,coordonnee_Z_normalisee
,dimension_de_l_espace
);
Eblock
end_ligne
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(tracer_la_verticale___de_chaque_point))
/* Test introduit le 20160323083049... */
Bblock
begin_colonne
Bblock
store_point_ND(niveau_courant_denormalise
,ImageG
,coordonnee_X_denormalisee
,Y
,coordonnee_Z_normalisee
,dimension_de_l_espace
);
Eblock
end_colonne
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ETes
Eblock
ATes
Bblock
Test(IL_FAUT(editer_le_message_des_hors_bornes_naturelles))
/* Test introduit le 20120124075103... */
Bblock
PRINT_ERREUR("l'une au moins des trois valeurs associees a un point est hors de ses bornes naturelles");
CAL1(Prer4("(point d'index %d : X=%+.^^^ Y=%+.^^^ niveau=%+.^^^ -ces trois valeurs sont normalisees-)\n"
,index
,coordonnee_X_normalisee
,coordonnee_Y_normalisee
,niveau_courant_normalise
)
);
/* Le 20060105161653, le format "16g" est passe a "^^g" pour plus de souplesse... */
/* */
/* Le 20091123123620, le format "^^g" est passe a "^^^" pour plus de souplesse... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ETes
Eblock
ATes
Bblock
SET_COULEURS(NOIR,niveau_courant_denormalise);
SET_CURSOR(_____cNORMALISE_OX(coordonnee_X_denormalisee_precise)
,_____cNORMALISE_OY(coordonnee_Y_denormalisee_precise)
,coordonnee_Z_normalisee
);
/* Depuis le 20210312100549 ce sont les coordonnees denormalisees qui sont referencees */
/* "en premier" afin de beneficier des facteurs et translations sur 'X' et 'Y'... */
Test(EST_VRAI(c_est_le_premier_point))
Bblock
gA;
EGAL(c_est_le_premier_point,FAUX);
Eblock
ATes
Bblock
Test(IL_NE_FAUT_PAS(chainer_les_points_en_etoile))
Bblock
gB;
/* Chainage automatique des points... */
Eblock
ATes
Bblock
gS;
/* Chainage automatique des points en etoile (introduit le 20120129101749). */
Eblock
ETes
Eblock
ETes
Eblock
ETes
Eblock
EDoI
CALi(gIupdate_image(les_images_sont_standards,nom_imageR,ImageG,IFmageR));
Eblock
end_nouveau_block
lGENERATION_D_UN_FICHIER(liste_initiale_des_DEMI_PAVE_Y,DEMI_PAVE_Y_IMPLICITE);
lGENERATION_D_UN_FICHIER(liste_initiale_des_DEMI_PAVE_X,DEMI_PAVE_X_IMPLICITE);
lGENERATION_D_UN_FICHIER(liste_initiale_des_NIVEAU,NIVEAU_IMPLICITE);
lGENERATION_D_UN_FICHIER(liste_initiale_des_Z,Z_IMPLICITE);
lGENERATION_D_UN_FICHIER(liste_initiale_des_Y,Y_IMPLICITE);
lGENERATION_D_UN_FICHIER(liste_initiale_des_X,X_IMPLICITE);
RETU_Commande;
Eblock
ECommande