/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E V A L E U R S C O R R E S P O N D A N T A U X */
/* C O O R D O N N E E S " M A T R I C I E L L E S " D A N S U N A L B U M : */
/* */
/* */
/* Definition : */
/* */
/* Cette commande donne comme resultat une */
/* liste de combinaisons lineaires des abscisses, */
/* des ordonnees {X,Y} et de la profondeur 'Z' */
/* des points d'un album. */
/* */
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* * * * ** * * * * * ** * */
/* * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * */
/* * * * * * * * * * * * * * * * */
/* * * * * ** * * * * * ** */
/* * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* */
/* ATTENTION : */
/* */
/* Je note le 20180618163700 que les coordonnees */
/* normalisees (lorsqu'elles sont demandees...) sont */
/* dans [0,1[ et non pas dans [0,1]... On verra a ce */
/* propos 'v $xiirv/.PUZZ.11.1.$U 20180618161323' si */
/* necessaire... */
/* */
/* */
/* Author of '$xci/valeurs_albu$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 19990701175021). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#include xci/substitue.01.I"
/* Introduit le 20150609075311... */
#include xci/sequence.01.I"
#include xci/coordonne.01.I"
#define GENERER_UN_MAILLAGE \
FAUX \
/* Faut-il generer des points isoles ('FAUX') ou bien un maillage ('VRAI') ? La valeur */ \
/* par defaut garantit la compatibilite anterieure (introduit le 20150525090526)... */
#define LE_MAILLAGE_EST_COMPLET \
VRAI
#define SEUIL_DU_MAILLAGE_COMPLET \
FDU \
/* Faut-il generer un maillage complet ('VRAI') ou incomplet ('FAUX'), c'est-a-dire qu'il */
/* est alors leatoire ? La valeur par defaut garantit la compatibilite anterieure */
/* (introduit le 20171109125251)... */
#define MAILLE_X \
UN
#define MAILLE_Y \
UN
#define MAILLE_Z \
UN
/* Definition du maillage (introduite le 20150525093331)... */
#define LE_MAILLAGE_EST_TRIANGULAIRE \
FAUX \
/* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il est triangulaire ('VRAI') */ \
/* ou rectangulaire ('FAUX') ? Ceci a ete introduit le 20150525092218, mais non implemente */ \
/* a cette date et enfin mis en place le 20150608163910... */
#define LE_MAILLAGE_TRIANGULAIRE_EST_ALEATOIRE \
FAUX
#define SEUIL_DU_MAILLAGE_TRIANGULAIRE_ALEATOIRE \
FDU
#define UTILISER_UN_ESPACE_DE_PARAMETRAGE_TRIDIMENSIONNEL \
VRAI
#define GRAINE \
PARE(1789)
/* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il etre aleatoire ('VRAI') */
/* ou pas ('FAUX') ? Ceci a ete introduit le 20150609075311... */
#define LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___ \
VRAI
#define LE_MAILLAGE_TRIANGULAIRE_EST_DESCENDANT \
FAUX
/* Si 'EST_VRAI(le_maillage_est_triangulaire)' est-il "montant" (bas-gauche --> haut-droite) */
/* et/ou "descendant" (haut-gauche --> bas-droite) ? Ceci a ete introduit le 20150609075311. */
/* On notera que lorsque le maillage est a la fois "montant"et "descendant", il n'est plus */
/* plan car, en effet, les aretes montantes et descendantes se croisent alors... */
/* */
/* La notation vient de 'v $xci/valeurs_imag$K LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___' en */
/* notant qu'ici, il n'est pas approprie... */
#define TRACER_LE_SEGMENT_000_100 \
VRAI
#define TRACER_LE_SEGMENT_100_110 \
VRAI
#define TRACER_LE_SEGMENT_110_010 \
VRAI
#define TRACER_LE_SEGMENT_010_000 \
VRAI
#define TRACER_LE_SEGMENT_001_101 \
VRAI
#define TRACER_LE_SEGMENT_101_111 \
VRAI
#define TRACER_LE_SEGMENT_111_011 \
VRAI
#define TRACER_LE_SEGMENT_011_001 \
VRAI
#define TRACER_LE_SEGMENT_000_001 \
VRAI
#define TRACER_LE_SEGMENT_100_101 \
VRAI
#define TRACER_LE_SEGMENT_110_111 \
VRAI
#define TRACER_LE_SEGMENT_010_011 \
VRAI
#define TRACER_LE_SEGMENT_000_110 \
VRAI
#define TRACER_LE_SEGMENT_000_011 \
VRAI
#define TRACER_LE_SEGMENT_000_101 \
VRAI
#define TRACER_LE_SEGMENT_110_011 \
VRAI
#define TRACER_LE_SEGMENT_011_101 \
VRAI
#define TRACER_LE_SEGMENT_101_110 \
VRAI
#define TRACER_LE_SEGMENT_001_100 \
VRAI
#define TRACER_LE_SEGMENT_001_010 \
VRAI
#define TRACER_LE_SEGMENT_001_111 \
VRAI
#define TRACER_LE_SEGMENT_100_010 \
VRAI
#define TRACER_LE_SEGMENT_010_111 \
VRAI
#define TRACER_LE_SEGMENT_111_100 \
VRAI
/* Definition des segments a tracer (introduit le 20150610091851). */
#define METTRE_ORIGINE_ET_EXTREMITE_SUR_UNE_MEME_LIGNE \
VRAI \
/* Faut-il mettre l'origine 'A' et l'extremite 'B' d'un segment sur une meme ligne ('VRAI') */ \
/* ou sur deux lignes separees ('FAUX') ? Ceci fut introduit le 20150526140355. On notera */ \
/* que les mettre sur une meme ligne facilite les optimisations supprimant les segments */ \
/* redondants, cela se faisant via '$SOR -u' en manipulant ensuite des lignes regenerees */ \
/* du type {XA,XB,YA,YB} qui doivent donc etre uniques... */
#define EDITER_DES_COORDONNEES_NORMALISEES \
VRAI \
/* Faut-il normaliser les coordonnees ('VRAI') ou pas ('FAUX') ? La valeur par defaut */ \
/* garantit la compatibilite anterieure (introduit le 20121110103938)... */
#define PONDERATION_DE_X \
FU
#define PONDERATION_DE_Y \
FZERO
#define PONDERATION_DE_Z \
FZERO
/* Ponderations respectives de 'X', 'Y' et 'Z'. */
#define FACTEUR_DE_X \
FU
#define FACTEUR_DE_Y \
FU
#define FACTEUR_DE_Z \
FU
/* Homotheties respectives de 'X', 'Y' et 'Z'. */
#define LARGEUR_DE_LA_BORDURE_A_EXCLURE \
FZERO \
/* Largeur de la bordure a exclure autour de l'album. */
#include xci/valeurs.01.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#include xci/substitue.02.I"
/* Introduit le 20150609075311... */
#include xci/valeurs.02.I"
#include xci/valeurs_imag.01.I"
/* Introduit le 20150609081602... */
#define _____X \
GRO0(maille_X)
#define MOVE_X \
GRO1(maille_X)
#define _____Y \
GRO0(maille_Y)
#define MOVE_Y \
GRO1(maille_Y)
#define _____Z \
GRO0(maille_Z)
#define MOVE_Z \
GRO1(maille_Z)
/* Definitions des deplacement elementaires (introduites le 20150525205101). */
#define EDITION_D_UN_POINT(coordonnee_X,coordonnee_Y,coordonnee_Z,tabulation) \
Bblock \
CAL2(Prin3(Cara(chain_Aconcaten5(INTRODUCTION_FORMAT,valeurs_signees,".*",format_d_edition,"%s")) \
,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales) \
,MULTIPLE_DE(ENTIER_FLOTTANT(LIZ3(ponderation_de_X,coordonnee_X \
,ponderation_de_Y,coordonnee_Y \
,ponderation_de_Z,coordonnee_Z \
) \
) \
) \
,tabulation \
) \
); \
Eblock \
/* Edition d'un point introduite le 20150525092218... */
#define EDITION_D_UN_SEGMENT(coordonnee_X,coordonnee_Y,coordonnee_Z,trans_OX,trans_OY,trans_OZ,trans_EX,trans_EY,trans_EZ,tracer) \
/* Le point de reference est {coordonnee_X,coordonnee_Y,coordonnee_Z} et les translations */ \
/* permettent de definir l'Origine et l'Extremite du segment... */ \
Bblock \
DEFV(Logical,INIT(tracer_effectivement_le_segment,tracer)); \
\
Test(EST_VRAI(le_maillage_est_complet)) \
/* Test introduit le 20171109125245... */ \
Bblock \
Eblock \
ATes \
Bblock \
DEFV(Float,INIT(valeur_aleatoire_de_maillage_incomplet,FLOT__UNDEF)); \
\
GENERATION_DE_LA_VALEUR_ALEATOIRE_COURANTE(valeur_aleatoire_de_maillage_incomplet); \
\
Test(IFLE(valeur_aleatoire_de_maillage_incomplet,seuil_du_maillage_complet)) \
Bblock \
Eblock \
ATes \
Bblock \
EGAL(tracer_effectivement_le_segment,FAUX); \
Eblock \
ETes \
Eblock \
ETes \
\
Test(IL_FAUT(tracer_effectivement_le_segment)) \
/* Test introduit le 20150608130019... */ \
Bblock \
EDITION_D_UN_POINT(ADD2(coordonnee_X \
,COND(IL_FAUT(editer_des_coordonnees_normalisees) \
,SUPER_lNORMALISE_OX(trans_OX) \
,trans_OX \
) \
) \
,ADD2(coordonnee_Y \
,COND(IL_FAUT(editer_des_coordonnees_normalisees) \
,SUPER_lNORMALISE_OY(trans_OY) \
,trans_OY \
) \
) \
,ADD2(coordonnee_Z \
,COND(IL_FAUT(editer_des_coordonnees_normalisees) \
,_____lNORMALISE_OZ(trans_OZ) \
,trans_OZ \
) \
) \
,COND(IL_FAUT(mettre_origine_et_extremite_sur_une_meme_ligne),C_BLANC,C_LF) \
); \
/* Edition de l'Origine du segment. */ \
EDITION_D_UN_POINT(ADD2(coordonnee_X \
,COND(IL_FAUT(editer_des_coordonnees_normalisees) \
,SUPER_lNORMALISE_OX(trans_EX) \
,trans_EX \
) \
) \
,ADD2(coordonnee_Y \
,COND(IL_FAUT(editer_des_coordonnees_normalisees) \
,SUPER_lNORMALISE_OY(trans_EY) \
,trans_EY \
) \
) \
,ADD2(coordonnee_Z \
,COND(IL_FAUT(editer_des_coordonnees_normalisees) \
,_____lNORMALISE_OZ(trans_EZ) \
,trans_EZ \
) \
) \
,C_LF \
); \
/* Edition de l'Extremite du segment. */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'un segment introduite le 20150525094329... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G E N E R A T I O N D E V A L E U R S C O R R E S P O N D A N T A U X */
/* C O O R D O N N E E S " M A T R I C I E L L E S " D A N S U N A L B U M : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
#include xci/coordonne.02.I"
DEFV(Logical,INIT(generer_un_maillage,GENERER_UN_MAILLAGE));
/* Faut-il generer des points isoles ('FAUX') ou bien un maillage ('VRAI') ? La valeur */
/* par defaut garantit la compatibilite anterieure (introduit le 20150525090526)... */
DEFV(Logical,INIT(le_maillage_est_complet,LE_MAILLAGE_EST_COMPLET));
DEFV(Float,INIT(seuil_du_maillage_complet,SEUIL_DU_MAILLAGE_COMPLET));
/* Faut-il generer un maillage complet ('VRAI') ou incomplet ('FAUX'), c'est-a-dire qu'il */
/* est alors leatoire ? La valeur par defaut garantit la compatibilite anterieure */
/* (introduit le 20171109125251)... */
DEFV(Int,INIT(maille_X,MAILLE_X));
DEFV(Int,INIT(maille_Y,MAILLE_Y));
DEFV(Int,INIT(maille_Z,MAILLE_Z));
/* Definition du maillage (introduite le 20150525092218)... */
DEFV(Logical,INIT(le_maillage_est_triangulaire,LE_MAILLAGE_EST_TRIANGULAIRE));
/* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il est triangulaire ('VRAI') */
/* ou rectangulaire ('FAUX') ? Ceci a ete introduit le 20150525092218, mais non implemente */
/* a cette date et enfin mis en place le 20150608163910... */
DEFV(Logical,INIT(le_maillage_triangulaire_est_aleatoire,LE_MAILLAGE_TRIANGULAIRE_EST_ALEATOIRE));
DEFV(Float,INIT(seuil_du_maillage_triangulaire_aleatoire,SEUIL_DU_MAILLAGE_TRIANGULAIRE_ALEATOIRE));
DEFV(Logical,INIT(utiliser_un_espace_de_parametrage_tridimensionnel,UTILISER_UN_ESPACE_DE_PARAMETRAGE_TRIDIMENSIONNEL));
DEFV(Int,INIT(graine,GRAINE));
DEFV(Float,INIT(valeur_aleatoire,FLOT__UNDEF));
/* Le maillage (si 'IL_FAUT(generer_un_maillage)') doit-il etre aleatoire ('VRAI') */
/* ou pas ('FAUX') ? Ceci a ete introduit le 20150609075311... */
DEFV(Logical,INIT(le_maillage_triangulaire_est_montant___,LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___));
DEFV(Logical,INIT(le_maillage_triangulaire_est_descendant,LE_MAILLAGE_TRIANGULAIRE_EST_DESCENDANT));
/* Si 'EST_VRAI(le_maillage_est_triangulaire)' est-il "montant" (bas-gauche --> haut-droite) */
/* et/ou "descendant" (haut-gauche --> bas-droite) ? Ceci a ete introduit le 20150609075311. */
/* On notera que lorsque le maillage est a la fois "montant"et "descendant", il n'est plus */
/* plan car, en effet, les aretes montantes et descendantes se croisent alors... */
/* */
/* La notation vient de 'v $xci/valeurs_imag$K LE_MAILLAGE_TRIANGULAIRE_EST_MONTANT___' en */
/* notant qu'ici, il n'est pas approprie... */
DEFV(Logical,INIT(tracer_le_segment_000_100,TRACER_LE_SEGMENT_000_100));
DEFV(Logical,INIT(tracer_le_segment_100_110,TRACER_LE_SEGMENT_100_110));
DEFV(Logical,INIT(tracer_le_segment_110_010,TRACER_LE_SEGMENT_110_010));
DEFV(Logical,INIT(tracer_le_segment_010_000,TRACER_LE_SEGMENT_010_000));
DEFV(Logical,INIT(tracer_le_segment_001_101,TRACER_LE_SEGMENT_001_101));
DEFV(Logical,INIT(tracer_le_segment_101_111,TRACER_LE_SEGMENT_101_111));
DEFV(Logical,INIT(tracer_le_segment_111_011,TRACER_LE_SEGMENT_111_011));
DEFV(Logical,INIT(tracer_le_segment_011_001,TRACER_LE_SEGMENT_011_001));
DEFV(Logical,INIT(tracer_le_segment_000_001,TRACER_LE_SEGMENT_000_001));
DEFV(Logical,INIT(tracer_le_segment_100_101,TRACER_LE_SEGMENT_100_101));
DEFV(Logical,INIT(tracer_le_segment_110_111,TRACER_LE_SEGMENT_110_111));
DEFV(Logical,INIT(tracer_le_segment_010_011,TRACER_LE_SEGMENT_010_011));
DEFV(Logical,INIT(tracer_le_segment_000_110,TRACER_LE_SEGMENT_000_110));
DEFV(Logical,INIT(tracer_le_segment_000_011,TRACER_LE_SEGMENT_000_011));
DEFV(Logical,INIT(tracer_le_segment_000_101,TRACER_LE_SEGMENT_000_101));
DEFV(Logical,INIT(tracer_le_segment_110_011,TRACER_LE_SEGMENT_110_011));
DEFV(Logical,INIT(tracer_le_segment_011_101,TRACER_LE_SEGMENT_011_101));
DEFV(Logical,INIT(tracer_le_segment_101_110,TRACER_LE_SEGMENT_101_110));
DEFV(Logical,INIT(tracer_le_segment_001_100,TRACER_LE_SEGMENT_001_100));
DEFV(Logical,INIT(tracer_le_segment_001_010,TRACER_LE_SEGMENT_001_010));
DEFV(Logical,INIT(tracer_le_segment_001_111,TRACER_LE_SEGMENT_001_111));
DEFV(Logical,INIT(tracer_le_segment_100_010,TRACER_LE_SEGMENT_100_010));
DEFV(Logical,INIT(tracer_le_segment_010_111,TRACER_LE_SEGMENT_010_111));
DEFV(Logical,INIT(tracer_le_segment_111_100,TRACER_LE_SEGMENT_111_100));
/* Definition des segments a tracer (introduit le 20150610091851). */
DEFV(Logical,INIT(mettre_origine_et_extremite_sur_une_meme_ligne,METTRE_ORIGINE_ET_EXTREMITE_SUR_UNE_MEME_LIGNE));
/* Faut-il mettre l'origine 'A' et l'extremite 'B' d'un segment sur une meme ligne ('VRAI') */
/* ou sur deux lignes separees ('FAUX') ? Ceci fut introduit le 20150526140355. On notera */
/* que les mettre sur une meme ligne facilite les optimisations supprimant les segments */
/* redondants, cela se faisant via '$SOR -u' en manipulant ensuite des lignes regenerees */
/* du type {XA,XB,YA,YB} qui doivent donc etre uniques... */
DEFV(Logical,INIT(editer_des_coordonnees_normalisees,EDITER_DES_COORDONNEES_NORMALISEES));
/* Faut-il normaliser les coordonnees ('VRAI') ou pas ('FAUX') ? La valeur par defaut */
/* garantit la compatibilite anterieure (introduit le 20121110103938)... */
DEFV(pointI_2D,point_courant_de_l_espace_de_parametrage_2D);
DEFV(pointI_3D,point_courant_de_l_espace_de_parametrage_3D);
/* Point courant d'un espace abstrait servant a parametrer le generateur d'evenements. */
DEFV(Float,INIT(ponderation_de_X,PONDERATION_DE_X));
DEFV(Float,INIT(ponderation_de_Y,PONDERATION_DE_Y));
DEFV(Float,INIT(ponderation_de_Z,PONDERATION_DE_Z));
/* Ponderations respectives de 'X', 'Y' et 'Z'. */
DEFV(Float,INIT(facteur_de_X,FACTEUR_DE_X));
DEFV(Float,INIT(facteur_de_Y,FACTEUR_DE_Y));
DEFV(Float,INIT(facteur_de_Z,FACTEUR_DE_Z));
/* Homotheties respectives de 'X', 'Y' et 'Z'. */
DEFV(Float,INIT(largeur_de_la_bordure_a_exclure,LARGEUR_DE_LA_BORDURE_A_EXCLURE));
/* Largeur de la bordure a exclure autour de l'album. */
#include xci/substitue.03.I"
/* Introduit le 20150609075311... */
#include xci/valeurs.03.I"
/*..............................................................................................................................*/
#include xci/coordonne.04.I"
/* Ceci a ete introduit le 20051218183003... */
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_L("maillage=""m=",generer_un_maillage);
GET_ARGUMENT_N("points=""pts=",generer_un_maillage);
GET_ARGUMENT_L("maillage_complet=""complet=",le_maillage_est_complet);
GET_ARGUMENT_N("maillage_aleatoire=""aleatoire=",le_maillage_est_complet);
GET_ARGUMENT_F("seuil_maillage_complet=""smc=",seuil_du_maillage_complet);
/* Aguments introduits le 20171109125245... */
GET_ARGUMENT_I("maille_X=""mX=""mx=",maille_X);
GET_ARGUMENT_I("maille_Y=""mY=""my=",maille_Y);
GET_ARGUMENT_I("maille_Z=""mZ=""mz=",maille_Z);
GET_ARGUMENT_L("maillage_triangulaire=""mt=",le_maillage_est_triangulaire);
GET_ARGUMENT_N("maillage_rectangulaire=""mr=",le_maillage_est_triangulaire);
/* Aguments introduits le 20150525090526... */
GET_ARGUMENT_L("maillage_triangulaire_aleatoire=""mta=",le_maillage_triangulaire_est_aleatoire);
GET_ARGUMENT_F("seuil_maillage_triangulaire_aleatoire=""smta=""seuil="
,seuil_du_maillage_triangulaire_aleatoire
);
GET_ARGUMENT_I("methode=",gen_ft_____methode_standard);
/* Les parametres {"inferieur=","superieur="} furent introduits le 20090221161945... */
GET_ARGUMENT_L("tridimensionnel=""3D=",utiliser_un_espace_de_parametrage_tridimensionnel);
GET_ARGUMENT_N("bidimensionnel=""2D=",utiliser_un_espace_de_parametrage_tridimensionnel);
GET_ARGUMENT_I("graine=""g=",graine);
GET_ARGUMENT_L("affiner_rdn=",rdnIFnD_____affiner_la_generation);
GET_ARGUMENT_L("iterer_rdn=",rdnIFnD_____iterer_la_generation);
GET_ARGUMENT_F("PrdnI2D_NEUT=",rdnI2D_____ponderation_NEUT);
GET_ARGUMENT_F("PrdnI2D_GAUS=",rdnI2D_____ponderation_GAUS);
GET_ARGUMENT_F("PrdnI2D_GAUS_esperance=",rdnI2D_____ponderation_GAUS_esperance_);
GET_ARGUMENT_F("PrdnI2D_GAUS_ecart_type=",rdnI2D_____ponderation_GAUS_ecart_type);
GET_ARGUMENT_F("PrdnI3D_NEUT=",rdnI3D_____ponderation_NEUT);
GET_ARGUMENT_F("PrdnI3D_GAUS=",rdnI3D_____ponderation_GAUS);
GET_ARGUMENT_F("PrdnI3D_GAUS_esperance=",rdnI3D_____ponderation_GAUS_esperance_);
GET_ARGUMENT_F("PrdnI3D_GAUS_ecart_type=",rdnI3D_____ponderation_GAUS_ecart_type);
CONTROLE_DE_L_ADAPTATION_A_UNE_LOI_DE_DISTRIBUTION_QUELCONQUE;
/* Aguments introduits le 20150609075311... */
GET_ARGUMENT_L("maillage_triangulaire_montant=""mtm=""triangle1=""tr1="
,le_maillage_triangulaire_est_montant___
);
GET_ARGUMENT_L("maillage_triangulaire_descendant=""mtd=""triangle2=""tr2="
,le_maillage_triangulaire_est_descendant
);
/* Aguments introduits le 20150609075311... */
GET_ARGUMENT_L("segment_000_100=""000_100=""AB=",tracer_le_segment_000_100);
GET_ARGUMENT_L("segment_100_110=""100_110=""BC=",tracer_le_segment_100_110);
GET_ARGUMENT_L("segment_110_010=""110_010=""CD=",tracer_le_segment_110_010);
GET_ARGUMENT_L("segment_010_000=""010_000=""DA=",tracer_le_segment_010_000);
GET_ARGUMENT_L("segment_001_101=""001_101=""EF=",tracer_le_segment_001_101);
GET_ARGUMENT_L("segment_101_111=""101_111=""FG=",tracer_le_segment_101_111);
GET_ARGUMENT_L("segment_111_011=""111_011=""GH=",tracer_le_segment_111_011);
GET_ARGUMENT_L("segment_011_001=""011_001=""HE=",tracer_le_segment_011_001);
GET_ARGUMENT_L("segment_000_001=""000_001=""AE=",tracer_le_segment_000_001);
GET_ARGUMENT_L("segment_100_101=""100_101=""BF=",tracer_le_segment_100_101);
GET_ARGUMENT_L("segment_110_111=""110_111=""CG=",tracer_le_segment_110_111);
GET_ARGUMENT_L("segment_010_011=""010_011=""DH=",tracer_le_segment_010_011);
GET_ARGUMENT_L("segment_000_110=""000_110=""AC=",tracer_le_segment_000_110);
GET_ARGUMENT_L("segment_000_011=""000_011=""AH=",tracer_le_segment_000_011);
GET_ARGUMENT_L("segment_000_101=""000_101=""AF=",tracer_le_segment_000_101);
GET_ARGUMENT_L("segment_110_011=""110_011=""CH=",tracer_le_segment_110_011);
GET_ARGUMENT_L("segment_011_101=""011_101=""HF=",tracer_le_segment_011_101);
GET_ARGUMENT_L("segment_101_110=""101_110=""FC=",tracer_le_segment_101_110);
GET_ARGUMENT_L("segment_001_100=""001_100=""EB=",tracer_le_segment_001_100);
GET_ARGUMENT_L("segment_001_010=""001_010=""ED=",tracer_le_segment_001_010);
GET_ARGUMENT_L("segment_001_111=""001_111=""EG=",tracer_le_segment_001_111);
GET_ARGUMENT_L("segment_100_010=""100_010=""BD=",tracer_le_segment_100_010);
GET_ARGUMENT_L("segment_010_111=""010_111=""DG=",tracer_le_segment_010_111);
GET_ARGUMENT_L("segment_111_100=""111_100=""GB=",tracer_le_segment_111_100);
/* Aguments introduits le 20150610091851... */
GET_ARGUMENT_L("origine_extremite_meme_ligne=""meme_ligne=""ml="
,mettre_origine_et_extremite_sur_une_meme_ligne
);
/* Aguments introduits le 20150526140355... */
GET_ARGUMENT_L("normalisees=""norm=",editer_des_coordonnees_normalisees);
GET_ARGUMENT_N("denormalisees=""denorm=",editer_des_coordonnees_normalisees);
/* Aguments introduits le 20121110103938... */
GET_ARGUMENT_L("centrer=",centrer_les_coordonnees_normalisees);
GET_ARGUMENT_F("Px=""PX=",ponderation_de_X);
GET_ARGUMENT_F("Py=""PY=",ponderation_de_Y);
GET_ARGUMENT_F("Pz=""PZ=",ponderation_de_Z);
GET_ARGUMENT_F("ax=""aX=""Ax=""AX=",facteur_de_X);
GET_ARGUMENT_F("ay=""aY=""Ay=""AY=",facteur_de_Y);
GET_ARGUMENT_F("az=""aZ=""Az=""AZ=",facteur_de_Z);
GET_ARGUMENT_L("normaliser=",les_translations_sont_a_normaliser);
GET_ARGUMENT_F("bx=""bX=""Bx=""BX=",translation_des_X_normalisees);
GET_ARGUMENT_F("by=""bY=""By=""BY=",translation_des_Y_normalisees);
GET_ARGUMENT_F("bz=""bZ=""Bz=""BZ=",translation_des_Z_normalisees);
PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
/* Cette procedure fut introduite le 20061226185532... */
GET_ARGUMENT_F("exclure=""bordure=",largeur_de_la_bordure_a_exclure);
)
);
SPIRALE_DEFINITION_GENERALE(SPIRALE_DELTA_HORIZONTAL_GLOBAL,SPIRALE_DELTA_VERTICAL_GLOBAL)
/* Donnees de generation d'une spirale de parcours d'un espace abstrait bidimensionnel */
/* de parametrage de la generation des evenements. */
#include xci/coordonne.03.I"
Test(IFOU(EST_VRAI(le_maillage_triangulaire_est_aleatoire)
,EST_FAUX(le_maillage_est_complet)
)
)
/* Test introduit le 20150609075311 et complete le 20171109135545... */
Bblock
SPIRALE_VALIDATION;
/* Validation des pas de parcours (pasX,pasY) de l'espace abstrait de parametrage du */
/* generateur d'evenements. */
INITIALISATION_POINT_2D(point_courant_de_l_espace_de_parametrage_2D,Xmin,Ymin);
INITIALISATION_POINT_3D(point_courant_de_l_espace_de_parametrage_3D,Xmin,Ymin,Zmin);
/* Initialisation de l'espace de parametrage independante du format de l'image, puisque le */
/* point 'min' n'en depend pas... */
Eblock
ATes
Bblock
Eblock
ETes
begin_album
Bblock
DEFV(Float,INIT(Xf
,COND(IL_FAUT(editer_des_coordonnees_normalisees)
,AXPB(facteur_de_X
,SUPER_cNORMALISE_OX(X)
,NORMALISER_LES_TRANSLATIONS(translation_des_X_normalisees
,SUPER_cNORMALISE_OX
)
)
,FLOT(X)
)
)
);
DEFV(Float,INIT(Yf
,COND(IL_FAUT(editer_des_coordonnees_normalisees)
,AXPB(facteur_de_Y
,SUPER_cNORMALISE_OY(Y)
,NORMALISER_LES_TRANSLATIONS(translation_des_Y_normalisees
,SUPER_cNORMALISE_OY
)
)
,FLOT(Y)
)
)
);
DEFV(Float,INIT(Zf
,COND(IL_FAUT(editer_des_coordonnees_normalisees)
,AXPB(facteur_de_Z
,_____cNORMALISE_OZ(Z)
,NORMALISER_LES_TRANSLATIONS(translation_des_Z_normalisees
,_____lNORMALISE_OZ
)
)
,FLOT(Z)
)
)
);
Test(IFOU(IL_NE_FAUT_PAS(editer_des_coordonnees_normalisees)
,IFET(IL_FAUT(editer_des_coordonnees_normalisees)
,I3ET(IFINff(Xf
,ADD2(SUPER_cNORMALISE_OX(Xmin),largeur_de_la_bordure_a_exclure)
,SOUS(SUPER_cNORMALISE_OX(Xmax),largeur_de_la_bordure_a_exclure)
)
,IFINff(Yf
,ADD2(SUPER_cNORMALISE_OY(Ymin),largeur_de_la_bordure_a_exclure)
,SOUS(SUPER_cNORMALISE_OY(Ymax),largeur_de_la_bordure_a_exclure)
)
,IFINff(Zf
,ADD2(_____cNORMALISE_OZ(Zmin),largeur_de_la_bordure_a_exclure)
,SOUS(_____cNORMALISE_OZ(Zmax),largeur_de_la_bordure_a_exclure)
)
)
)
)
)
Bblock
Test(IL_FAUT(generer_un_maillage))
/* Test introduit le 20150525094329... */
Bblock
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,_____Z
,MOVE_X,_____Y,_____Z
,IL_FAUT(tracer_le_segment_000_100)
);
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,_____Y,_____Z
,MOVE_X,MOVE_Y,_____Z
,IL_FAUT(tracer_le_segment_100_110)
);
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,MOVE_Y,_____Z
,MOVE_X,MOVE_Y,_____Z
,IL_FAUT(tracer_le_segment_110_010)
);
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,_____Z
,_____X,MOVE_Y,_____Z
,IL_FAUT(tracer_le_segment_010_000)
);
/* Face {000,100,110,010}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,MOVE_Z
,MOVE_X,_____Y,MOVE_Z
,IL_FAUT(tracer_le_segment_001_101)
);
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,_____Y,MOVE_Z
,MOVE_X,MOVE_Y,MOVE_Z
,IL_FAUT(tracer_le_segment_101_111)
);
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,MOVE_Y,MOVE_Z
,MOVE_X,MOVE_Y,MOVE_Z
,IL_FAUT(tracer_le_segment_111_011)
);
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,MOVE_Z
,_____X,MOVE_Y,MOVE_Z
,IL_FAUT(tracer_le_segment_011_001)
);
/* Face {001,101,111,011}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,_____Z
,_____X,_____Y,MOVE_Z
,IL_FAUT(tracer_le_segment_000_001)
);
/* Cote {000,001}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,_____Y,_____Z
,MOVE_X,_____Y,MOVE_Z
,IL_FAUT(tracer_le_segment_100_101)
);
/* Cote {100,101}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,MOVE_Y,_____Z
,MOVE_X,MOVE_Y,MOVE_Z
,IL_FAUT(tracer_le_segment_110_111)
);
/* Cote {110,111}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,MOVE_Y,_____Z
,_____X,MOVE_Y,MOVE_Z
,IL_FAUT(tracer_le_segment_010_011)
);
/* Cote {010,011}. */
/* */
/* La generation de la maille carree a ete introduite le 20150525100223... */
/* */
/* Notations : */
/* */
/* */
/* H=010 G=110 */
/* .-------------------. */
/* /. /| */
/* / . / | */
/* / . / | */
/* / . / | */
/* -------------------/ | */
/* D=011 . C=111 | */
/* | . | | */
/* | . | | */
/* | . | | */
/* | E=000 | F=100 */
/* | ...............|....| */
/* | . | / */
/* | . | / */
/* | . | / */
/* |. |/ */
/* .-------------------. */
/* */
/* A=001 B=101 */
/* */
/* */
/* en rappelant que le referentiel 'XYZ' est direct et qu'ainsi l'axe 'OZ' est dirige */
/* vers l'observateur... */
/* */
/* Le 20150526150815, les translations ont ete reordonnees afin que les segments */
/* horizontaux et verticaux...) soient edites de facon a ce que les coordonnees X */
/* et Y soient croissantes (cela est rendu necessaire par les tests de redondance */
/* ('v $xiirv/.MAIL.11.1.$U redondants' par exemple...). */
Test(EST_VRAI(le_maillage_est_triangulaire))
Bblock
/* Un petit probleme est que les diagonales tracees ci-apres, lorsqu'elles appartiennent */
/* a deux faces paralleles opposees, sont orthogonales et alors, lors de la juxtaposition */
/* de deux cubes, leur face commune semble alors contenir une croix (deux diagonales */
/* orthogonales...). */
Test(EST_VRAI(le_maillage_triangulaire_est_aleatoire))
/* Possibilite introduite le 20150609075311... */
Bblock
GENERATION_DE_LA_VALEUR_ALEATOIRE_COURANTE(valeur_aleatoire);
Test(IFLE(valeur_aleatoire,seuil_du_maillage_triangulaire_aleatoire))
Bblock
EGAL(le_maillage_triangulaire_est_montant___,VRAI);
EGAL(le_maillage_triangulaire_est_descendant,FAUX);
Eblock
ATes
Bblock
EGAL(le_maillage_triangulaire_est_montant___,FAUX);
EGAL(le_maillage_triangulaire_est_descendant,VRAI);
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,_____Z
,MOVE_X,MOVE_Y,_____Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
,IL_FAUT(tracer_le_segment_000_110)
)
);
/* Diagonale {000,110}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,_____Z
,_____X,MOVE_Y,MOVE_Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
,IL_FAUT(tracer_le_segment_000_011)
)
);
/* Diagonale {000,011}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,_____Z
,MOVE_X,_____Y,MOVE_Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
,IL_FAUT(tracer_le_segment_000_101)
)
);
/* Diagonale {000,101}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,MOVE_Y,_____Z
,_____X,MOVE_Y,MOVE_Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
,IL_FAUT(tracer_le_segment_110_011)
)
);
/* Diagonale {110,011}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,MOVE_Y,MOVE_Z
,MOVE_X,_____Y,MOVE_Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
,IL_FAUT(tracer_le_segment_011_101)
)
);
/* Diagonale {011,101}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,_____Y,MOVE_Z
,MOVE_X,MOVE_Y,_____Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_montant___)
,IL_FAUT(tracer_le_segment_101_110)
)
);
/* Diagonale {101,110}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,MOVE_Z
,MOVE_X,_____Y,_____Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
,IL_FAUT(tracer_le_segment_001_100)
)
);
/* Diagonale {001,100}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,MOVE_Z
,_____X,MOVE_Y,_____Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
,IL_FAUT(tracer_le_segment_001_010)
)
);
/* Diagonale {001,010}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,_____Y,MOVE_Z
,MOVE_X,MOVE_Y,MOVE_Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
,IL_FAUT(tracer_le_segment_001_111)
)
);
/* Diagonale {001,111}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,_____Y,_____Z
,_____X,MOVE_Y,_____Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
,IL_FAUT(tracer_le_segment_100_010)
)
);
/* Diagonale {100,010}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,_____X,MOVE_Y,_____Z
,MOVE_X,MOVE_Y,MOVE_Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
,IL_FAUT(tracer_le_segment_010_111)
)
);
/* Diagonale {010,111}. */
EDITION_D_UN_SEGMENT(Xf,Yf,Zf
,MOVE_X,MOVE_Y,MOVE_Z
,MOVE_X,_____Y,_____Z
,IFET(EST_VRAI(le_maillage_triangulaire_est_descendant)
,IL_FAUT(tracer_le_segment_111_100)
)
);
/* Diagonale {111,100}. */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
EDITION_D_UN_POINT(Xf,Yf,Zf,C_LF);
/* Et enfin, edition d'une combinaison lineaire des coordonnees du point courant. */
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
Eblock
end_album
RETU_Commande;
Eblock
ECommande