/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E   V A L E U R S   C O R R E S P O N D A N T   A                                                  */
/*        U N E   S P I R A L E   D E   F I B O N A C C I   S U R   U N E   S P H E R E  :                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande permet de generer des                                                                           */
/*                  couples {u,v} (soit {latitude,longitude}                                                                         */
/*                  ou encore {theta,phi}) :                                                                                         */
/*                                                                                                                                   */
/*                                      u = latitude  = theta                                                                        */
/*                                      v = longitude = phi                                                                          */
/*                                                                                                                                   */
/*                  de points harmonieusement disposes sur une                                                                       */
/*                  sphere...                                                                                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/valeurs_SpiraleFibonacci$K' :                                                                              */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20131022093132).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/sequence.01.I"

#define   PARAMETRE                                                                                                                     \
                    SOUS(NOMBRE_D_OR,FU)                                                                                                \
                                        /* Definition de l'unique parametre...                                                       */
#define   TRANSLATION_u                                                                                                                 \
                    PI_SUR_2                                                                                                            \
                                        /* Afin de mettre 'u' dans [0,pi] par defaut...                                              */

#define   UTILISER_LES_COORDONNEES_CARTESIENNES                                                                                         \
                    FAUX                                                                                                                \
                                        /* Afin de choisir entre les coordonnees cartesiennes ('VRAI') et les coordonnees            */ \
                                        /* spheriques ('VRAI')...                                                                    */
#define   ETRE_COMPATIBLE_EN_RHO_PHI_THETA                                                                                              \
                    FAUX                                                                                                                \
                                        /* Afin d'etre compatible avec 'v $xrv/optimise.01$K' en coordonnees spheriques              */ \
                                        /* (introduit le 20131023163020).                                                            */
#define   RAYON                                                                                                                         \
                    FU                                                                                                                  \
                                        /* Rayon utile dans le cas d'une conversion en coordonnees cartesiennes (introduit le        */ \
                                        /* 20131023155709).                                                                          */

#include  xci/valeurs.01.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/valeurs.02.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E   V A L E U R S   C O R R E S P O N D A N T   A                                                  */
/*        U N E   S P I R A L E   D E   F I B O N A C C I   S U R   U N E   S P H E R E  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
                                        /* Numero de la premiere image,                                                              */
     DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE));
                                        /* Numero de la derniere image.                                                              */
     DEFV(Int,INIT(numero_d_image,UNDEF));
                                        /* Numero de l'image courante.                                                               */
     DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
                                        /* Pas de passage d'un numero d'image a une autre.                                           */

     DEFV(Float,INIT(parametre,PARAMETRE));
                                        /* Definition de l'unique parametre...                                                       */
     DEFV(Float,INIT(translation_u,TRANSLATION_u));
                                        /* Afin de mettre 'u' dans [0,pi] par defaut...                                              */

     DEFV(Logical,INIT(utiliser_les_coordonnees_cartesiennes,UTILISER_LES_COORDONNEES_CARTESIENNES));
                                        /* Afin de choisir entre les coordonnees cartesiennes ('VRAI') et les coordonnees            */
                                        /* spheriques ('VRAI')...                                                                    */
     DEFV(Logical,INIT(etre_compatible_en_rho_phi_theta,ETRE_COMPATIBLE_EN_RHO_PHI_THETA));
                                        /* Afin d'etre compatible avec 'v $xrv/optimise.01$K' en coordonnees spheriques              */
                                        /* (introduit le 20131023163020).                                                            */
     DEFV(Float,INIT(rayon,RAYON));
                                        /* Rayon utile dans le cas d'une conversion en coordonnees cartesiennes (introduit le        */
                                        /* 20131023155709).                                                                          */

