/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N E   C O U R B E   F R A C T A L E   B I D I M E N S I O N N E L L E                          */
/*        S O M M E T   P A R   S O M M E T   ( N O N   J O I N T S   E N T R E - E U X )  :                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrc/Cfract_2D.01$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1996??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   VISUALISER_EN_MODE_RECTANGULAIRE                                                                                              \
                    VRAI
#define   VISUALISER_EN_MODE_GRAND_CARRE                                                                                                \
                    VRAI
                                        /* Choix du format "rectangulaire"/"grand carre"/"petit carre" de visualisation lorsque      */
                                        /* le format d'image '$formatI' n'est pas carre (par exemple 'Pal').                         */

#define   VISUALISER_L_ARGUMENT                                                                                                         \
                    VRAI                                                                                                                \
                                        /* Doit-on visualiser chaque point a l'aide de son argument ('VRAI') ou bien doit-on         */ \
                                        /* utiliser 'niveau_de_marquage_des_points' ('FAUX') ?                                       */
#define   NIVEAU_DE_MARQUAGE_DES_POINTS                                                                                                 \
                    BLANC                                                                                                               \
                                        /* Niveau de marquage des points si 'IL_NE_FAUT_PAS(visualiser_l_argument)'.                 */

#define   RAPPORT_DE_REDUCTION                                                                                                          \
                    FTROIS                                                                                                              \
                                        /* Facteur de reduction initialise pour la courbe de von Koch ('v $xtc/VonKoch.01$c').       */

#define   FACTEUR_DU_SEUIL_D_ARRET                                                                                                      \
                    FU                                                                                                                  \
                                        /* Facteur du seuil d'arret de la recursivite.                                               */

#define   XG                                                                                                                            \
                    FZERO
#define   YG                                                                                                                            \
                    FDU
                                        /* Definition de l'extremite "Gauche" de la courbe.                                          */
#define   XD                                                                                                                            \
                    FU
#define   YD                                                                                                                            \
                    FDU
                                        /* Definition de l'extremite "Droite" de la courbe.                                          */

#define   X_ECHELLE                                                                                                                     \
                    FU
#define   Y_ECHELLE                                                                                                                     \
                    FU
                                        /* Echelle du plan Complexe.                                                                 */
#define   X_TRANSLATION                                                                                                                 \
                    FZERO
#define   Y_TRANSLATION                                                                                                                 \
                    FZERO
                                        /* Translation du plan Complexe.                                                             */

#define   CONSTRUIRE_00                                                                                                                 \
                    VRAI
#define   ANGLE_00                                                                                                                      \
                    GRO0(FRA3(PI))
#define   CONSTRUIRE_01                                                                                                                 \
                    VRAI
#define   ANGLE_01                                                                                                                      \
                    GRO1(FRA3(PI))
#define   CONSTRUIRE_02                                                                                                                 \
                    VRAI
#define   ANGLE_02                                                                                                                      \
                    GRO4(FRA3(PI))
#define   CONSTRUIRE_03                                                                                                                 \
                    VRAI
#define   ANGLE_03                                                                                                                      \
                    GRO1(FRA3(PI))
#define   CONSTRUIRE_04                                                                                                                 \
                    FAUX
#define   ANGLE_04                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_05                                                                                                                 \
                    FAUX
#define   ANGLE_05                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_06                                                                                                                 \
                    FAUX
#define   ANGLE_06                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_07                                                                                                                 \
                    FAUX
#define   ANGLE_07                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_08                                                                                                                 \
                    FAUX
#define   ANGLE_08                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_09                                                                                                                 \
                    FAUX
#define   ANGLE_09                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_10                                                                                                                 \
                    FAUX
#define   ANGLE_10                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_11                                                                                                                 \
                    FAUX
#define   ANGLE_11                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_12                                                                                                                 \
                    FAUX
#define   ANGLE_12                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_13                                                                                                                 \
                    FAUX
#define   ANGLE_13                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_14                                                                                                                 \
                    FAUX
#define   ANGLE_14                                                                                                                      \
                    FZERO
