/*************************************************************************************************************************************/ /* */ /* 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 ] D E P E A N O : */ /* */ /* */ /* Author of '$xci/valeurs_Peano2D$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20220322125146). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_CARRE \ FAUX #define EDITER_LA_DEFINITION_DES_SOUS_CARRES \ FAUX /* Faut-il editer la definition du carre ('VRAI') ou pas ('FAUX') ? L'edition de la */ /* definition des 4 sous-carres a ete introduite le 20220519183517... */ #define EDITER_DES_EXPLICATIONS \ FAUX \ /* Faut-il editer des explications ('VRAI') ou pas ('FAUX') ? */ #include xci/valeurs_Peano2D.I" /* Parametres de definition de l'extraction de decimales (introduits le 20220405113140 et */ /* mis sous cette forme le 20220405135206...). */ #define CONVERSION_0 \ FZERO #define CONVERSION_1 \ FU #define CONVERSION_2 \ FDEUX #define NOMBRE_DE_DECIMALES_BASE_B_DU_PARAMETRE_T \ SIX \ /* Nombre de decimales en base 3 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 /* Ponderations respectives de 'T', 'X' et 'Y'. */ #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 20220403101834 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_ET_Y \ DIVI(nombre_de_decimales_base_B_du_parametre_T,dimension_de_la_courbe) \ /* Nombre de decimales en base 3 des coordonnees 'X' et 'Y'... */ #define NOMBRE_DE_POINTS \ INTE(PUIX(base_de_definition,nombre_de_decimales_base_B_du_parametre_T)) \ /* Nombre de points a calculer... */ #define SELECTION_COORDONNEE(DCoordonnee,somme_est_paire,somme) \ Bblock \ Test(DIVISIBLE(somme,BASE_DE_DEFINITION_MOINS_1)) \ Bblock \ /* Nombre de passages ici suivant le nombre de decimales : */ \ /* */ \ /* 15 [nombre_de_decimales_base_B_du_parametre_T=2] */ \ /* 234 [nombre_de_decimales_base_B_du_parametre_T=4] */ \ /* 2889 [nombre_de_decimales_base_B_du_parametre_T=6] */ \ /* */ \ /* (mesures effectuee grace a 'v $xiirv/$Fnota Debut_listG_PEAN_2'). */ \ EGAL(somme_est_paire,VRAI); \ EGAL(DCoordonnee,DecimaleCourante_T); \ \ INCR(compteur_selection_1,I); \ Eblock \ ATes \ Bblock \ /* Nombre de passages ici suivant le nombre de decimales : */ \ /* */ \ /* 3 [nombre_de_decimales_base_B_du_parametre_T=2] */ \ /* 90 [nombre_de_decimales_base_B_du_parametre_T=4] */ \ /* 1485 [nombre_de_decimales_base_B_du_parametre_T=6] */ \ /* */ \ /* (mesures effectuee grace a 'v $xiirv/$Fnota Debut_listG_PEAN_2'). */ \ EGAL(somme_est_paire,FAUX); \ EGAL(DCoordonnee,SOUS(BASE_DE_DEFINITION_MOINS_1,DecimaleCourante_T)); \ \ INCR(compteur_selection_2,I); \ Eblock \ ETes \ /* Rapport des nombres de passages suivant le nombre de decimales : */ \ /* */ \ /* 15/3 = 5.00 [nombre_de_decimales_base_B_du_parametre_T=2] */ \ /* 234/90 = 2.60 [nombre_de_decimales_base_B_du_parametre_T=4] */ \ /* 2889/1485 = 1.95 [nombre_de_decimales_base_B_du_parametre_T=6] */ \ /* */ \ Eblock #define CONVERSION_EN_BASE_10(variable,liste,borne) \ 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_2D)) \ /* Test introduit le 20220402100544... */ \ 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 \ \ DEfo \ Bblock \ PRINT_ERREUR("une decimale base 3 differente de {0,1,2} est apparue"); \ 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 \ /* Conversion de la base 3 vers la base 10. */ #define EDITION_DE_LA_DEFINITION_DU_CARRE(sommetX,sommetY) \ Bblock \ EDITION_DES_COORDONNEES("xB=%+.^^^ yB=%+.^^^ DefinitionCarre=",sommetX,sommetY); \ /* On notera le "DefinitionCarre=" qui ne sert que d'outil de compatibilite avec */ \ /* 'v $xiirv/.HILB.21.$U DefinitionCarre='... */ \ Eblock \ /* Edition de la definition du carre... */ #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]. */ #define EDITION_DES_COORDONNEES(format_coordonnees_X_et_Y,Coordonnee_X,Coordonnee_Y) \ Bblock \ CAL2(Prin2(format_coordonnees_X_et_Y \ ,Coordonnee_X \ ,Coordonnee_Y \ ) \ ); \ CAL2(Prin0("\n")); \ 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 3 : */ /* */ /*************************************************************************************************************************************/ 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_2D))); /* Dimension de la courbe... */ DEFV(Local,DEFV(Int,INIT(base_de_definition,BASE_DE_DEFINITION_2D))); /* Base de definition du parametre 'T' et des coordonnees 'X' et 'Y'... */ DEFV(Local,DEFV(Int,INIT(translation__index_SX,TRANSLATION_2D__INDEX_SX))); DEFV(Local,DEFV(Int,INIT(translation__index_TX,TRANSLATION_2D__INDEX_TX))); DEFV(Local,DEFV(Int,INIT(translation__index_X,TRANSLATION_2D__INDEX_X))); DEFV(Local,DEFV(Int,INIT(translation__index_SY,TRANSLATION_2D__INDEX_SY))); DEFV(Local,DEFV(Int,INIT(translation__index_TY,TRANSLATION_2D__INDEX_TY))); DEFV(Local,DEFV(Int,INIT(translation__index_Y,TRANSLATION_2D__INDEX_Y))); /* 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(Float,INIT(conversion_0,CONVERSION_0))); DEFV(Local,DEFV(Float,INIT(conversion_1,CONVERSION_1))); DEFV(Local,DEFV(Float,INIT(conversion_2,CONVERSION_2))); /* Introduit le 20220324112948 pour le plaisir... */ /* */ /* Par exemple : */ /* */ /* conversion_0 = 0 */ /* conversion_1 = 0.5 */ /* conversion_2 = 1 */ /* */ /* realise une reduction de rapport 2... */ 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 3 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,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Coordonnee_courante___Y,FLOT__UNDEF))); /* Coordonnees 'X' et 'Y' a l'instant 'T' courant. */ DEFV(Local,DEFV(Float,INIT(Coordonnee_anterieure_X,FLOT__UNDEF))); DEFV(Local,DEFV(Float,INIT(Coordonnee_anterieure_Y,FLOT__UNDEF))); /* Coordonnees 'X' et 'Y' 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_ET_Y,ADRESSE_NON_ENCORE_DEFINIE)); MdTb1(DecimalesCoordonnee_X,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y,Int,ADRESSE_NON_ENCORE_DEFINIE); DEFV(Int,DdTb1(POINTERi,DecimalesCoordonnee_Y,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y,ADRESSE_NON_ENCORE_DEFINIE)); MdTb1(DecimalesCoordonnee_Y,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y,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("}")); ) ); 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_ET_Y,I) Bblock DEFV(Int,INIT(DecimaleCourante_T,UNDEF)); DEFV(Int,INIT(somme_X,ZERO)); DEFV(Logical,INIT(somme_X_est_paire,LUNDEF)); 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_est_paire,somme_X); EGAL(INDEXATION_DES_DECIMALES(DecimalesCoordonnee_X,index1),DecimaleCourante_X); /* Les decimales {B1,B2,B3,...} de 'X(T)' sont definies par : */ /* */ /* */ /* k=n-1 */ /* ------- */ /* \ */ /* \ */ /* SX = / A ({A1,A2,A3,...} sont les decimales de 'T') */ /* / 2k */ /* ------- */ /* k=1 */ /* */ /* */ /* B = A */ /* 1 1 */ /* */ /* */ /* / A si SX est PAIRE, */ /* | 2n-1 */ /* | */ /* B = < */ /* n>1 | */ /* | */ /* \ 2 - A si SX est IMPAIRE. */ /* 2n-1 */ /* */ 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("}\n")); Eblock ) ); EDITION_DES_EXPLICATIONS(BLOC( Bblock CAL2(Prin0("Y=0.{")); Eblock ) ); DoIn(index1,INDEX_DE_LA_PREMIERE_DECIMALE,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y,I) Bblock DEFV(Int,INIT(DecimaleCourante_T,UNDEF)); DEFV(Int,INIT(somme_Y,ZERO)); DEFV(Logical,INIT(somme_Y_est_paire,LUNDEF)); 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_est_paire,somme_Y); EGAL(INDEXATION_DES_DECIMALES(DecimalesCoordonnee_Y,index1),DecimaleCourante_Y); /* Les decimales {C1,C2,C3,...} de 'Y(T)' sont definies par : */ /* */ /* */ /* k=n */ /* ------- */ /* \ */ /* \ */ /* SY = / A ({A1,A2,A3,...} sont les decimales de 'T') */ /* / 2k-1 */ /* ------- */ /* k=1 */ /* */ /* */ /* / A si SY est PAIRE, */ /* | 2n */ /* | */ /* C = < */ /* n>0 | */ /* | */ /* \ 2 - A si SY est IMPAIRE. */ /* 2n */ /* */ 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("}\n")); Eblock ) ); CONVERSION_EN_BASE_10(Parametre_T,DecimalesParametre_T,nombre_de_decimales_base_B_du_parametre_T); CONVERSION_EN_BASE_10(Coordonnee_courante___X,DecimalesCoordonnee_X,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y); CONVERSION_EN_BASE_10(Coordonnee_courante___Y,DecimalesCoordonnee_Y,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y); FdTb1(DecimalesCoordonnee_Y,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y,Int,ADRESSE_PLUS_DEFINIE); FdTb1(DecimalesCoordonnee_X,NOMBRE_DE_DECIMALES_BASE_B_DES_COORDONNEES_X_ET_Y,Int,ADRESSE_PLUS_DEFINIE); RETU_VIDE; Eblock EFonctionV /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 ] D E P E A N O : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Logical,INIT(editer_la_definition_du_carre,EDITER_LA_DEFINITION_DU_CARRE)); DEFV(Logical,INIT(editer_la_definition_des_sous_carres,EDITER_LA_DEFINITION_DES_SOUS_CARRES)); /* Faut-il editer la definition du carre ('VRAI') ou pas ('FAUX') ? L'edition de la */ /* definition des 4 sous-carres a ete introduite le 20220519183517... */ 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)); /* Ponderations respectives de 'T', 'X' et 'Y'. */ #include xci/valeurs.03.I" /*..............................................................................................................................*/ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("definition_carre=""dc=",editer_la_definition_du_carre); GET_ARGUMENT_L("definition_sous_carres=""dsc=",editer_la_definition_des_sous_carres); /* Argument introduit le 20220519183517... */ GET_ARGUMENT_L("editer_explications=""ee=",editer_des_explications); GET_ARGUMENT_I("base=""b=",base_de_definition); /* Option introduite le 20220402095222... */ /* */ /* On notera le 20220402103747 qu'apparemment seuls : */ /* */ /* base=3 (valeur par defaut) */ /* */ /* et : */ /* */ /* base=4 */ /* */ /* donnent quelque chose d'interessant... */ 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_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); /* Options introduites le 20220405115242... */ GET_ARGUMENT_F("c0=",conversion_0); GET_ARGUMENT_F("c1=",conversion_1); GET_ARGUMENT_F("c2=",conversion_2); /* Options introduites le 20220324112948... */ GET_ARGUMENT_F("Pt=""PT=",ponderation_de_T); GET_ARGUMENT_F("Px=""PX=",ponderation_de_X); GET_ARGUMENT_F("Py=""PY=",ponderation_de_Y); PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; ) ); Test(IFET(IFNE(base_de_definition,BASE_DE_DEFINITION_2D) ,I3OU(IFNE(conversion_0,CONVERSION_0) ,IFNE(conversion_1,CONVERSION_1) ,IFNE(conversion_2,CONVERSION_2) ) ) ) /* Test introduit le 20220402100544... */ 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); 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("xA=%+.^^^ yA=%+.^^^",Coordonnee_anterieure_X,Coordonnee_anterieure_Y); EDITION_DES_COORDONNEES("xB=%+.^^^ yB=%+.^^^",Coordonnee_courante___X,Coordonnee_courante___Y); /* Cette edition est compatible avec 'v $xci/valeurs_Hilbert2D$K EDITION_DES_COORDONNEES'. */ 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) ,LIZ3(ponderation_de_T,FLOT(Parametre_T) ,ponderation_de_X,FLOT(Coordonnee_courante___X) ,ponderation_de_Y,FLOT(Coordonnee_courante___Y) ) ) ); 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_carre)) Bblock Test(IL_FAUT(chainer_les_points)) Bblock #include xci/valeurs_Hilbert2D.I" /* Afin d'etre compatible avec 'v $xiirv/.PEAN.21.$U', il faut que le carre soit trace apres */ /* la trajectoire de 'T' et ce afin que ce carre semble etre derriere cette trajectoire... */ Eblock ATes Bblock PRINT_ATTENTION("lors de l'edition de points isoles, la definition du carre 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