/*************************************************************************************************************************************/
/* */
/* 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