#define   CONSTRUIRE_15                                                                                                                 \
                    FAUX
#define   ANGLE_15                                                                                                                      \
                    FZERO
                                        /* Definition des angles de rotation initialises pour la courbe de von Koch (voir a ce       */
                                        /* propos 'v $xtc/VonKoch.01$c' et les programmes du type 'v $xtc/FracCurve.01$c'). On       */
                                        /* verra aussi avec interet 'v $xtc/FracCurve.11$c' qui tire au sort ses parametres, puis    */
                                        /* les edite. A titre d'exemple, la courbe :                                                 */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /*                            2 ------- 3                                                    */
                                        /*                                                                                           */
                                        /*                            |         |                                                    */
                                        /*                            |         |                                                    */
                                        /*                            |         |                                                    */
                                        /*                                                                                           */
                                        /*                  0 ------- 1         4         7 ------ 9                                 */
                                        /*                                                                                           */
                                        /*                                      |         |                                          */
                                        /*                                      |         |                                          */
                                        /*                                      |         |                                          */
                                        /*                                                                                           */
                                        /*                                      5 ------- 6                                          */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* s'obtient avec les parametres :                                                           */
                                        /*                                                                                           */
                                        /*                  c00=VRAI  a00=0                                                          */
                                        /*                  c01=VRAI  a01=+$pis2                                                     */
                                        /*                  c02=VRAI  a02=-$pis2                                                     */
                                        /*                  c03=VRAI  a03=-$pis2                                                     */
                                        /*                  c04=VRAI  a04=0                                                          */
                                        /*                  c05=VRAI  a05=+$pis2                                                     */
                                        /*                  c06=VRAI  a06=+$pis2                                                     */
                                        /*                  c07=VRAI  a07=-$pis2                                                     */
                                        /*                  rapport=4                                                                */
                                        /*                                                                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   ROTATION_ET_CONSTRUCTION(construire,angle)                                                                                    \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(construire))                                                                                           \
                         Bblock                                                                                                         \
                         Cegal(zG_reduit,zD_reduit);                                                                                    \
                                        /* Initialisation du nombre "Gauche" avec le nombre "Droite".                                */ \
                         Crotation(z_difference_reduite,z_difference_reduite,angle);                                                    \
                                        /* Rotation et homothetie du generateur.                                                     */ \
                         Csomme(zD_reduit,zG_reduit,z_difference_reduite);                                                              \
                                        /* Initialisation du nombre "Droite" avec le nombre "Gauche" translate.                      */ \
                         CALS(construction_de_la_courbe_fractale(ADRESSE(zG_reduit),ADRESSE(zD_reduit)));                               \
                                        /* Et enfin, construction recursive...                                                       */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Construction recursive de la courbe fractale...                                           */

#define   NIVEAU_DES_POINTS(point)                                                                                                      \
                    COND(IL_FAUT(visualiser_l_argument)                                                                                 \
                        ,GENP(SCAL(Cargument_2PI(point)                                                                                 \
                                  ,CERCLE_TRIGONOMETRIQUE                                                                               \
                                  ,BLANC                                                                                                \
                                   )                                                                                                    \
                              )                                                                                                         \
                        ,niveau_de_marquage_des_points                                                                                  \
                         )                                                                                                              \
                                        /* Choix du niveau de marquage d'un point.                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   C O U R B E   F R A C T A L E   B I D I M E N S I O N N E L L E  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
DEFV(Local,DEFV(Logical,INIT(visualiser_l_argument,VISUALISER_L_ARGUMENT)));
                                        /* Doit-on visualiser chaque point a l'aide de son argument ('VRAI') ou bien doit-on         */
                                        /* utiliser 'niveau_de_marquage_des_points' ('FAUX') ?                                       */
DEFV(Local,DEFV(genere_p,INIT(niveau_de_marquage_des_points,NIVEAU_DE_MARQUAGE_DES_POINTS)));
                                        /* Niveau de marquage des points si 'IL_NE_FAUT_PAS(visualiser_l_argument)'.                 */
