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