#include  xci/valeurs.03.I"
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_I("premiere=""p=""D=",premiere_image);
                         GET_ARGUMENT_I("derniere=""d=""A=",derniere_image);
                         GET_ARGUMENT_I("pas=",pas_des_images);

                         GET_ARGUMENT_F("parametre=""para=",parametre);
                         GET_ARGUMENT_F("translation_u=""tu=",translation_u);

                         GET_ARGUMENT_L("cartesiennes=""cartesienne=""c=",utiliser_les_coordonnees_cartesiennes);
                         GET_ARGUMENT_N("spheriques=""spherique=""s=",utiliser_les_coordonnees_cartesiennes);
                         GET_ARGUMENT_L("compatible_rho_phi_theta=""compatible=""rho_phi_theta=""rpt="
                                       ,etre_compatible_en_rho_phi_theta
                                        );
                         GET_ARGUMENT_F("rayon=""r=",rayon);
                                        /* Arguments introduits le 20131023155709...                                                 */

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
                         )
                    );

     Test(IFLE(premiere_image,derniere_image))
          Bblock
          DEFV(Float,INIT(parametre_effectif,MUL2(CERCLE_TRIGONOMETRIQUE,parametre)));

          DoIn(numero_d_image,premiere_image,derniere_image,pas_des_images)
               Bblock
               DEFV(Float,INIT(numero_effectif,SOUS(numero_d_image,premiere_image)));

               DEFV(Float,INIT(u,FLOT__UNDEF));
               DEFV(Float,INIT(v,FLOT__UNDEF));
                                        /* Definition du couple {u,v} (soit {latitude,longitude} ou encore {theta,phi}).             */

               EGAL(v,DIVI(MUL2(numero_effectif,parametre_effectif),CERCLE_TRIGONOMETRIQUE));
               EGAL(v,MUL2(SOUS(v,AINT(v)),CERCLE_TRIGONOMETRIQUE));

               Test(IFGT(v,PI))
                    Bblock
                    EGAL(v,SOUS(v,CERCLE_TRIGONOMETRIQUE));
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes

               EGAL(u
                   ,ADD2(ASIX(ADD2(NEGA(RAYON_DU_CERCLE_TRIGONOMETRIQUE)
                                  ,DIVI(DOUB(numero_effectif),SOUS(derniere_image,premiere_image))
                                   )
                              )
                        ,translation_u
                         )
                    );

               Test(IL_FAUT(utiliser_les_coordonnees_cartesiennes))
                    Bblock
                    CAL2(Prin2(Cara(chain_Aconcaten4(" X=%",valeurs_signees,".*",format_d_edition))
                              ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                              ,MULTIPLE_DE(ENTIER_FLOTTANT(Xcartesienne_3D(rayon,v,u)))
                               )
                         );
                    CAL2(Prin2(Cara(chain_Aconcaten4(" Y=%",valeurs_signees,".*",format_d_edition))
                              ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                              ,MULTIPLE_DE(ENTIER_FLOTTANT(Ycartesienne_3D(rayon,v,u)))
                               )
                         );
                    CAL2(Prin2(Cara(chain_Aconcaten4(" Z=%",valeurs_signees,".*",format_d_edition))
                              ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                              ,MULTIPLE_DE(ENTIER_FLOTTANT(Zcartesienne_3D(rayon,v,u)))
                               )
                         );
                                        /* Et enfin, edition du triplet {X,Y,Z}. Ceci a ete introduit le 20131023155709 afin         */
                                        /* d'etre compatible avec 'v $xrv/optimise.01$K'...                                          */
                    Eblock
               ATes
                    Bblock
                    Test(IL_FAUT(etre_compatible_en_rho_phi_theta))
                                        /* Test introduit le 20131023163020...                                                       */
                         Bblock
                         CAL2(Prin2(Cara(chain_Aconcaten4(" rho=%",valeurs_signees,".*",format_d_edition))
                                   ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                                   ,MULTIPLE_DE(ENTIER_FLOTTANT(rayon))
                                    )
                              );
                         CAL2(Prin2(Cara(chain_Aconcaten4(" phi=%",valeurs_signees,".*",format_d_edition))
                                   ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                                   ,MULTIPLE_DE(ENTIER_FLOTTANT(v))
                                    )
                              );
                         CAL2(Prin2(Cara(chain_Aconcaten4(" theta=%",valeurs_signees,".*",format_d_edition))
                                   ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                                   ,MULTIPLE_DE(ENTIER_FLOTTANT(u))
                                    )
                              );
                                        /* Et enfin, edition du triplet {rho,phi,theta} (introduit le 20131023163020).               */
                         CAL2(Prin0(" "));
                                        /* Introduit le 20131029092507 pour simplifier 'v $xiirs/.PSPH.85.1.$U'...                   */
                         Eblock
                    ATes
                         Bblock
                         CAL2(Prin2(Cara(chain_Aconcaten4(" u=%",valeurs_signees,".*",format_d_edition))
                                   ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                                   ,MULTIPLE_DE(ENTIER_FLOTTANT(u))
                                    )
                              );
                         CAL2(Prin2(Cara(chain_Aconcaten4(" v=%",valeurs_signees,".*",format_d_edition))
                                   ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales)
                                   ,MULTIPLE_DE(ENTIER_FLOTTANT(v))
                                    )
                              );
                                        /* Et enfin, edition du couple {u,v} (soit {latitude,longitude} ou encore {theta,phi}).      */
                         Eblock
                    ETes

                    Eblock
               ETes

               CAL2(Prin0("\n"));
               Eblock
          EDoI
          Eblock
     ATes
          Bblock
          PRINT_ERREUR("la relation d'ordre stricte ('premier < dernier') n'est pas respectee");
          Eblock
     ETes

     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.