DEFV(Local,DEFV(Float,INIT(rapport_de_reduction,RAPPORT_DE_REDUCTION)));
                                        /* Facteur de reduction initialise pour la courbe de von Koch.                               */
DEFV(Local,DEFV(Float,INIT(facteur_du_seuil_d_arret,FACTEUR_DU_SEUIL_D_ARRET)));
                                        /* Seuil d'arret de la recursivite.                                                          */
DEFV(coeffF_2D,echelle);
                                        /* Echelle du plan Complexe.                                                                 */
DEFV(deltaF_2D,translation);
                                        /* Translation du plan Complexe.                                                             */

DEFV(Local,DEFV(Logical,INIT(construire_00,CONSTRUIRE_00)));
DEFV(Local,DEFV(Float,INIT(angle_00,ANGLE_00)));
DEFV(Local,DEFV(Logical,INIT(construire_01,CONSTRUIRE_01)));
DEFV(Local,DEFV(Float,INIT(angle_01,ANGLE_01)));
DEFV(Local,DEFV(Logical,INIT(construire_02,CONSTRUIRE_02)));
DEFV(Local,DEFV(Float,INIT(angle_02,ANGLE_02)));
DEFV(Local,DEFV(Logical,INIT(construire_03,CONSTRUIRE_03)));
DEFV(Local,DEFV(Float,INIT(angle_03,ANGLE_03)));
DEFV(Local,DEFV(Logical,INIT(construire_04,CONSTRUIRE_04)));
DEFV(Local,DEFV(Float,INIT(angle_04,ANGLE_04)));
DEFV(Local,DEFV(Logical,INIT(construire_05,CONSTRUIRE_05)));
DEFV(Local,DEFV(Float,INIT(angle_05,ANGLE_05)));
DEFV(Local,DEFV(Logical,INIT(construire_06,CONSTRUIRE_06)));
DEFV(Local,DEFV(Float,INIT(angle_06,ANGLE_06)));
DEFV(Local,DEFV(Logical,INIT(construire_07,CONSTRUIRE_07)));
DEFV(Local,DEFV(Float,INIT(angle_07,ANGLE_07)));
DEFV(Local,DEFV(Logical,INIT(construire_08,CONSTRUIRE_08)));
DEFV(Local,DEFV(Float,INIT(angle_08,ANGLE_08)));
DEFV(Local,DEFV(Logical,INIT(construire_09,CONSTRUIRE_09)));
DEFV(Local,DEFV(Float,INIT(angle_09,ANGLE_09)));
DEFV(Local,DEFV(Logical,INIT(construire_10,CONSTRUIRE_10)));
DEFV(Local,DEFV(Float,INIT(angle_10,ANGLE_10)));
DEFV(Local,DEFV(Logical,INIT(construire_11,CONSTRUIRE_11)));
DEFV(Local,DEFV(Float,INIT(angle_11,ANGLE_11)));
DEFV(Local,DEFV(Logical,INIT(construire_12,CONSTRUIRE_12)));
DEFV(Local,DEFV(Float,INIT(angle_12,ANGLE_12)));
DEFV(Local,DEFV(Logical,INIT(construire_13,CONSTRUIRE_13)));
DEFV(Local,DEFV(Float,INIT(angle_13,ANGLE_13)));
DEFV(Local,DEFV(Logical,INIT(construire_14,CONSTRUIRE_14)));
DEFV(Local,DEFV(Float,INIT(angle_14,ANGLE_14)));
DEFV(Local,DEFV(Logical,INIT(construire_15,CONSTRUIRE_15)));
DEFV(Local,DEFV(Float,INIT(angle_15,ANGLE_15)));
                                        /* Definition des angles de rotation initialises pour la courbe de von Koch.                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O C E D U R E   R E C U R S I V E   D E                                                                                */
