/*************************************************************************************************************************************/
/* */
/* T E N T A T I V E D E */
/* S U R J E C T I O N F R A C T A L E D E [ 0 , 1 ] D A N S [ 0 , 1 ] x [ 0 , 1 ] x [ 0 , 1 ] D E P E A N O : */
/* */
/* */
/* Author of '$xci/valeurs_Peano3D$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20220402134009). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 : */
/* */
/*************************************************************************************************************************************/
#define EDITER_LA_DEFINITION_DU_CUBE \
FAUX
#define EDITER_LA_DEFINITION_DES_SOUS_CUBES \
FAUX
/* Faut-il editer la definition du cube ('VRAI') ou pas ('FAUX') ? L'edition de la */
/* definition des 8 sous-cubes a ete introduite le 20220519182601.. */
#define EDITER_DES_EXPLICATIONS \
FAUX \
/* Faut-il editer des explications ('VRAI') ou pas ('FAUX') ? */
#define GENERER_UNE_COURBE_TRIDIMENSIONNELLE \
VRAI
#define GENERER_LA_COMPOSANTE_X \
VRAI
#define GENERER_LA_COMPOSANTE_Y \
VRAI
#define GENERER_LA_COMPOSANTE_Z \
VRAI
/* Choix des composantes a generer (introduit le 20220405120625)... */
#include xci/valeurs_Peano2D.I"
#include xci/valeurs_Peano3D.I"
/* Parametres de definition de l'extraction de decimales (introduits le 20220405113140 et */
/* mis sous cette forme le 20220405135155...). */
#define SELECTION_0 \
ZERO
#define SELECTION_1 \
UN
#define SELECTION_2 \
DEUX
#define SELECTION_3 \
TROIS
#define SELECTION_4 \
QUATRE
#define SELECTION_5 \
CINQ
#define SELECTION_6 \
SIX
#define SELECTION_7 \
SEPT
#define SELECTION_8 \
HUIT
#define SELECTION_9 \
NEUF
/* Introduits le 20220404142306... */
#define CONVERSION_0 \
FZERO
#define CONVERSION_1 \
FU
#define CONVERSION_2 \
FDEUX
#define CONVERSION_3 \
FTROIS
#define NOMBRE_DE_DECIMALES_BASE_B_DU_PARAMETRE_T \
SIX \
/* Nombre de decimales en base 4 du parametre 'T' qui doit etre pair... */
#define CHAINER_LES_POINTS \
VRAI \
/* Faut-il chainer les points ('VRAI') ou pas ('FAUX') ? */
#define PONDERATION_DE_T \
FU
#define PONDERATION_DE_X \
FZERO
#define PONDERATION_DE_Y \
FZERO
#define PONDERATION_DE_Z \
FZERO
/* Ponderations respectives de 'T', 'X', 'Y' et 'Z'. */
#include xci/valeurs.01.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#include xci/valeurs.02.I"
#define BASE_DE_DEFINITION_MOINS_1 \
PRED(base_de_definition)
#define INDEX_DE_LA_PREMIERE_DECIMALE \
UN
#define INDEXATION_DES_DECIMALES(decimales,index) \
ITb1(decimales,SOUS(MAX2(index,INDEX_DE_LA_PREMIERE_DECIMALE),INDEX_DE_LA_PREMIERE_DECIMALE))
/* Indexation des decimales... */
/* */
/* Le 20220403101348 a ete introduit le 'MAX2(...,INDEX_DE_LA_PREMIERE_DECIMALE)' afin */
/* d'eviter des sorties des tableaux... */
#define NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z \
DIVI(nombre_de_decimales_base_B_du_parametre_T,dimension_de_la_courbe) \
/* Nombre de decimales en base 4 des coordonnees 'X', 'Y' et 'Z'. */
#define NOMBRE_DE_POINTS \
INTE(PUIX(base_de_definition,nombre_de_decimales_base_B_du_parametre_T)) \
/* Nombre de points a calculer... */
#define GENERATION_BIDIMENSIONNELLE(generer_X,trans__SX,trans__TX,trans__X,generer_Y,trans__SY,trans__TY,trans__Y,generer_Z) \
Bblock \
EGAL(dimension_de_la_courbe,DIMENSION_DE_LA_COURBE_2D); \
\
EGAL(generer_X,VRAI); \
EGAL(trans__SX,TRANSLATION_2D__INDEX_SX); \
EGAL(trans__TX,TRANSLATION_2D__INDEX_TX); \
EGAL(trans__X,TRANSLATION_2D__INDEX_X); \
\
EGAL(generer_Y,VRAI); \
EGAL(trans__SY,TRANSLATION_2D__INDEX_SY); \
EGAL(trans__TY,TRANSLATION_2D__INDEX_TY); \
EGAL(trans__Y,TRANSLATION_2D__INDEX_Y); \
\
EGAL(generer_Z,FAUX); \
Eblock \
/* Procedure introduite le 20220406102812... */
#define SELECTION_COORDONNEE(DCoordonnee,somme) \
Bblock \
DEFV(Int,INIT(selecteur,REST(somme,BASE_DE_DEFINITION_MOINS_1))); \
/* Le 20220405154530 je note un grave probleme : par defaut le reste est calcule avec un */ \
/* diviseur egal a 4-1=3. Les restes possibles sont donc {0,1,2} et sont donc en nombre */ \
/* impair. Et donc les deux instructions : */ \
/* */ \
/* EGAL(DCoordonnee,NEUT(DecimaleCourante_T)); */ \
/* */ \
/* et : */ \
/* */ \
/* EGAL(DCoordonnee,SOUS(BASE_DE_DEFINITION_MOINS_1,DecimaleCourante_T)); */ \
/* */ \
/* ne seront pas en nombre egal (a priori deux fois plus de la premiere que de la seconde) ! */ \
\
CHoi(selecteur) \
Bblock \
CA5e(selection_0,selection_2,selection_4,selection_6,selection_8) \
Bblock \
/* Nombre de passages ici suivant le nombre de decimales : */ \
/* */ \
/* 81 [nombre_de_decimales_base_B_du_parametre_T=3] */ \
/* 3645 [nombre_de_decimales_base_B_du_parametre_T=6] */ \
/* 131220 [nombre_de_decimales_base_B_du_parametre_T=9] */ \
/* */ \
/* (mesures effectuee grace a 'v $xiirv/$Fnota Debut_listG_PEAN_1'). */ \
EGAL(DCoordonnee,NEUT(DecimaleCourante_T)); \
\
INCR(compteur_selection_1,I); \
Eblock \
ECA5 \
\
CA5e(selection_1,selection_3,selection_5,selection_7,selection_9) \
Bblock \
/* Nombre de passages ici suivant le nombre de decimales : */ \
/* */ \
/* 0 [nombre_de_decimales_base_B_du_parametre_T=3] */ \
/* 729 [nombre_de_decimales_base_B_du_parametre_T=6] */ \
/* 45927 [nombre_de_decimales_base_B_du_parametre_T=9] */ \
/* */ \
/* (mesures effectuee grace a 'v $xiirv/$Fnota Debut_listG_PEAN_1'). */ \
EGAL(DCoordonnee,SOUS(BASE_DE_DEFINITION_MOINS_1,DecimaleCourante_T)); \
\
INCR(compteur_selection_2,I); \
Eblock \
ECA5 \
\
DEfo \
Bblock \
PRINT_ERREUR("un selecteur de coordonnee incoherent est apparu avec une base trop importante"); \
CAL1(Prer2("(ce selecteur vaut %d et la base est egale a %d)\n",selecteur,base_de_definition)); \
Eblock \
EDEf \
Eblock \
ECHo \
/* Rapport des nombres de passages suivant le nombre de decimales : */ \
/* */ \
/* 81/0 = infini [nombre_de_decimales_base_B_du_parametre_T=3] */ \
/* 3645/729 = 5.00 [nombre_de_decimales_base_B_du_parametre_T=6] */ \
/* 131220/45927 = 2.86 [nombre_de_decimales_base_B_du_parametre_T=9] */ \
/* */ \
Eblock
#define CONVERSION_EN_BASE_10(faire_la_conversion,variable,liste,borne) \
Bblock \
Test(IL_FAUT(faire_la_conversion)) \
Bblock \
DEFV(Int,INIT(index,UNDEF)); \
DEFV(Float,INIT(puissance,FU)); \
\
EGAL(variable,FZERO); \
\
DoIn(index,INDEX_DE_LA_PREMIERE_DECIMALE,borne,I) \
Bblock \
DEFV(Int,INIT(decimale_courante,INDEXATION_DES_DECIMALES(liste,index))); \
DEFV(Float,INIT(decimale_convertie,FLOT(decimale_courante))); \
/* Valeur par defaut... */ \
\
Test(IFEQ(base_de_definition,BASE_DE_DEFINITION_3D)) \
Bblock \
CHoi(decimale_courante) \
Bblock \
CAse(CONVERSION_0) \
Bblock \
EGAL(decimale_convertie,conversion_0); \
Eblock \
ECAs \
\
CAse(CONVERSION_1) \
Bblock \
EGAL(decimale_convertie,conversion_1); \
Eblock \
ECAs \
\
CAse(CONVERSION_2) \
Bblock \
EGAL(decimale_convertie,conversion_2); \
Eblock \
ECAs \
\
CAse(CONVERSION_3) \
Bblock \
EGAL(decimale_convertie,conversion_3); \
Eblock \
ECAs \
\
DEfo \
Bblock \
PRINT_ERREUR("une decimale base 4 differente de {0,1,2,3} est apparue"); \
CAL1(Prer1("(elle vaut '%d')\n",decimale_courante)); \
Eblock \
EDEf \
Eblock \
ECHo \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
\
EGAL(puissance,DIVI(puissance,FLOT(base_de_definition))); \
INCR(variable,MUL2(decimale_convertie,puissance)); \
Eblock \
EDoI \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Conversion de la base 4 vers la base 10. */
#define EDITION_DE_LA_DEFINITION_DU_CUBE(editer,sommetX,sommetY,sommetZ) \
Bblock \
SET_CURSOR(sommetX,sommetY,sommetZ); \
\
EDITION_DES_COORDONNEES(editer \
,"xB=%+.^^^ yB=%+.^^^ zB=%+.^^^ DefinitionCube=" \
,sommetX \
,sommetY \
,sommetZ \
); \
Eblock \
/* Edition de la definition du cube... */
#define EDITION_DES_EXPLICATIONS(sequence) \
Bblock \
Test(IL_FAUT(editer_des_explications)) \
Bblock \
BLOC(sequence); \
/* Sequence d'edition... */ \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition d'explications concernant la surjection de [0,1] dans [0,1]x[0,1]x[0,1]. */
#define EDITION_DES_COORDONNEES(editer,format_coordonnees_X_Y_et_Z,Coordonnee_X,Coordonnee_Y,Coordonnee_Z) \
Bblock \
Test(IL_FAUT(editer)) \
Bblock \
CAL2(Prin3(format_coordonnees_X_Y_et_Z \
,Coordonnee_X \
,Coordonnee_Y \
,Coordonnee_Z \
) \
); \
\
CAL2(Prin0("\n")); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Edition des coordonnees. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F O N C T I O N D ' I M B R I C A T I O N D E S " D E C I M A L E S " E N B A S E 4 : */
/* */
/*************************************************************************************************************************************/
DEFV(Local,DEFV(Logical,INIT(editer_des_explications,EDITER_DES_EXPLICATIONS)));
/* Faut-il editer des explications ('VRAI') ou pas ('FAUX') ? */
DEFV(Local,DEFV(Int,INIT(dimension_de_la_courbe,DIMENSION_DE_LA_COURBE_3D)));
/* Dimension de la courbe... */
DEFV(Local,DEFV(Int,INIT(base_de_definition,BASE_DE_DEFINITION_3D)));
/* Base de definition du parametre 'T' et des coordonnees 'X', 'Y' et 'Z'. */
DEFV(Local,DEFV(Logical,INIT(generer_une_courbe_tridimensionnelle,GENERER_UNE_COURBE_TRIDIMENSIONNELLE)));
DEFV(Local,DEFV(Logical,INIT(generer_la_composante_X,GENERER_LA_COMPOSANTE_X)));
DEFV(Local,DEFV(Logical,INIT(generer_la_composante_Y,GENERER_LA_COMPOSANTE_Y)));
DEFV(Local,DEFV(Logical,INIT(generer_la_composante_Z,GENERER_LA_COMPOSANTE_Z)));
/* Choix des composantes a generer (introduit le 20220405120625)... */
DEFV(Local,DEFV(Int,INIT(translation__index_SX,TRANSLATION_3D__INDEX_SX)));
DEFV(Local,DEFV(Int,INIT(translation__index_TX,TRANSLATION_3D__INDEX_TX)));
DEFV(Local,DEFV(Int,INIT(translation__index_X,TRANSLATION_3D__INDEX_X)));
DEFV(Local,DEFV(Int,INIT(translation__index_SY,TRANSLATION_3D__INDEX_SY)));
DEFV(Local,DEFV(Int,INIT(translation__index_TY,TRANSLATION_3D__INDEX_TY)));
DEFV(Local,DEFV(Int,INIT(translation__index_Y,TRANSLATION_3D__INDEX_Y)));
DEFV(Local,DEFV(Int,INIT(translation__index_SZ,TRANSLATION_3D__INDEX_SZ)));
DEFV(Local,DEFV(Int,INIT(translation__index_TZ,TRANSLATION_3D__INDEX_TZ)));
DEFV(Local,DEFV(Int,INIT(translation__index_Z,TRANSLATION_3D__INDEX_Z)));
/* Parametres de definition de l'extraction de decimales (introduits le 20220405113140). */
DEFV(Local,DEFV(Positive,INIT(compteur_selection_1,ZERO)));
DEFV(Local,DEFV(Positive,INIT(compteur_selection_2,ZERO)));
/* Compteurs des cas possibles de 'SELECTION_COORDONNEE(...)' introduits le 20220408095435. */
DEFV(Local,DEFV(Int,INIT(selection_0,SELECTION_0)));
DEFV(Local,DEFV(Int,INIT(selection_1,SELECTION_1)));
DEFV(Local,DEFV(Int,INIT(selection_2,SELECTION_2)));
DEFV(Local,DEFV(Int,INIT(selection_3,SELECTION_3)));
DEFV(Local,DEFV(Int,INIT(selection_4,SELECTION_4)));
DEFV(Local,DEFV(Int,INIT(selection_5,SELECTION_5)));
DEFV(Local,DEFV(Int,INIT(selection_6,SELECTION_6)));
DEFV(Local,DEFV(Int,INIT(selection_7,SELECTION_7)));
DEFV(Local,DEFV(Int,INIT(selection_8,SELECTION_8)));
DEFV(Local,DEFV(Int,INIT(selection_9,SELECTION_9)));
/* Introduits le 20220404142306... */
DEFV(Local,DEFV(Float,INIT(conversion_0,CONVERSION_0)));
DEFV(Local,DEFV(Float,INIT(conversion_1,CONVERSION_1)));
DEFV(Local,DEFV(Float,INIT(conversion_2,CONVERSION_2)));
DEFV(Local,DEFV(Float,INIT(conversion_3,CONVERSION_3)));
/* Pour le plaisir... */
DEFV(Local,DEFV(Int,INIT(nombre_de_decimales_base_B_du_parametre_T,NOMBRE_DE_DECIMALES_BASE_B_DU_PARAMETRE_T)));
/* Nombre de decimales en base 4 du parametre 'T' qui doit etre pair... */
DEFV(Local,DEFV(Float,INIT(Parametre_T,FLOT__UNDEF)));
/* Parametre 'T'. */
DEFV(Local,DEFV(Float,INIT(Coordonnee_courante___X,FZERO)));
DEFV(Local,DEFV(Float,INIT(Coordonnee_courante___Y,FZERO)));
DEFV(Local,DEFV(Float,INIT(Coordonnee_courante___Z,FZERO)));
/* Coordonnees 'X', 'Y' et 'Z' a l'instant 'T' courant. */
/* */
/* Le 20220405120625, la valeur par defaut est passee de 'FLOT__UNDEF' a 'FZERO' afin */
/* de premdre en compte les cas ou l'une des composantes n'est pas generee... */
DEFV(Local,DEFV(Float,INIT(Coordonnee_anterieure_X,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Coordonnee_anterieure_Y,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(Coordonnee_anterieure_Z,FLOT__UNDEF)));
/* Coordonnees 'X', 'Y' et 'Z' a l'instant 'T' precedent. */
BFonctionV
DEFV(FonctionV,SurjectionDePeano(DecimalesParametre_T))
DEFV(Argument,DEFV(Int,DTb0(DecimalesParametre_T)));
Bblock
DEFV(Int,DdTb1(POINTERi,DecimalesCoordonnee_X,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,ADRESSE_NON_ENCORE_DEFINIE));
MdTb1(DecimalesCoordonnee_X,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,Int,ADRESSE_NON_ENCORE_DEFINIE);
DEFV(Int,DdTb1(POINTERi,DecimalesCoordonnee_Y,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,ADRESSE_NON_ENCORE_DEFINIE));
MdTb1(DecimalesCoordonnee_Y,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,Int,ADRESSE_NON_ENCORE_DEFINIE);
DEFV(Int,DdTb1(POINTERi,DecimalesCoordonnee_Z,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,ADRESSE_NON_ENCORE_DEFINIE));
MdTb1(DecimalesCoordonnee_Z,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,Int,ADRESSE_NON_ENCORE_DEFINIE);
DEFV(Int,INIT(index1,UNDEF));
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("\nT=0.{"));
DoIn(index1,INDEX_DE_LA_PREMIERE_DECIMALE,nombre_de_decimales_base_B_du_parametre_T,I)
Bblock
DEFV(Int,INIT(DecimaleCourante_T,UNDEF));
EGAL(DecimaleCourante_T,INDEXATION_DES_DECIMALES(DecimalesParametre_T,index1));
CAL2(Prin1("%d",DecimaleCourante_T));
Eblock
EDoI
Eblock
CAL2(Prin0("}"));
)
);
Test(IL_FAUT(generer_la_composante_X))
Bblock
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("\nX=0.{"));
Eblock
)
);
DoIn(index1,INDEX_DE_LA_PREMIERE_DECIMALE,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,I)
Bblock
DEFV(Int,INIT(DecimaleCourante_T,UNDEF));
DEFV(Int,INIT(somme_X,ZERO));
DEFV(Int,INIT(DecimaleCourante_X,UNDEF));
DEFV(Int,INIT(index_SX,UNDEF));
DEFV(Int,INIT(index_T,AXPB(dimension_de_la_courbe,index1,translation__index_TX)));
Test(INCLff(index_T,INDEX_DE_LA_PREMIERE_DECIMALE,nombre_de_decimales_base_B_du_parametre_T))
Bblock
DoIn(index_SX,INDEX_DE_LA_PREMIERE_DECIMALE,ADD2(index1,translation__index_SX),I)
Bblock
DEFV(Int,INIT(index_X,AXPB(dimension_de_la_courbe,index_SX,translation__index_X)));
Test(INCLff(index_X,INDEX_DE_LA_PREMIERE_DECIMALE,nombre_de_decimales_base_B_du_parametre_T))
Bblock
INCR(somme_X,INDEXATION_DES_DECIMALES(DecimalesParametre_T,index_X));
Eblock
ATes
Bblock
Eblock
ETes
Eblock
EDoI
EGAL(DecimaleCourante_T,INDEXATION_DES_DECIMALES(DecimalesParametre_T,index_T));
SELECTION_COORDONNEE(DecimaleCourante_X,somme_X);
EGAL(INDEXATION_DES_DECIMALES(DecimalesCoordonnee_X,index1),DecimaleCourante_X);
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin1("%d--",DecimaleCourante_X));
Eblock
)
);
Eblock
ATes
Bblock
Eblock
ETes
Eblock
EDoI
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("}"));
Eblock
)
);
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(generer_la_composante_Y))
Bblock
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("\nY=0.{"));
Eblock
)
);
DoIn(index1,INDEX_DE_LA_PREMIERE_DECIMALE,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,I)
Bblock
DEFV(Int,INIT(DecimaleCourante_T,UNDEF));
DEFV(Int,INIT(somme_Y,ZERO));
DEFV(Int,INIT(DecimaleCourante_Y,UNDEF));
DEFV(Int,INIT(index_SY,UNDEF));
DEFV(Int,INIT(index_T,AXPB(dimension_de_la_courbe,index1,translation__index_TY)));
Test(INCLff(index_T,INDEX_DE_LA_PREMIERE_DECIMALE,nombre_de_decimales_base_B_du_parametre_T))
Bblock
DoIn(index_SY,INDEX_DE_LA_PREMIERE_DECIMALE,ADD2(index1,translation__index_SY),I)
Bblock
DEFV(Int,INIT(index_Y,AXPB(dimension_de_la_courbe,index_SY,translation__index_Y)));
Test(INCLff(index_Y,INDEX_DE_LA_PREMIERE_DECIMALE,nombre_de_decimales_base_B_du_parametre_T))
Bblock
INCR(somme_Y,INDEXATION_DES_DECIMALES(DecimalesParametre_T,index_Y));
Eblock
ATes
Bblock
Eblock
ETes
Eblock
EDoI
EGAL(DecimaleCourante_T,INDEXATION_DES_DECIMALES(DecimalesParametre_T,index_T));
SELECTION_COORDONNEE(DecimaleCourante_Y,somme_Y);
EGAL(INDEXATION_DES_DECIMALES(DecimalesCoordonnee_Y,index1),DecimaleCourante_Y);
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin1("-%d-",DecimaleCourante_Y));
Eblock
)
);
Eblock
ATes
Bblock
Eblock
ETes
Eblock
EDoI
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("}"));
Eblock
)
);
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_FAUT(generer_la_composante_Z))
Bblock
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("\nZ=0.{"));
Eblock
)
);
DoIn(index1,INDEX_DE_LA_PREMIERE_DECIMALE,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,I)
Bblock
DEFV(Int,INIT(DecimaleCourante_T,UNDEF));
DEFV(Int,INIT(somme_Z,ZERO));
DEFV(Int,INIT(DecimaleCourante_Z,UNDEF));
DEFV(Int,INIT(index_SZ,UNDEF));
DEFV(Int,INIT(index_T,AXPB(dimension_de_la_courbe,index1,translation__index_TZ)));
Test(INCLff(index_T,INDEX_DE_LA_PREMIERE_DECIMALE,nombre_de_decimales_base_B_du_parametre_T))
Bblock
DoIn(index_SZ,INDEX_DE_LA_PREMIERE_DECIMALE,ADD2(index1,translation__index_SZ),I)
Bblock
DEFV(Int,INIT(index_Z,AXPB(dimension_de_la_courbe,index_SZ,translation__index_Z)));
Test(INCLff(index_Z,INDEX_DE_LA_PREMIERE_DECIMALE,nombre_de_decimales_base_B_du_parametre_T))
Bblock
INCR(somme_Z,INDEXATION_DES_DECIMALES(DecimalesParametre_T,index_Z));
Eblock
ATes
Bblock
Eblock
ETes
Eblock
EDoI
EGAL(DecimaleCourante_T,INDEXATION_DES_DECIMALES(DecimalesParametre_T,index_T));
SELECTION_COORDONNEE(DecimaleCourante_Z,somme_Z);
EGAL(INDEXATION_DES_DECIMALES(DecimalesCoordonnee_Z,index1),DecimaleCourante_Z);
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin1("--%d",DecimaleCourante_Z));
Eblock
)
);
Eblock
ATes
Bblock
Eblock
ETes
Eblock
EDoI
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("}"));
Eblock
)
);
Eblock
ATes
Bblock
Eblock
ETes
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin0("\n"));
Eblock
)
);
CONVERSION_EN_BASE_10(TOUJOURS_VRAI
,Parametre_T
,DecimalesParametre_T
,nombre_de_decimales_base_B_du_parametre_T
);
CONVERSION_EN_BASE_10(generer_la_composante_X
,Coordonnee_courante___X
,DecimalesCoordonnee_X
,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z
);
CONVERSION_EN_BASE_10(generer_la_composante_Y
,Coordonnee_courante___Y
,DecimalesCoordonnee_Y
,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z
);
CONVERSION_EN_BASE_10(generer_la_composante_Z
,Coordonnee_courante___Z
,DecimalesCoordonnee_Z
,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z
);
FdTb1(DecimalesCoordonnee_Z,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,Int,ADRESSE_PLUS_DEFINIE);
FdTb1(DecimalesCoordonnee_Y,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,Int,ADRESSE_PLUS_DEFINIE);
FdTb1(DecimalesCoordonnee_X,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_Y_ET_Z,Int,ADRESSE_PLUS_DEFINIE);
RETU_VIDE;
Eblock
EFonctionV
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* T E N T A T I V E D E */
/* S U R J E C T I O N F R A C T A L E D E [ 0 , 1 ] D A N S [ 0 , 1 ] x [ 0 , 1 ] x [ 0 , 1 ] D E P E A N O : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Logical,INIT(editer_la_definition_du_cube,EDITER_LA_DEFINITION_DU_CUBE));
DEFV(Logical,INIT(editer_la_definition_des_sous_cubes,EDITER_LA_DEFINITION_DES_SOUS_CUBES));
/* Faut-il editer la definition du cube ('VRAI') ou pas ('FAUX') ? L'edition de la */
/* definition des 8 sous-cubes a ete introduite le 20220519182601.. */
DEFV(Logical,INIT(chainer_les_points,CHAINER_LES_POINTS));
/* Faut-il chainer les points ('VRAI') ou pas ('FAUX') ? */
DEFV(Float,INIT(ponderation_de_T,PONDERATION_DE_T));
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 'T', 'X', 'Y' et 'Z'. */
#include xci/valeurs.03.I"
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_L("definition_cube=""dc=",editer_la_definition_du_cube);
GET_ARGUMENT_L("definition_sous_cubes=""dsc=",editer_la_definition_des_sous_cubes);
/* Argument introduit le 20220519182608... */
GET_ARGUMENT_L("editer_explications=""ee=",editer_des_explications);
GET_ARGUMENT_I("base=""b=",base_de_definition);
GET_ARGUMENT_I("nombre_decimales=""nd=",nombre_de_decimales_base_B_du_parametre_T);
GET_ARGUMENT_L("chainer_points=""cp=",chainer_les_points);
GET_ARGUMENT_L("tridimensionnelle=""3D=",generer_une_courbe_tridimensionnelle);
GET_ARGUMENT_N("bidimensionnelle=""2D=",generer_une_courbe_tridimensionnelle);
GET_ARGUMENT_L("generer_X=""gX=",generer_la_composante_X);
GET_ARGUMENT_L("generer_Y=""gY=",generer_la_composante_Y);
GET_ARGUMENT_L("generer_Z=""gZ=",generer_la_composante_Z);
/* Options introduites le 20220405120625... */
GET_ARGUMENT_I("translation_SX=""tSX=",translation__index_SX);
GET_ARGUMENT_I("translation_TX=""tTX=",translation__index_TX);
GET_ARGUMENT_I("translation_X=""tX=",translation__index_X);
GET_ARGUMENT_I("translation_SY=""tSY=",translation__index_SY);
GET_ARGUMENT_I("translation_TY=""tTY=",translation__index_TY);
GET_ARGUMENT_I("translation_Y=""tY=",translation__index_Y);
GET_ARGUMENT_I("translation_SZ=""tSZ=",translation__index_SZ);
GET_ARGUMENT_I("translation_TZ=""tTZ=",translation__index_TZ);
GET_ARGUMENT_I("translation_Z=""tZ=",translation__index_Z);
/* Options introduites le 20220405115239... */
GET_ARGUMENT_I("s0=",selection_0);
GET_ARGUMENT_I("s1=",selection_1);
GET_ARGUMENT_I("s2=",selection_2);
GET_ARGUMENT_I("s3=",selection_3);
GET_ARGUMENT_I("s4=",selection_4);
GET_ARGUMENT_I("s5=",selection_5);
GET_ARGUMENT_I("s6=",selection_6);
GET_ARGUMENT_I("s7=",selection_7);
GET_ARGUMENT_I("s8=",selection_8);
GET_ARGUMENT_I("s9=",selection_9);
/* Arguments introduits le 20220404142306... */
GET_ARGUMENT_F("c0=",conversion_0);
GET_ARGUMENT_F("c1=",conversion_1);
GET_ARGUMENT_F("c2=",conversion_2);
GET_ARGUMENT_F("c3=",conversion_3);
GET_ARGUMENT_F("Pt=""PT=",ponderation_de_T);
GET_ARGUMENT_F("Px=""PX=",ponderation_de_X);
GET_ARGUMENT_F("Py=""PY=",ponderation_de_Y);
GET_ARGUMENT_F("Pz=""PZ=",ponderation_de_Z);
PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
)
);
Test(IL_FAUT(generer_une_courbe_tridimensionnelle))
Bblock
Eblock
ATes
Bblock
/* Possibilite introduite le 20220405121437... */
EGAL(base_de_definition,BASE_DE_DEFINITION_2D);
Test(I3ET(IL_FAUT(generer_la_composante_X)
,IL_FAUT(generer_la_composante_Y)
,IL_FAUT(generer_la_composante_Z)
)
)
Bblock
GENERATION_BIDIMENSIONNELLE(generer_la_composante_X,translation__index_SX,translation__index_TX,translation__index_X
,generer_la_composante_Y,translation__index_SY,translation__index_TY,translation__index_Y
,generer_la_composante_Z
);
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_NE_FAUT_PAS(generer_la_composante_X))
Bblock
GENERATION_BIDIMENSIONNELLE(generer_la_composante_Y,translation__index_SY,translation__index_TY,translation__index_Y
,generer_la_composante_Z,translation__index_SZ,translation__index_TZ,translation__index_Z
,generer_la_composante_X
);
/* Possibilite introduite le 20220406103932 a des fins de test... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_NE_FAUT_PAS(generer_la_composante_Y))
Bblock
GENERATION_BIDIMENSIONNELLE(generer_la_composante_Z,translation__index_SZ,translation__index_TZ,translation__index_Z
,generer_la_composante_X,translation__index_SX,translation__index_TX,translation__index_X
,generer_la_composante_Y
);
/* Possibilite introduite le 20220406103932 a des fins de test... */
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_NE_FAUT_PAS(generer_la_composante_Z))
Bblock
GENERATION_BIDIMENSIONNELLE(generer_la_composante_X,translation__index_SX,translation__index_TX,translation__index_X
,generer_la_composante_Y,translation__index_SY,translation__index_TY,translation__index_Y
,generer_la_composante_Z
);
/* Possibilite introduite le 20220406103932 a des fins de test... */
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ETes
Test(IFET(IFNE(base_de_definition,BASE_DE_DEFINITION_3D)
,I4OU(IFNE(conversion_0,CONVERSION_0)
,IFNE(conversion_1,CONVERSION_1)
,IFNE(conversion_2,CONVERSION_2)
,IFNE(conversion_3,CONVERSION_3)
)
)
)
Bblock
PRINT_ATTENTION("le dispositif de conversion des chiffres n'est pas disponible lorsqu'il y a changement de base.");
Eblock
ATes
Bblock
Eblock
ETes
Test(NON_DIVISIBLE(nombre_de_decimales_base_B_du_parametre_T,dimension_de_la_courbe))
Bblock
PRINT_ATTENTION("le nombre de decimales du parametre 'T' doit etre divisible par la dimension de la courbe");
CAL1(Prer1("(la valeur '%d' sera remplacee par ",nombre_de_decimales_base_B_du_parametre_T));
EGAL(nombre_de_decimales_base_B_du_parametre_T
,iMULTIPLE(nombre_de_decimales_base_B_du_parametre_T,dimension_de_la_courbe)
);
CAL1(Prer1("'%d')\n",nombre_de_decimales_base_B_du_parametre_T));
Eblock
ATes
Bblock
Eblock
ETes
begin_nouveau_block
Bblock
DEFV(Int,INIT(index1,UNDEF));
DEFV(Int,DdTb1(POINTERi,DecimalesParametre_T,nombre_de_decimales_base_B_du_parametre_T,ADRESSE_NON_ENCORE_DEFINIE));
MdTb1(DecimalesParametre_T,nombre_de_decimales_base_B_du_parametre_T,Int,ADRESSE_NON_ENCORE_DEFINIE);
DoIn(index1
,SOUS(INDEX_DE_LA_PREMIERE_DECIMALE,INDEX_DE_LA_PREMIERE_DECIMALE)
,SOUS(nombre_de_decimales_base_B_du_parametre_T,INDEX_DE_LA_PREMIERE_DECIMALE)
,I
)
Bblock
EGAL(IdTb1(DecimalesParametre_T,index1,nombre_de_decimales_base_B_du_parametre_T),ZERO);
Eblock
EDoI
Repe(NOMBRE_DE_POINTS)
Bblock
DEFV(Int,INIT(index2,UNDEF));
DEFV(Int,INIT(retenue,UN));
Test(IL_FAUT(chainer_les_points))
Bblock
Test(IFGT(compteur_des_repetitions_du_Repe,PREMIERE_ITERATION_D_UN_Repe))
Bblock
EGAL(Coordonnee_anterieure_X,Coordonnee_courante___X);
EGAL(Coordonnee_anterieure_Y,Coordonnee_courante___Y);
EGAL(Coordonnee_anterieure_Z,Coordonnee_courante___Z);
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
CALS(SurjectionDePeano(DecimalesParametre_T));
/* Surjection courante a partir du parametre 'T' courant... */
Test(IL_FAUT(chainer_les_points))
Bblock
Test(IFGT(compteur_des_repetitions_du_Repe,PREMIERE_ITERATION_D_UN_Repe))
Bblock
EDITION_DES_COORDONNEES(TOUJOURS_VRAI
,"xA=%+.^^^ yA=%+.^^^ zA=%+.^^^"
,Coordonnee_anterieure_X
,Coordonnee_anterieure_Y
,Coordonnee_anterieure_Z
);
EDITION_DES_COORDONNEES(TOUJOURS_VRAI
,"xB=%+.^^^ yB=%+.^^^ zB=%+.^^^"
,Coordonnee_courante___X
,Coordonnee_courante___Y
,Coordonnee_courante___Z
);
Eblock
ATes
Bblock
Eblock
ETes
Eblock
ATes
Bblock
CAL2(Prin2(Cara(chain_Aconcaten5(INTRODUCTION_FORMAT,valeurs_signees,".*",format_d_edition,"\n"))
,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
,LIZ4(ponderation_de_T,FLOT(Parametre_T)
,ponderation_de_X,FLOT(Coordonnee_courante___X)
,ponderation_de_Y,FLOT(Coordonnee_courante___Y)
,ponderation_de_Z,FLOT(Coordonnee_courante___Z)
)
)
);
Eblock
ETes
DoDe(index2
,SOUS(INDEX_DE_LA_PREMIERE_DECIMALE,INDEX_DE_LA_PREMIERE_DECIMALE)
,SOUS(nombre_de_decimales_base_B_du_parametre_T,INDEX_DE_LA_PREMIERE_DECIMALE)
,I
)
Bblock
INCR(IdTb1(DecimalesParametre_T,index2,nombre_de_decimales_base_B_du_parametre_T),retenue);
/* Incrementation du parametre 'T'... */
Test(IFEQ(IdTb1(DecimalesParametre_T,index2,nombre_de_decimales_base_B_du_parametre_T),base_de_definition))
Bblock
EGAL(IdTb1(DecimalesParametre_T,index2,nombre_de_decimales_base_B_du_parametre_T),ZERO);
EGAL(retenue,UN);
Eblock
ATes
Bblock
EGAL(retenue,ZERO);
Eblock
Eblock
ETes
EDoD
Eblock
ERep
Test(IL_FAUT(editer_la_definition_du_cube))
Bblock
Test(IL_FAUT(chainer_les_points))
Bblock
#include xci/valeurs_Hilbert3D.I"
/* Afin d'etre compatible avec 'v $xiirv/.PEAN.21.$U', il faut que le cube soit trace apres */
/* la trajectoire de 'T' et ce afin que ce cube semble etre derriere cette trajectoire... */
Eblock
ATes
Bblock
PRINT_ATTENTION("lors de l'edition de points isoles, la definition du cube ne peut etre editee");
Eblock
ETes
Eblock
ATes
Bblock
Eblock
ETes
EDITION_DES_EXPLICATIONS(BLOC(
Bblock
CAL2(Prin3("Rapport des 2 cas de selection : %d/%d=%f\n"
,compteur_selection_1
,compteur_selection_2
,DIVI(FLOT(compteur_selection_1),FLOT(compteur_selection_2))
)
);
Eblock
)
);
FdTb1(DecimalesParametre_T,nombre_de_decimales_base_B_du_parametre_T,Int,ADRESSE_PLUS_DEFINIE);
Eblock
end_nouveau_block
RETU_Commande;
Eblock
ECommande