/*************************************************************************************************************************************/ /* */ /* T R A N S F O R M A T I O N A U T O - S I M I L A I R E D E H I L B E R T D A N S [ 0 , 1 ] x [ 0 , 1 ] : */ /* */ /* */ /* Probleme de terminologie (le 20230106115647) : */ /* */ /* On notera un probleme dans les */ /* noms donnes aux programmes : */ /* */ /* $xci/valeurs_TransformationPeano2D$I */ /* $xci/valeurs_TransformationPeano2D$K */ /* $xci/valeurs_TransformationPeano3D$K */ /* */ /* qui devraient s'appeler 'Hilbert' */ /* et non pas 'Peano', ainsi qu'a 55 */ /* images 'PEAN's qui devraient s'appeler */ /* en fait 'HILB's. Tout cela est precise */ /* dans 'v $xiirv/$Fnota 20230106103125'... */ /* */ /* */ /* Definition : */ /* */ /* Cette commande est une version '$K' du programme */ /* 'v $xtc/Peano_SurjectionFractale.23$vv$c'... */ /* */ /* Avec les notations suivantes : */ /* */ /* X(n) --> X1 */ /* Y(n) --> Y1 */ /* */ /* X(n+1) --> X2 */ /* Y(n+1) --> Y2 */ /* */ /* la definition de la transformation de Hilbert */ /* bidimensionnelle "historique" est la suivante */ /* en notation matricielle : */ /* */ /* */ /* |X2| | Y1| | 0 +1| |X1| |0| */ /* | | = | | = | | * | | + | | Transformation 1 */ /* |Y2| | X1| |+1 0| |Y1| |0| */ /* */ /* */ /* |X2| | X1| |+1 0| |X1| |0| */ /* | | = | | = | | * | | + | | Transformation 2 */ /* |Y2| |1+Y1| | 0 +1| |Y1| |1| */ /* */ /* */ /* |X2| |1+X1| |+1 0| |X1| |1| */ /* | | = | | = | | * | | + | | Transformation 3 */ /* |Y2| |1+Y1| | 0 +1| |Y1| |1| */ /* */ /* */ /* |X2| |2-Y1| | 0 -1| |X1| |2| */ /* | | = | | = | | * | | + | | Transformation 4 */ /* |Y2| |1-X1| |-1 0| |Y1| |1| */ /* */ /* */ /* Avec les notations suivantes : */ /* */ /* Z(n) = X(n) + i.Y(n) --> Z1 */ /* */ /* Z(n+1) = X(n+1) + i.Y(n+1) --> Z2 */ /* */ /* il est aussi possible d'ecrire cela dans le */ /* plan complexe : */ /* */ /* __ */ /* Z2 = i.Z1 Transformation 1 */ /* */ /* */ /* Z2 = i + 1.Z1 Transformation 2 */ /* */ /* */ /* Z2 = (1+i) + 1.Z1 Transformation 3 */ /* */ /* __ */ /* Z2 = (2+i) - i.Z1 Transformation 4 */ /* */ /* */ /* ou encore : */ /* */ /* __ */ /* Z2 = ( 0,+1).Z1 + ( 0, 0) Transformation 1 */ /* */ /* */ /* Z2 = (+1, 0).Z1 + ( 0,+1) Transformation 2 */ /* */ /* */ /* Z2 = (+1, 0).Z1 + (+1,+1) Transformation 3 */ /* */ /* __ */ /* Z2 = ( 0,-1).Z1 + (+2,+1) Transformation 4 */ /* */ /* */ /* Author of '$xci/valeurs_TransformationPeano2D$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20220415074108). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 DIMENSION_DE_LA_COURBE \ BI_DIMENSIONNEL \ /* Dimension de la courbe... */ #define REMPLACER_LES_LISTES_DE_SUBSTITUTION_PAR_DES_LISTES_QUELCONQUES \ FAUX \ /* Faut-il remplacer les listes de substitution par des listes queconques ('VRAI') ou pas */ \ /* ('FAUX') ? La valeur par defaut assure la compatibilite anterieure (introduit le */ \ /* 20220513105601)... */ #define INTERPOLER_LES_LISTES_QUELCONQUES \ FAUX \ /* Faut-il interpoler les listes queconques ('VRAI') ou pas ('FAUX') ? Voir a ce propos le */ \ /* commentaires 'v $xci/valeurs_TransformationPeano2D$I 20220513134353'. Ceci fut introduit */ \ /* le 20220513142523... */ #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 20220519183230... */ #define f1x_____NOM_DE_LA_SUBSTITUTION_DE_DEFINITION \ "L_SUBSTITUTION_ROUGE" #define f1x_____SUBSTITUTION_COURANTE_DE_DEFINITION \ L_SUBSTITUTION_ROUGE #define f1x_____LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION \ FAUX #define f1x_____NOMBRE_DE_PASSES_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION \ UN #define f1x_____PAS_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION \ PAS_COULEURS #define f1x_____MINIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION \ COORDONNEE_BARYCENTRIQUE_MINIMALE #define f1x_____MAXIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION \ COORDONNEE_BARYCENTRIQUE_MAXIMALE #define f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION \ FAUX #define f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__LINEAIREMENT \ VRAI #define f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_ORIGINE__ \ FZERO #define f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_EXTREMITE \ FZERO /* Definition de 'f1x(...)' via '$xiP' a valeur dans [0,1]... */ #define f1y_____NOM_DE_LA_SUBSTITUTION_DE_DEFINITION \ "L_SUBSTITUTION_VERTE" #define f1y_____SUBSTITUTION_COURANTE_DE_DEFINITION \ L_SUBSTITUTION_VERTE #define f1y_____LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION \ FAUX #define f1y_____NOMBRE_DE_PASSES_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION \ UN #define f1y_____PAS_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION \ PAS_COULEURS #define f1y_____MINIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION \ COORDONNEE_BARYCENTRIQUE_MINIMALE #define f1y_____MAXIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION \ COORDONNEE_BARYCENTRIQUE_MAXIMALE #define f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION \ FAUX #define f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__LINEAIREMENT \ VRAI #define f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_ORIGINE__ \ FZERO #define f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_EXTREMITE \ FZERO /* Definition de 'f1y(...)' via '$xiP' a valeur dans [0,1]... */ #define CHAINER_LES_POINTS \ VRAI \ /* Faut-il chainer les points ('VRAI') ou pas ('FAUX') ? */ #define CALCULER_UNE_SEULE_ITERATION \ VRAI #define NUMERO_DE_L_ITERATION_UNIQUE \ ITERATION_05 /* Choix du mode "une" ou "plusieurs iterations"... */ #define EDITER_ITERATION_01 \ FAUX #define EDITER_ITERATION_02 \ FAUX #define EDITER_ITERATION_03 \ FAUX #define EDITER_ITERATION_04 \ FAUX #define EDITER_ITERATION_05 \ VRAI #define EDITER_ITERATION_06 \ VRAI #define EDITER_ITERATION_07 \ VRAI /* Choix des iterations a editer si 'IL_NE_FAUT_PAS(calculer_une_seule_iteration)'... */ /* */ /* Les iterations '06' et '07' ont ete introduites le 20220418180838... */ #define PAS_DE_L_ITERATION_01 \ PARE(0.001000) #define PAS_DE_L_ITERATION_02 \ FRA2(PAS_DE_L_ITERATION_01) #define PAS_DE_L_ITERATION_03 \ FRA2(PAS_DE_L_ITERATION_02) #define PAS_DE_L_ITERATION_04 \ FRA2(PAS_DE_L_ITERATION_03) #define PAS_DE_L_ITERATION_05 \ FRA4(PAS_DE_L_ITERATION_04) #define PAS_DE_L_ITERATION_06 \ FRA4(PAS_DE_L_ITERATION_05) #define PAS_DE_L_ITERATION_07 \ FRA4(PAS_DE_L_ITERATION_06) /* Pas d'edition des iterations... */ /* */ /* Les iterations '06' et '07' ont ete introduites le 20220418180838... */ #define PONDERATION_DE_T \ FU #define PONDERATION_DE_X \ FZERO #define PONDERATION_DE_Y \ FZERO /* Ponderations respectives de 'X' et 'Y'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xrv/ARITHMET.1d.I" #include xrv/ARITHMET.21.I" #include xrv/champs_5.41.I" /* Introduits le 20220513104116... */ #include xci/valeurs_TransformationPeano2D.I" /* Introduit le 20220426131343... */ #define PARAMETRAGE_DE_L_ITERATION_UNIQUE(iteration,editer_iteration,pas_de_l_iteration) \ Ca1e(iteration) \ Bblock \ EGAL(editer_iteration,VRAI); \ Eblock \ ECa1 \ /* Choix d'une iteration (introduit le 20220419131545)... */ #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_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. */ #define EDITION_EVENTUELLE_D_UNE_ITERATION(editer,F2x,F2y,F1x,F1y,pas_t) \ Bblock \ Test(IL_FAUT(editer)) \ Bblock \ DEFV(Float,INIT(t,FLOT__UNDEF)); \ \ 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. */ \ \ DoIn(t,minimum_t,maximum_t,pas_t) \ Bblock \ EGAL(Coordonnee_courante___X,F2x(t,&F1x,&F1y)); \ EGAL(Coordonnee_courante___Y,F2y(t,&F1x,&F1y)); \ \ Test(IL_FAUT(chainer_les_points)) \ Bblock \ Test(IFGT(t,minimum_t)) \ 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 \ \ Test(IL_FAUT(chainer_les_points)) \ Bblock \ Test(IFGT(t,minimum_t)) \ 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(t) \ ,ponderation_de_X,FLOT(Coordonnee_courante___X) \ ,ponderation_de_Y,FLOT(Coordonnee_courante___Y) \ ) \ ) \ ); \ Eblock \ ETes \ Eblock \ EDoI \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock \ /* Edition des coordonnees. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* S U I T E D E F O N C T I O N S R E C U R S I V E S A V A L E U R D A N S [ 0 , 1 ] */ /* T R A N S F O R M A T I O N A U T O - S I M I L A I R E D E H I L B E R T D A N S [ 0 , 1 ] x [ 0 , 1 ] : */ /* */ /*************************************************************************************************************************************/ Denumer07(INIS(_01,UN) ,_02 ,_03 ,_04 ,_05 ,_06 ,_07 ,ListeDesIterationsDisponibles ); #define ITERATION_01 \ ENUM(_01) #define ITERATION_02 \ ENUM(_02) #define ITERATION_03 \ ENUM(_03) #define ITERATION_04 \ ENUM(_04) #define ITERATION_05 \ ENUM(_05) #define ITERATION_06 \ ENUM(_06) #define ITERATION_07 \ ENUM(_07) BFonctionF /* Definition d'une fonction neutre 'f0x(...)' a valeur dans [0,1]... */ DEFV(FonctionF,f0x(t)) DEFV(Argument,DEFV(Float,t)); Bblock RETU(t); Eblock EFonctionF BFonctionF /* Definition d'une fonction neutre 'f0y(...)' a valeur dans [0,1]... */ DEFV(FonctionF,f0y(t)) DEFV(Argument,DEFV(Float,t)); Bblock RETU(t); Eblock EFonctionF BFonctionF /* Definition de la premiere fonction ('f1x(...)') de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ DEFV(Logical,INIT(remplacer_les_listes_de_substitution_par_des_listes_quelconques ,REMPLACER_LES_LISTES_DE_SUBSTITUTION_PAR_DES_LISTES_QUELCONQUES ) ); /* Faut-il remplacer les listes de substitution par des listes queconques ('VRAI') ou pas */ /* ('FAUX') ? La valeur par defaut assure la compatibilite anterieure (introduit le */ /* 20220513105601)... */ DEFV(Logical,INIT(interpoler_les_listes_quelconques,INTERPOLER_LES_LISTES_QUELCONQUES)); /* Faut-il interpoler les listes queconques ('VRAI') ou pas ('FAUX') ? Voir a ce propos le */ /* commentaires 'v $xci/valeurs_TransformationPeano2D$I 20220513134353'. Ceci fut introduit */ /* le 20220513142523... */ #define MINIMUM_T \ COORDONNEE_BARYCENTRIQUE_MINIMALE #define MAXIMUM_T \ COORDONNEE_BARYCENTRIQUE_MAXIMALE DEFV(Local,DEFV(Float,INIT(minimum_t,MINIMUM_T))); DEFV(Local,DEFV(Float,INIT(maximum_t,MAXIMUM_T))); DEFV(Int,INIT(nombre_d_elements,NOMBRE_D_ELEMENTS)); #define X_IMPLICITE \ FZERO #define Y_IMPLICITE \ FZERO gGENERATION_D_UN_FICHIER(fichier_LISTE_X,liste_initiale_des_X); gGENERATION_D_UN_FICHIER(fichier_LISTE_Y,liste_initiale_des_Y); #define ELEMENT_DU_FICHIER_LISTE_X(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_X,index) #define ELEMENT_DU_FICHIER_LISTE_Y(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_Y,index) /* Listes introduites le 20220513104116... */ DEFV(Local,DEFV(Logical,INIT(f1x_____generer_avec_une_liste_de_substitution,FAUX))); DEFV(Local,DEFV(genere_Float,DTb1(f1x_____liste_flottante_substitution_de_definition,COULEURS))); /* A priori, 'f1x(...)' n'utilise pas de liste de substitution mais peut le faire... */ DEFV(Local,DEFV(Logical,INIT(f1x_____interpoler_la_substitution_de_definition,f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION))); DEFV(Local,DEFV(Logical,INIT(f1x_____interpoler_la_substitution_de_definition__lineairement ,f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__LINEAIREMENT ) ) ); DEFV(Local,DEFV(Float,INIT(f1x_____interpoler_la_substitution_de_definition__cubiquement__derivee_origine__ ,f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_ORIGINE__ ) ) ); DEFV(Local,DEFV(Float,INIT(f1x_____interpoler_la_substitution_de_definition__cubiquement__derivee_extremite ,f1x_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_EXTREMITE ) ) ); /* La possible interpolation des listes de substitution a ete introduite le 20220423111102. */ DEFV(FonctionF,f1x(t,ARGUMENT_FONCTION(f0x),ARGUMENT_FONCTION(f0y))) DEFV(Argument,DEFV(Float,t)); DEFV(Argument,DEFV(Float,afPOINTEUR(f0x))); DEFV(Argument,DEFV(Float,afPOINTEUR(f0y))); Bblock DEFV(Float,INIT(ValeurDeLaFonction,FLOT__UNDEF)); Test(EST_VRAI(f1x_____generer_avec_une_liste_de_substitution)) Bblock INTERPOLATION_DE_LA_SUBSTITUTION(f1x_____liste_flottante_substitution_de_definition ,f1x_____interpoler_la_substitution_de_definition ,f1x_____interpoler_la_substitution_de_definition__lineairement ,f1x_____interpoler_la_substitution_de_definition__cubiquement__derivee_origine__ ,f1x_____interpoler_la_substitution_de_definition__cubiquement__derivee_extremite ,ELEMENT_DU_FICHIER_LISTE_X ); Eblock ATes Bblock EGAL(ValeurDeLaFonction,NEUT(t)); /* Definition d'une parabole de sommet {1/2,1} et passant par les points {0,0} et {1,0} */ /* par defaut... */ Eblock ETes RETU(ValeurDeLaFonction); Eblock EFonctionF BFonctionF /* Definition de la premiere fonction ('f1y(...)') de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ DEFV(Local,DEFV(Logical,INIT(f1y_____generer_avec_une_liste_de_substitution,FAUX))); DEFV(Local,DEFV(genere_Float,DTb1(f1y_____liste_flottante_substitution_de_definition,COULEURS))); /* A priori, 'f1y(...)' n'utilise pas de liste de substitution mais peut le faire... */ DEFV(Local,DEFV(Logical,INIT(f1y_____interpoler_la_substitution_de_definition,f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION))); DEFV(Local,DEFV(Logical,INIT(f1y_____interpoler_la_substitution_de_definition__lineairement ,f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__LINEAIREMENT ) ) ); DEFV(Local,DEFV(Float,INIT(f1y_____interpoler_la_substitution_de_definition__cubiquement__derivee_origine__ ,f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_ORIGINE__ ) ) ); DEFV(Local,DEFV(Float,INIT(f1y_____interpoler_la_substitution_de_definition__cubiquement__derivee_extremite ,f1y_____INTERPOLER_LA_SUBSTITUTION_DE_DEFINITION__CUBIQUEMENT__DERIVEE_EXTREMITE ) ) ); /* La possible interpolation des listes de substitution a ete introduite le 20220423111102. */ DEFV(FonctionF,f1y(t,ARGUMENT_FONCTION(f0x),ARGUMENT_FONCTION(f0y))) DEFV(Argument,DEFV(Float,t)); DEFV(Argument,DEFV(Float,afPOINTEUR(f0x))); DEFV(Argument,DEFV(Float,afPOINTEUR(f0y))); Bblock DEFV(Float,INIT(ValeurDeLaFonction,FLOT__UNDEF)); Test(EST_VRAI(f1y_____generer_avec_une_liste_de_substitution)) Bblock INTERPOLATION_DE_LA_SUBSTITUTION(f1y_____liste_flottante_substitution_de_definition ,f1y_____interpoler_la_substitution_de_definition ,f1y_____interpoler_la_substitution_de_definition__lineairement ,f1y_____interpoler_la_substitution_de_definition__cubiquement__derivee_origine__ ,f1y_____interpoler_la_substitution_de_definition__cubiquement__derivee_extremite ,ELEMENT_DU_FICHIER_LISTE_Y ); Eblock ATes Bblock EGAL(ValeurDeLaFonction,MUL3(FQUATRE,t,COMP(t))); /* Definition d'une parabole de sommet {1/2,1} et passant par les points {0,0} et {1,0} */ /* par defaut... */ Eblock ETes RETU(ValeurDeLaFonction); Eblock EFonctionF #define _____Generer \ FU #define NePasGenerer \ FZERO #define NombreDIntervalles \ INTE(PUIX(DEUX,DIMENSION_DE_LA_COURBE)) #define t0 \ ADD2(minimum_t,GRO0(SOUS(maximum_t,minimum_t)/FLOT(NombreDIntervalles))) #define t1 \ ADD2(minimum_t,GRO1(SOUS(maximum_t,minimum_t)/FLOT(NombreDIntervalles))) #define t2 \ ADD2(minimum_t,GRO2(SOUS(maximum_t,minimum_t)/FLOT(NombreDIntervalles))) #define t3 \ ADD2(minimum_t,GRO3(SOUS(maximum_t,minimum_t)/FLOT(NombreDIntervalles))) #define t4 \ ADD2(minimum_t,GRO4(SOUS(maximum_t,minimum_t)/FLOT(NombreDIntervalles))) #define ______0 \ FZERO #define _____m1 \ NEGA(FU) #define _____p1 \ NEUT(FU) #define _____m2 \ NEGA(FDEUX) #define _____p2 \ NEUT(FDEUX) #define _____m3 \ NEGA(FTROIS) #define _____p3 \ NEUT(FTROIS) /* Introduits le 20220425112919 pour ameliorer les tabulations ci-apres... */ DEFV(Local,DEFV(Float,INIT(ax00,_____p1))); DEFV(Local,DEFV(Float,INIT(bx00,______0))); DEFV(Local,DEFV(Float,INIT(tx00,______0))); DEFV(Local,DEFV(Float,INIT(ay00,_____p1))); DEFV(Local,DEFV(Float,INIT(by00,______0))); DEFV(Local,DEFV(Float,INIT(ty00,______0))); DEFV(Local,DEFV(Float,INIT(ax01,_____p1))); DEFV(Local,DEFV(Float,INIT(bx01,______0))); DEFV(Local,DEFV(Float,INIT(tx01,_____m1))); DEFV(Local,DEFV(Float,INIT(ay01,_____p1))); DEFV(Local,DEFV(Float,INIT(by01,_____p1))); DEFV(Local,DEFV(Float,INIT(ty01,_____m1))); DEFV(Local,DEFV(Float,INIT(ax02,_____p1))); DEFV(Local,DEFV(Float,INIT(bx02,_____p1))); DEFV(Local,DEFV(Float,INIT(tx02,_____m2))); DEFV(Local,DEFV(Float,INIT(ay02,_____p1))); DEFV(Local,DEFV(Float,INIT(by02,_____p1))); DEFV(Local,DEFV(Float,INIT(ty02,_____m2))); DEFV(Local,DEFV(Float,INIT(ax03,_____m1))); DEFV(Local,DEFV(Float,INIT(bx03,_____p2))); DEFV(Local,DEFV(Float,INIT(tx03,_____m3))); DEFV(Local,DEFV(Float,INIT(ay03,_____m1))); DEFV(Local,DEFV(Float,INIT(by03,_____p1))); DEFV(Local,DEFV(Float,INIT(ty03,_____m3))); DEFV(Local,DEFV(Float,INIT(diviseur,FDEUX))); Denumer05(INIS(__01,UN) ,__02 ,__03 ,__04 ,__05 ,ListeDesSegmentsPossibles ); #define SEGMENT_01 \ ENUM(__01) #define SEGMENT_02 \ ENUM(__02) #define SEGMENT_03 \ ENUM(__03) #define SEGMENT_04 \ ENUM(__04) #define SEGMENT_INEXISTANT \ ENUM(__05) /* Afin de simplifier la gestion des 4 segments (introduit le 20220426114732)... */ #define CHOIX_D_UN_SEGMENT(segment,valeur) \ Ca1e(segment) \ Bblock \ EGAL(ValeurDeLaFonction,valeur); \ Eblock \ ECa1 #define APPEL_RECURSIF(a,F2,translation,F1x,F1y,b) \ AXPB(a,F2(AXPB(NombreDIntervalles,t,translation),&F1x,&F1y),b) \ /* Introduit le 20220426104516 pour simplifier... */ #define GENERE_fnx_fny(nom \ ,F2x,F2y \ ,F1x,F1y \ ,GenX,GenY \ ,ax00,bx00,tx00,ay00,by00,ty00 \ ,ax01,bx01,tx01,ay01,by01,ty01 \ ,ax02,bx02,tx02,ay02,by02,ty02 \ ,ax03,bx03,tx03,ay03,by03,ty03 \ ) \ /* Le 20220417094708, les arguments {ax00,bx00,...,by03,ty03} furent introduits. A cette */ \ /* date, ils ne servent a rien car ils possedent la meme valeur lors de tous les appels */ \ /* a 'GENERE_fnx_fny(...)', mais on ne sait jamais : plus tard... */ \ BFonctionF \ DEFV(FonctionF,nom(t,ARGUMENT_FONCTION(F2x),ARGUMENT_FONCTION(F2y))) \ DEFV(Argument,DEFV(Float,t)); \ DEFV(Argument,DEFV(Float,afPOINTEUR(F2x))); \ DEFV(Argument,DEFV(Float,afPOINTEUR(F2y))); \ Bblock \ DEFV(Float,INIT(ValeurDeLaFonction,FLOT__UNDEF)); \ DEFV(Int,INIT(NumeroDu_segment \ ,CON04(IFINff(t,t0,t1),SEGMENT_01 \ ,IFINff(t,t1,t2),SEGMENT_02 \ ,IFINff(t,t2,t3),SEGMENT_03 \ ,IFINff(t,t3,t4),SEGMENT_04 \ ,SEGMENT_INEXISTANT \ ) \ ) \ ); \ /* Introduit le 20220426115345 afin de simplifier ce qui suit... */ \ \ Choi(NumeroDu_segment) \ Bblock \ CHOIX_D_UN_SEGMENT(SEGMENT_01 \ ,LIZ2(GenX,APPEL_RECURSIF(ax00,F2y,tx00,F1x,F1y,bx00) \ ,GenY,APPEL_RECURSIF(ay00,F2x,ty00,F1x,F1y,by00) \ ) \ ); \ /* Cas du segment [t0,t1] : transformation 1. */ \ CHOIX_D_UN_SEGMENT(SEGMENT_02 \ ,LIZ2(GenX,APPEL_RECURSIF(ax01,F2x,tx01,F1x,F1y,bx01) \ ,GenY,APPEL_RECURSIF(ay01,F2y,ty01,F1x,F1y,by01) \ ) \ ); \ /* Cas du segment [t1,t2] : transformation 2. */ \ CHOIX_D_UN_SEGMENT(SEGMENT_03 \ ,LIZ2(GenX,APPEL_RECURSIF(ax02,F2x,tx02,F1x,F1y,bx02) \ ,GenY,APPEL_RECURSIF(ay02,F2y,ty02,F1x,F1y,by02) \ ) \ ); \ /* Cas du segment [t2,t3] : transformation 3. */ \ CHOIX_D_UN_SEGMENT(SEGMENT_04 \ ,LIZ2(GenX,APPEL_RECURSIF(ax03,F2y,tx03,F1x,F1y,bx03) \ ,GenY,APPEL_RECURSIF(ay03,F2x,ty03,F1x,F1y,by03) \ ) \ ); \ /* Cas du segment [t3,t4] : transformation 4. */ \ Defo \ Bblock \ PRINT_ERREUR("le parametre 'T' est hors limite"); \ CAL1(Prer3("(il vaut %f alors qu'il devrait etre dans [%f,%f])\n" \ ,t \ ,t1,t4 \ ) \ ); \ Eblock \ EDef \ Eblock \ ECho \ \ RETU(DIVI(ValeurDeLaFonction,diviseur)); \ /* On notera qu'a la date du 20220415123221, on ne peut ecrire ici : */ \ /* */ \ /* RETU(DIVI(ValeurDeLaFonction,diviseur)); */ \ /* */ \ /* car '$xcc/cpp$Z' n'aime pas cela, le fichier '$FLiStE_ArGuMeNtS.types' contenant les */ \ /* deux lignes : */ \ /* */ \ /* diviseur double */ \ /* diviseur return@ValeurDeLaFonction@/ */ \ /* */ \ /* Provisoirement, ce 'RETU(...)' avait ete remplace par : */ \ /* */ \ /* EGAL(ValeurDeLaFonction,DIVI(ValeurDeLaFonction,diviseur)); */ \ /* RETU(ValeurDeLaFonction); */ \ /* */ \ /* mais le probleme a ete corrige par 'v $xcc/cpp$Z 20220416104813'... */ \ Eblock \ EFonctionF /* On notera le 20220417100009 que ci-apres on ne peut pas ecrire : */ /* */ /* GENERE_fnx_fny(f2x */ /* ,f1x,f1y */ /* ,f0x,f0y */ /* ,_____Generer,NePasGenerer */ /* ,ax00,tx00,bx00,ay00,ty00,by00 */ /* ,ax01,tx01,bx01,ay01,ty01,by01 */ /* ,ax02,tx02,bx02,ay02,ty02,by02 */ /* ,ax03,tx03,bx03,ay03,ty03,by03 */ /* ); */ /* */ /* et ce a cause de la definition de 'NomDeLaFonctionCourante' qui avec cette ecriture */ /* est defini vide. La solution est donc que la "," suivante soit sur la meme ligne, d'ou : */ /* */ /* GENERE_fnx_fny(f2x,f1x,f1y,f0x,f0y */ /* ,_____Generer,NePasGenerer */ /* ,ax00,tx00,bx00,ay00,ty00,by00 */ /* ,ax01,tx01,bx01,ay01,ty01,by01 */ /* ,ax02,tx02,bx02,ay02,ty02,by02 */ /* ,ax03,tx03,bx03,ay03,ty03,by03 */ /* ); */ /* */ /* Ce probleme a ete resolu le 20220418102126 en modifiant 'v $xccp/PASSE_4.NomF$sed' en */ /* lui permettant donc de traiter des noms de fonctions suivis d'espaces jusqu'a la */ /* parenthese ouvrante introduisant la liste des arguments. Cela a donc permis de retablir */ /* les bonnes tabulations ci-apres... */ GENERE_fnx_fny(f2x ,f1x,f1y ,f0x,f0y ,_____Generer,NePasGenerer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); GENERE_fnx_fny(f2y ,f1x,f1y ,f0x,f0y ,NePasGenerer,_____Generer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); /* Definition des fonctions {f2x(...),f2y(...)} de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ GENERE_fnx_fny(f3x ,f2x,f2y ,f1x,f1y ,_____Generer,NePasGenerer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); GENERE_fnx_fny(f3y ,f2x,f2y ,f1x,f1y ,NePasGenerer,_____Generer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); /* Definition des fonctions {f3x(...),f3y(...)} de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ GENERE_fnx_fny(f4x ,f3x,f3y ,f2x,f2y ,_____Generer,NePasGenerer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); GENERE_fnx_fny(f4y ,f3x,f3y ,f2x,f2y ,NePasGenerer,_____Generer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); /* Definition des fonctions {f4x(...),f4y(...)} de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ GENERE_fnx_fny(f5x ,f4x,f4y ,f3x,f3y ,_____Generer,NePasGenerer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); GENERE_fnx_fny(f5y ,f4x,f4y ,f3x,f3y ,NePasGenerer,_____Generer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); /* Definition des fonctions {f5x(...),f5y(...)} de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ GENERE_fnx_fny(f6x ,f5x,f5y ,f4x,f4y ,_____Generer,NePasGenerer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); GENERE_fnx_fny(f6y ,f5x,f5y ,f4x,f4y ,NePasGenerer,_____Generer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); /* Definition des fonctions {f6x(...),f6y(...)} de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ GENERE_fnx_fny(f7x ,f6x,f6y ,f5x,f5y ,_____Generer,NePasGenerer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); GENERE_fnx_fny(f7y ,f6x,f6y ,f5x,f5y ,NePasGenerer,_____Generer ,ax00,bx00,tx00,ay00,by00,ty00 ,ax01,bx01,tx01,ay01,by01,ty01 ,ax02,bx02,tx02,ay02,by02,ty02 ,ax03,bx03,tx03,ay03,by03,ty03 ); /* Definition des fonctions {f7x(...),f7y(...)} de la suite de fonctions recursives */ /* a valeur dans [0,1]... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* T R A N S F O R M A T I O N A U T O - S I M I L A I R E D E H I L B E R T D A N S [ 0 , 1 ] x [ 0 , 1 ] : */ /* */ /*************************************************************************************************************************************/ 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 20220519183230... */ DEFV(CHAR,INIC(POINTERc(f1x_____nom_paletteA),NOM_PIPE)); DEFV(CHAR,INIT(POINTERc(f1x_____nom_de_la_substitution_de_definition),f1x_____NOM_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Int,INIT(f1x_____substitution_courante_de_definition,f1x_____SUBSTITUTION_COURANTE_DE_DEFINITION)); DEFV(Logical,INIT(f1x_____lissage_de_la_substitution_de_definition,f1x_____LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Int,INIT(f1x_____nombre_de_passes_de_lissage_de_la_substitution_de_definition ,f1x_____NOMBRE_DE_PASSES_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION ) ); DEFV(Int,INIT(f1x_____pas_de_lissage_de_la_substitution_de_definition,f1x_____PAS_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Float,INIT(f1x_____minimum_de_la_substitution_de_definition,f1x_____MINIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Float,INIT(f1x_____maximum_de_la_substitution_de_definition,f1x_____MAXIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION)); /* Definition de 'f1x(...)' via '$xiP' (inutilise par defaut...). */ DEFV(CHAR,INIC(POINTERc(f1y_____nom_paletteA),NOM_PIPE)); DEFV(CHAR,INIT(POINTERc(f1y_____nom_de_la_substitution_de_definition),f1y_____NOM_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Int,INIT(f1y_____substitution_courante_de_definition,f1y_____SUBSTITUTION_COURANTE_DE_DEFINITION)); DEFV(Logical,INIT(f1y_____lissage_de_la_substitution_de_definition,f1y_____LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Int,INIT(f1y_____nombre_de_passes_de_lissage_de_la_substitution_de_definition ,f1y_____NOMBRE_DE_PASSES_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION ) ); DEFV(Int,INIT(f1y_____pas_de_lissage_de_la_substitution_de_definition,f1y_____PAS_DE_LISSAGE_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Float,INIT(f1y_____minimum_de_la_substitution_de_definition,f1y_____MINIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION)); DEFV(Float,INIT(f1y_____maximum_de_la_substitution_de_definition,f1y_____MAXIMUM_DE_LA_SUBSTITUTION_DE_DEFINITION)); /* Definition de 'f1y(...)' via '$xiP' (inutilise par defaut...). */ DEFV(Logical,INIT(chainer_les_points,CHAINER_LES_POINTS)); /* Faut-il chainer les points ('VRAI') ou pas ('FAUX') ? */ DEFV(Logical,INIT(calculer_une_seule_iteration,CALCULER_UNE_SEULE_ITERATION)); DEFV(Int,INIT(numero_de_l_iteration_unique,NUMERO_DE_L_ITERATION_UNIQUE)); /* Choix du mode "une" ou "plusieurs iterations"... */ DEFV(Logical,INIT(editer_iteration_01,EDITER_ITERATION_01)); DEFV(Logical,INIT(editer_iteration_02,EDITER_ITERATION_02)); DEFV(Logical,INIT(editer_iteration_03,EDITER_ITERATION_03)); DEFV(Logical,INIT(editer_iteration_04,EDITER_ITERATION_04)); DEFV(Logical,INIT(editer_iteration_05,EDITER_ITERATION_05)); DEFV(Logical,INIT(editer_iteration_06,EDITER_ITERATION_06)); DEFV(Logical,INIT(editer_iteration_07,EDITER_ITERATION_07)); /* Choix des iterations a editer... */ /* */ /* Les iterations '06' et '07' ont ete introduites le 20220418180838... */ DEFV(Float,INIT(pas_de_l_iteration_01,PAS_DE_L_ITERATION_01)); DEFV(Float,INIT(pas_de_l_iteration_02,PAS_DE_L_ITERATION_02)); DEFV(Float,INIT(pas_de_l_iteration_03,PAS_DE_L_ITERATION_03)); DEFV(Float,INIT(pas_de_l_iteration_04,PAS_DE_L_ITERATION_04)); DEFV(Float,INIT(pas_de_l_iteration_05,PAS_DE_L_ITERATION_05)); DEFV(Float,INIT(pas_de_l_iteration_06,PAS_DE_L_ITERATION_06)); DEFV(Float,INIT(pas_de_l_iteration_07,PAS_DE_L_ITERATION_07)); /* Pas d'edition des iterations... */ /* */ /* Les iterations '06' et '07' ont ete introduites le 20220418180838... */ 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 'X' et 'Y'. */ #include xci/valeurs.03.I" /*..............................................................................................................................*/ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("listes_quelconques=""lq=",remplacer_les_listes_de_substitution_par_des_listes_quelconques); GET_ARGUMENT_N("listes_substitution=""ls=",remplacer_les_listes_de_substitution_par_des_listes_quelconques); /* Arguments introduits le 20220513105601... */ GET_ARGUMENT_L("interpoler_listes_quelconques=""ilq=",interpoler_les_listes_quelconques); /* Argument introduit le 20220513142523... */ PROCESS_ARGUMENT_I("nombre_elements=""ne=",nombre_d_elements ,BLOC(VIDE;) ,BLOC(Bblock PRINT_AVERTISSEMENT("'ne=' doit etre defini avant toute entree de fichiers"); Eblock ) ); PROCESS_ARGUMENTS_DE_DEFINITION_DES_FICHIERS_01; PROKESF_ARGUMENT_FICHIER("LISTE_X=" ,fichier_LISTE_X ,liste_initiale_des_X ,X_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_Y=" ,fichier_LISTE_Y ,liste_initiale_des_Y ,Y_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); GET_ARGUMENT_C("f1x_palette=""f1x_pA=""f1x_p=",f1x_____nom_paletteA); GET_ARGUMENT_L("f1x_lissage=",f1x_____lissage_de_la_substitution_de_definition); GET_ARGUMENT_I("f1x_passes=",f1x_____nombre_de_passes_de_lissage_de_la_substitution_de_definition); GET_ARGUMENT_I("f1x_pl=""f1x_pas_lissage=",f1x_____pas_de_lissage_de_la_substitution_de_definition); GET_ARGUMENT_C("f1x_substitution=""f1x_s=",f1x_____nom_de_la_substitution_de_definition); GET_ARGUMENT_F("f1x_minimum=""f1x_m=",f1x_____minimum_de_la_substitution_de_definition); GET_ARGUMENT_F("f1x_maximum=""f1x_M=",f1x_____maximum_de_la_substitution_de_definition); GET_ARGUMENT_L("f1x_interpoler=""f1x_i=",f1x_____interpoler_la_substitution_de_definition); GET_ARGUMENT_L("f1x_interpoler_lineairement=""f1x_il=" ,f1x_____interpoler_la_substitution_de_definition__lineairement ); GET_ARGUMENT_N("f1x_interpoler_cubiquement=""f1x_ic=" ,f1x_____interpoler_la_substitution_de_definition__lineairement ); GET_ARGUMENT_F("f1x_derivee_origine=""f1x_do=" ,f1x_____interpoler_la_substitution_de_definition__cubiquement__derivee_origine__ ); GET_ARGUMENT_F("f1x_derivee_extremite=""f1x_de=" ,f1x_____interpoler_la_substitution_de_definition__cubiquement__derivee_extremite ); /* Les arguments d'interpolation ont ete introduits le 20220423111102... */ GET_ARGUMENT_C("f1y_palette=""f1y_pA=""f1y_p=",f1y_____nom_paletteA); GET_ARGUMENT_L("f1y_lissage=",f1y_____lissage_de_la_substitution_de_definition); GET_ARGUMENT_I("f1y_passes=",f1y_____nombre_de_passes_de_lissage_de_la_substitution_de_definition); GET_ARGUMENT_I("f1y_pl=""f1y_pas_lissage=",f1y_____pas_de_lissage_de_la_substitution_de_definition); GET_ARGUMENT_C("f1y_substitution=""f1y_s=",f1y_____nom_de_la_substitution_de_definition); GET_ARGUMENT_F("f1y_minimum=""f1y_m=",f1y_____minimum_de_la_substitution_de_definition); GET_ARGUMENT_F("f1y_maximum=""f1y_M=",f1y_____maximum_de_la_substitution_de_definition); GET_ARGUMENT_L("f1y_interpoler=""f1y_i=",f1y_____interpoler_la_substitution_de_definition); GET_ARGUMENT_L("f1y_interpoler_lineairement=""f1y_il=" ,f1y_____interpoler_la_substitution_de_definition__lineairement ); GET_ARGUMENT_N("f1y_interpoler_cubiquement=""f1y_ic=" ,f1y_____interpoler_la_substitution_de_definition__lineairement ); GET_ARGUMENT_F("f1y_derivee_origine=""f1y_do=" ,f1y_____interpoler_la_substitution_de_definition__cubiquement__derivee_origine__ ); GET_ARGUMENT_F("f1y_derivee_extremite=""f1y_de=" ,f1y_____interpoler_la_substitution_de_definition__cubiquement__derivee_extremite ); /* Les arguments d'interpolation ont ete introduits le 20220423111102... */ 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 20220519183230... */ GET_ARGUMENT_L("chainer_points=""cp=",chainer_les_points); GET_ARGUMENT_F("min_t=""mt=",minimum_t); GET_ARGUMENT_F("max_t=""Mt=",maximum_t); GET_ARGUMENT_F("ax00=",ax00); /* Changer "ax00=+1" en "ax00=+0.5" est interessant (conserve la continuite et cree des */ /* zones vides...). */ GET_ARGUMENT_F("bx00=",bx00); GET_ARGUMENT_F("tx00=",tx00); GET_ARGUMENT_F("ay00=",ay00); GET_ARGUMENT_F("by00=",by00); GET_ARGUMENT_F("ty00=",ty00); GET_ARGUMENT_F("ax01=",ax01); GET_ARGUMENT_F("bx01=",bx01); GET_ARGUMENT_F("tx01=",tx01); GET_ARGUMENT_F("ay01=",ay01); GET_ARGUMENT_F("by01=",by01); GET_ARGUMENT_F("ty01=",ty01); GET_ARGUMENT_F("ax02=",ax02); GET_ARGUMENT_F("bx02=",bx02); GET_ARGUMENT_F("tx02=",tx02); GET_ARGUMENT_F("ay02=",ay02); GET_ARGUMENT_F("by02=",by02); GET_ARGUMENT_F("ty02=",ty02); GET_ARGUMENT_F("ax03=",ax03); /* Changer "ax03=+1" en "ax03=+0.5" est interessant (conserve la continuite et cree des */ /* zones vides...). */ GET_ARGUMENT_F("bx03=",bx03); GET_ARGUMENT_F("tx03=",tx03); GET_ARGUMENT_F("ay03=",ay03); GET_ARGUMENT_F("by03=",by03); GET_ARGUMENT_F("ty03=",ty03); GET_ARGUMENT_F("diviseur=""d=",diviseur); GET_ARGUMENT_L("une_iteration=""ui=",calculer_une_seule_iteration); GET_ARGUMENT_I("numero_iteration=""ni=",numero_de_l_iteration_unique); /* Argument introduit le 20220419131545... */ GET_ARGUMENT_L("iteration_01=""i01=",editer_iteration_01); GET_ARGUMENT_L("iteration_02=""i02=",editer_iteration_02); GET_ARGUMENT_L("iteration_03=""i03=",editer_iteration_03); GET_ARGUMENT_L("iteration_04=""i04=",editer_iteration_04); GET_ARGUMENT_L("iteration_05=""i05=",editer_iteration_05); GET_ARGUMENT_L("iteration_06=""i06=",editer_iteration_06); GET_ARGUMENT_L("iteration_07=""i07=",editer_iteration_07); /* Les arguments '06' et '07' ont ete introduits le 20220418180838... */ GET_ARGUMENT_F("pas_01=""p01=",pas_de_l_iteration_01); GET_ARGUMENT_F("pas_02=""p02=",pas_de_l_iteration_02); GET_ARGUMENT_F("pas_03=""p03=",pas_de_l_iteration_03); GET_ARGUMENT_F("pas_04=""p04=",pas_de_l_iteration_04); GET_ARGUMENT_F("pas_05=""p05=",pas_de_l_iteration_05); GET_ARGUMENT_F("pas_06=""p06=",pas_de_l_iteration_06); GET_ARGUMENT_F("pas_07=""p07=",pas_de_l_iteration_07); /* Les arguments '06' et '07' ont ete introduits le 20220418180838... */ 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; ) ); MISE_EN_PLACE_D_UNE_LISTE_DE_SUBSTITUTION(f1x_____nom_paletteA ,f1x_____nom_de_la_substitution_de_definition ,f1x_____substitution_courante_de_definition ,f1x_____liste_flottante_substitution_de_definition ,f1x_____lissage_de_la_substitution_de_definition ,f1x_____nombre_de_passes_de_lissage_de_la_substitution_de_definition ,f1x_____pas_de_lissage_de_la_substitution_de_definition ,f1x_____minimum_de_la_substitution_de_definition ,f1x_____maximum_de_la_substitution_de_definition ,f1x_____generer_avec_une_liste_de_substitution ); MISE_EN_PLACE_D_UNE_LISTE_DE_SUBSTITUTION(f1y_____nom_paletteA ,f1y_____nom_de_la_substitution_de_definition ,f1y_____substitution_courante_de_definition ,f1y_____liste_flottante_substitution_de_definition ,f1y_____lissage_de_la_substitution_de_definition ,f1y_____nombre_de_passes_de_lissage_de_la_substitution_de_definition ,f1y_____pas_de_lissage_de_la_substitution_de_definition ,f1y_____minimum_de_la_substitution_de_definition ,f1y_____maximum_de_la_substitution_de_definition ,f1y_____generer_avec_une_liste_de_substitution ); Test(IL_FAUT(calculer_une_seule_iteration)) Bblock EGAL(editer_iteration_01,FAUX); EGAL(editer_iteration_02,FAUX); EGAL(editer_iteration_03,FAUX); EGAL(editer_iteration_04,FAUX); EGAL(editer_iteration_05,FAUX); EGAL(editer_iteration_06,FAUX); EGAL(editer_iteration_07,FAUX); Choi(numero_de_l_iteration_unique) Bblock PARAMETRAGE_DE_L_ITERATION_UNIQUE(ITERATION_01,editer_iteration_01,pas_de_l_iteration_01); PARAMETRAGE_DE_L_ITERATION_UNIQUE(ITERATION_02,editer_iteration_02,pas_de_l_iteration_02); PARAMETRAGE_DE_L_ITERATION_UNIQUE(ITERATION_03,editer_iteration_03,pas_de_l_iteration_03); PARAMETRAGE_DE_L_ITERATION_UNIQUE(ITERATION_04,editer_iteration_04,pas_de_l_iteration_04); PARAMETRAGE_DE_L_ITERATION_UNIQUE(ITERATION_05,editer_iteration_05,pas_de_l_iteration_05); PARAMETRAGE_DE_L_ITERATION_UNIQUE(ITERATION_06,editer_iteration_06,pas_de_l_iteration_06); PARAMETRAGE_DE_L_ITERATION_UNIQUE(ITERATION_07,editer_iteration_07,pas_de_l_iteration_07); Defo Bblock PRINT_ERREUR("le numero d'iteration demande n'existe pas"); CAL1(Prer2("(l'iteration %d etait demandee et l'iteration %d est forcee)\n" ,numero_de_l_iteration_unique ,ITERATION_05 ) ); EGAL(editer_iteration_05,VRAI); Eblock EDef Eblock ECho Eblock ATes Bblock Eblock ETes begin_nouveau_block Bblock EDITION_EVENTUELLE_D_UNE_ITERATION(editer_iteration_01,f1x,f1y,f0x,f0y,pas_de_l_iteration_01); EDITION_EVENTUELLE_D_UNE_ITERATION(editer_iteration_02,f2x,f2y,f1x,f1y,pas_de_l_iteration_02); EDITION_EVENTUELLE_D_UNE_ITERATION(editer_iteration_03,f3x,f3y,f2x,f2y,pas_de_l_iteration_03); EDITION_EVENTUELLE_D_UNE_ITERATION(editer_iteration_04,f4x,f4y,f3x,f3y,pas_de_l_iteration_04); EDITION_EVENTUELLE_D_UNE_ITERATION(editer_iteration_05,f5x,f5y,f4x,f4y,pas_de_l_iteration_05); EDITION_EVENTUELLE_D_UNE_ITERATION(editer_iteration_06,f6x,f6y,f5x,f5y,pas_de_l_iteration_06); EDITION_EVENTUELLE_D_UNE_ITERATION(editer_iteration_07,f7x,f7y,f6x,f6y,pas_de_l_iteration_07); 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 Eblock end_nouveau_block RETU_Commande; Eblock ECommande