/*        G E N E R A T I O N   D ' U N E   C O U R B E   F R A C T A L E   B I D I M E N S I O N N E L L E                          */
/*        S O M M E T   P A R   S O M M E T   ( N O N   J O I N T S   E N T R E - E U X )  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionI

DEFV(Local,DEFV(FonctionI,construction_de_la_courbe_fractale(ARGUMENT_POINTERs(AzG),ARGUMENT_POINTERs(AzD))))
DEFV(Argument,DEFV(complexe,POINTERs(AzG)));
DEFV(Argument,DEFV(complexe,POINTERs(AzD)));
                                        /* Nombres "Gauche" et "Droite" courants.                                                    */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(complexe,zG);
     DEFV(complexe,zD);
                                        /* Nombres "Gauche" et "Droite" courants.                                                    */
     DEFV(complexe,z_difference);
                                        /* Difference entre les nombres "Gauche" et "Droite" courants.                               */

     INIT_ERROR;
     /*..............................................................................................................................*/
     Cegal(zG,INDIRECT(AzG));
     Cegal(zD,INDIRECT(AzD));
                                        /* Recuperation des nombres "Gauche" et "Droite" courants.                                   */
     Cdifference(z_difference,zD,zG);
                                        /* Calcul de la difference entre les nombres "Gauche" et "Droite" courants.                  */

     Test(IFLT(Cmodule(z_difference),MUL2(facteur_du_seuil_d_arret,MIN2(_____lNORMALISE_OX(pasX),_____lNORMALISE_OY(pasY)))))
                                        /* On note le 20200806175355 que le test d'arret par defaut correspond au cas ou la          */
                                        /* taille du segment courant est de l'ordre de l'inter-point...                              */
          Bblock
          DEFV(complexe,zG_translate);
          DEFV(complexe,zD_translate);
                                        /* Nombres "Gauche" et "Droite" courants translates.                                         */
          Cinitialisation(zG_translate
                         ,AXPB(ASD1(echelle,cx),Reelle(zG),ASD1(translation,dx))
                         ,AXPB(ASD1(echelle,cy),Imaginaire(zG),ASD1(translation,dy))
                          );
          Cinitialisation(zD_translate
                         ,AXPB(ASD1(echelle,cx),Reelle(zD),ASD1(translation,dx))
                         ,AXPB(ASD1(echelle,cy),Imaginaire(zD),ASD1(translation,dy))
                          );
                                        /* Translation et mise a l'echelle du plan Complexe...                                       */

          store_point_valide(NIVEAU_DES_POINTS(zG_translate)
                            ,ImageR
                            ,SUPER_cDENORMALISE_OX(Reelle(zG))
                            ,SUPER_cDENORMALISE_OY(Imaginaire(zG))
                            ,FVARIABLE
                             );
          store_point_valide(NIVEAU_DES_POINTS(zD_translate)
                            ,ImageR
                            ,SUPER_cDENORMALISE_OX(Reelle(zD))
                            ,SUPER_cDENORMALISE_OY(Imaginaire(zD))
                            ,FVARIABLE
                             );
                                        /* Marquage des nombres "Gauche" et "Droite" courants lorsque le seuil est atteint,          */
                                        /* la courbe etant donc materialisee uniquement par ses sommets qui ne sont pas joints,      */
                                        /* mais ce qui ne soiut pas par defaut (seuil=1)...                                          */
                                        /*                                                                                           */
                                        /* ATTENTION, ce n'est pas une erreur de trouver (par exemple) :                             */
                                        /*                                                                                           */
                                        /*                  NIVEAU_DES_POINTS(zG_translate)                                          */
                                        /*                                                                                           */
                                        /* et :                                                                                      */
                                        /*                                                                                           */
                                        /*                  Reelle(zG)                                                               */
                                        /*                  Imaginaire(zG)                                                           */
                                        /*                                                                                           */
                                        /* en effet, ainsi, cela permet de modifier l'origine du plan Complexe pour fixer le         */
                                        /* "centre" du coloriage si 'IL_FAUT(visualiser_l_argument)' sans pour cela deplacer         */
                                        /* la courbe generee...                                                                      */
          Eblock
     ATes
          Bblock
          DEFV(complexe,z_difference_reduite);
                                        /* Afin de reduire la difference courante suivant le facteur et l'angle courants...          */
          DEFV(complexe,zG_reduit);
          DEFV(complexe,zD_reduit);
                                        /* Nouveaux nombres "Gauche" et "Droite" apres reduction...                                  */

          Cegal(zD_reduit,zG);
                                        /* Initialisation du nombre "Droite" reduit avec le nombre "Gauche" courant.                 */
          Chomothetie(z_difference_reduite,z_difference,INVE(rapport_de_reduction));
                                        /* Reduction de la difference courante suivant le facteur courant.                           */

          ROTATION_ET_CONSTRUCTION(construire_00,angle_00);
          ROTATION_ET_CONSTRUCTION(construire_01,angle_01);
          ROTATION_ET_CONSTRUCTION(construire_02,angle_02);
          ROTATION_ET_CONSTRUCTION(construire_03,angle_03);
          ROTATION_ET_CONSTRUCTION(construire_04,angle_04);
          ROTATION_ET_CONSTRUCTION(construire_05,angle_05);
          ROTATION_ET_CONSTRUCTION(construire_06,angle_06);
          ROTATION_ET_CONSTRUCTION(construire_07,angle_07);
          ROTATION_ET_CONSTRUCTION(construire_08,angle_08);
          ROTATION_ET_CONSTRUCTION(construire_09,angle_09);
          ROTATION_ET_CONSTRUCTION(construire_10,angle_10);
          ROTATION_ET_CONSTRUCTION(construire_11,angle_11);
          ROTATION_ET_CONSTRUCTION(construire_12,angle_12);
          ROTATION_ET_CONSTRUCTION(construire_13,angle_13);
          ROTATION_ET_CONSTRUCTION(construire_14,angle_14);
          ROTATION_ET_CONSTRUCTION(construire_15,angle_15);
          Eblock
     ETes

     RETU_ERROR;
     Eblock

EFonctionI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D ' U N E   C O U R B E   F R A C T A L E   B I D I M E N S I O N N E L L E                          */
/*        S O M M E T   P A R   S O M M E T   ( N O N   J O I N T S   E N T R E - E U X )  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));

     DEFV(Float,INIT(xG,XG));
     DEFV(Float,INIT(yG,YG));
                                        /* Definition de l'extremite "Gauche" de la courbe.                                          */
     DEFV(Float,INIT(xD,XD));
     DEFV(Float,INIT(yD,YD));
                                        /* Definition de l'extremite "Droite" de la courbe.                                          */

     DEFV(complexe,zG);
     DEFV(complexe,zD);
                                        /* Nombres "Gauche" et "Droite" de depart...                                                 */
     /*..............................................................................................................................*/

#include  xci/coordonne.04.I"
                                        /* Ceci a ete introduit le 20051218184043, ainsi que les 'PROCESS_ARGUMENT_?(...)' qui       */
                                        /* suivent...                                                                                */

     INITIALISATION_ACCROISSEMENT_2D(translation,X_TRANSLATION,Y_TRANSLATION);
                                        /* Initialisation de la translation du plan Complexe.                                        */
     INITIALISATION_COEFFICIENT_2D(echelle,X_ECHELLE,Y_ECHELLE);
                                        /* Initialisation de l'echelle du plan Complexe.                                             */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageR=""R=",nom_imageR);

                         GET_ARGUMENT_L("argument=",visualiser_l_argument);
                         GET_ARGUMENT_P("niveau=""n=",niveau_de_marquage_des_points);
                         GET_ARGUMENT_F("rapport=""r=",rapport_de_reduction);
                         GET_ARGUMENT_F("seuil=""s=",facteur_du_seuil_d_arret);
                         GET_ARGUMENT_F("XG=""xG=",xG);
                         GET_ARGUMENT_F("YG=""yG=",yG);
                         GET_ARGUMENT_F("XD=""xD=",xD);
                         GET_ARGUMENT_F("YD=""yD=",yD);
                                        /* On notera le 20200806172508 que faire :                                                   */
                                        /*                                                                                           */
                                        /*                  xG=0                                                                     */
                                        /*                                                                                           */
                                        /*                      n                                                                    */
                                        /*                  xD=3                avec n E [0,1,2,...]                                 */
                                        /*                                                                                           */
                                        /* montre la courbe entiere (n=0), puis un zoom "auto-similaire" de rapport 3 (n=1), un zoom */
                                        /* "auto-similaire" de rapport 9 (n=2), un zoom "auto-similaire" de rapport 27 (n=3),...     */
                                        /*                                                                                           */
                                        /* Le 20200808102255 les majuscules ont ete introduites pour {x,y}...                        */
                         GET_ARGUMENT_F("Tx=",ASD1(translation,dx));
                         GET_ARGUMENT_F("Ty=",ASD1(translation,dy));
                         GET_ARGUMENT_F("Ex=",ASD1(echelle,cx));
                         GET_ARGUMENT_F("Ey=",ASD1(echelle,cy));
                         GET_ARGUMENT_L("c00=",construire_00);
                         GET_ARGUMENT_F("a00=",angle_00);
                         GET_ARGUMENT_L("c01=",construire_01);
                         GET_ARGUMENT_F("a01=",angle_01);
                         GET_ARGUMENT_L("c02=",construire_02);
                         GET_ARGUMENT_F("a02=",angle_02);
                         GET_ARGUMENT_L("c03=",construire_03);
                         GET_ARGUMENT_F("a03=",angle_03);
                         GET_ARGUMENT_L("c04=",construire_04);
                         GET_ARGUMENT_F("a04=",angle_04);
                         GET_ARGUMENT_L("c05=",construire_05);
                         GET_ARGUMENT_F("a05=",angle_05);
                         GET_ARGUMENT_L("c06=",construire_06);
                         GET_ARGUMENT_F("a06=",angle_06);
                         GET_ARGUMENT_L("c07=",construire_07);
                         GET_ARGUMENT_F("a07=",angle_07);
                         GET_ARGUMENT_L("c08=",construire_08);
                         GET_ARGUMENT_F("a08=",angle_08);
                         GET_ARGUMENT_L("c09=",construire_09);
                         GET_ARGUMENT_F("a09=",angle_09);
                         GET_ARGUMENT_L("c10=",construire_10);
                         GET_ARGUMENT_F("a10=",angle_10);
                         GET_ARGUMENT_L("c11=",construire_11);
                         GET_ARGUMENT_F("a11=",angle_11);
                         GET_ARGUMENT_L("c12=",construire_12);
                         GET_ARGUMENT_F("a12=",angle_12);
                         GET_ARGUMENT_L("c13=",construire_13);
                         GET_ARGUMENT_F("a13=",angle_13);
                         GET_ARGUMENT_L("c14=",construire_14);
                         GET_ARGUMENT_F("a14=",angle_14);
                         GET_ARGUMENT_L("c15=",construire_15);
                         GET_ARGUMENT_F("a15=",angle_15);
                         )
                    );

     Test(IFGT(rapport_de_reduction,FU))
          Bblock
          Eblock
     ATes
          Bblock
          PRINT_ERREUR("le rapport de reduction doit etre strictement superieur a 1");
          PRINT_ERREUR("la valeur par defaut est donc forcee");

          EGAL(rapport_de_reduction,RAPPORT_DE_REDUCTION);

          CAL1(Prer1("elle vaut : %.^^^\n",rapport_de_reduction));
                                        /* Le 20060105155956, le format "16g" est passe a "^^g" pour plus de souplesse...            */
                                        /*                                                                                           */
                                        /* Le 20091123123401, le format "^^g" est passe a "^^^" pour plus de souplesse...            */
          Eblock
     ETes

     CALi(Inoir(ImageR));

     Cinitialisation(zG,xG,yG);
     Cinitialisation(zD,xD,yD);
                                        /* Initialisation des extremites de la courbe.                                               */

     CALS(construction_de_la_courbe_fractale(ADRESSE(zG),ADRESSE(zD)));
                                        /* Construction de la courbe.                                                                */

     CALi(Iupdate_image(nom_imageR,ImageR));

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.