/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A C E   D ' U N E   E T O I L E   D E   D A V I D  :                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             *     * * * * * *   * * * * * *   * * * * * *   *         *   * * * * * *   *   * * * * * *   *         *             */
/*                        *             *        *             **        *        *        *   *         *   **        *             */
/*            * *         *             *        *             * *       *        *        *   *         *   * *       *             */
/*                        *             *        *             *  *      *        *        *   *         *   *  *      *             */
/*           *   *        *             *        *             *   *     *        *        *   *         *   *   *     *             */
/*                        *             *        * * *         *    *    *        *        *   *         *   *    *    *             */
/*          * * * *       *             *        *             *     *   *        *        *   *         *   *     *   *             */
/*                        *             *        *             *      *  *        *        *   *         *   *      *  *             */
/*         *       *      *             *        *             *       * *        *        *   *         *   *       * *             */
/*                        *             *        *             *        **        *        *   *         *   *        **             */
/*        *         *     *             *        * * * * * *   *         *        *        *   * * * * * *   *         *             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                                                                                                                                   */
/*                    Je decouvre le 20231021110259 une erreur                                                                       */
/*                  incroybale ('v $xrd/Salomon.01$K 20231021105645').                                                               */
/*                  En effet, "Sceau de Salomon" est synonyme de                                                                     */
/*                  "Etoile de David" et ce qui avait ete appele                                                                     */
/*                  par erreur "Sceau de Salomon" etait en fait le                                                                   */
/*                  "Rub El Hizb" (symbole islamique de l'alphabet                                                                   */
/*                  arabe).                                                                                                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ................................................................                                                 */
/*                  ...............................:-:..............................                                                 */
/*                  .............................:+ooo+:............................                                                 */
/*                  ............................:--:::--:...........................                                                 */
/*                  ...........................-++-...-++:..........................                                                 */
/*                  ..........................-+-:.....:-+-.........................                                                 */
/*                  .........................:+-:.......:-+:........................                                                 */
/*                  .......................:-+-:.........:-+-:......................                                                 */
/*                  .......:+oo++++++oo+++o###o+++oo+oo+++o###o+++oo++++++oo+:......                                                 */
/*                  .......:+o+-...:::...-+++:...::..:::...:+++-...:::..:-+o-:......                                                 */
/*                  .........---........:--:.................:+-:.......:--:........                                                 */
/*                  ..........-+-:.....:++:...................-++:.....:++-.........                                                 */
/*                  ...........-++:...-++:.....................:++:...-++:..........                                                 */
/*                  ............:--:::--:.......................:--:::--:...........                                                 */
/*                  .............:-oo+-...........................-oo+-.............                                                 */
/*                  ..............-*#o:...........................:o#o-.............                                                 */
/*                  ..............-oo+-...........................-oo+-.............                                                 */
/*                  ............:--:::--:.......................:--:::--:...........                                                 */
/*                  ...........-++:...-++:.....................:++-...-++:..........                                                 */
/*                  ..........-+-:.....-++:...................-++:.....:++-.........                                                 */
/*                  .........---........:--:.................:+-:.......:--:........                                                 */
/*                  .......:+o+-...:::...-++-:...::..:::...:+++-...:::..:-+o-:......                                                 */
/*                  .......:+oo++++++oo+++o###o+++oo+oo+++o###o+++oo++++++oo+:......                                                 */
/*                  .......................:-+-:.........:-+-:......................                                                 */
/*                  .........................-+-:.......:-+:........................                                                 */
/*                  ..........................-+-:.....:-+-.........................                                                 */
/*                  ...........................-++-...-++:..........................                                                 */
/*                  ............................:--:::--:...........................                                                 */
/*                  .............................:+ooo+:............................                                                 */
/*                  ...............................--:..............................                                                 */
/*                  ................................................................                                                 */
/*                  ................................................................                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrd/David.01$K' :                                                                                              */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1993??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   COTE                                                                                                                          \
                    DEUX                                                                                                                \
                                        /* Definition du nombre d'unites sur un cote.                                                */

#define   G1                                                                                                                            \
                    Bblock                                                                                                              \
                    DO(COTE                                                                                                             \
                      ,BLOC(g1;)                                                                                                        \
                       );                                                                                                               \
                    Eblock
#define   G2                                                                                                                            \
                    Bblock                                                                                                              \
                    DO(COTE                                                                                                             \
                      ,BLOC(g2;)                                                                                                        \
                       );                                                                                                               \
                    Eblock
#define   G3                                                                                                                            \
                    Bblock                                                                                                              \
                    DO(COTE                                                                                                             \
                      ,BLOC(g3;)                                                                                                        \
                       );                                                                                                               \
                    Eblock
#define   G4                                                                                                                            \
                    Bblock                                                                                                              \
                    DO(COTE                                                                                                             \
                      ,BLOC(g4;)                                                                                                        \
                       );                                                                                                               \
                    Eblock

#define   ECHELLE_COMMUNE                                                                                                               \
                    PARE(192)                                                                                                           \
                                        /* Definition de l'echelle commune aux trois axes...                                         */

#define   GENERE_ETOILE_DE_DAVID                                                                                                        \
                    Bblock                                                                                                              \
                    SET_ANTI_ALIASING(VRAI);                                                                                            \
                    SET_COULEURS(NOIR,BLANC);                                                                                           \
                                                                                                                                        \
                    CALS(FgMIT());                                                                                                      \
                    INITIALISATION_SYSTEMATIQUE_TRANSFORMATION;                                                                         \
                                        /* Reinitialisation provisoire des transformations...                                        */ \
                                                                                                                                        \
                    SKH(echelle_globale);                                                                                               \
                                        /* Definition de l'echelle globale.                                                          */ \
                    SXH(ECHELLE_COMMUNE);                                                                                               \
                                        /* Definition de l'echelle sur l'axe des 'X'.                                                */ \
                    SYH(ECHELLE_COMMUNE);                                                                                               \
                                        /* Definition de l'echelle sur l'axe des 'Y'.                                                */ \
                    SZH(ECHELLE_COMMUNE);                                                                                               \
                                        /* Definition de l'echelle sur l'axe des 'Z'.                                                */ \
                    PUSH_ANTI_ALIASING;                                                                                                 \
                                        /* Juste pour valider le couple (PUSH,PULL).                                                 */ \
                                                                                                                                        \
                    SET_CURSOR(_____cNORMALISE_OX(INTE(DIVI(FXcentre_____,super_echelle_OX)))                                           \
                              ,_____cNORMALISE_OY(INTE(DIVI(FYcentre_____,super_echelle_OY)))                                           \
                              ,_____cNORMALISE_OZ(Zorigine)                                                                             \
                               );                                                                                                       \
                                        /* On se place au centre de l'ecran.                                                         */ \
                    PULL_ANTI_ALIASING;                                                                                                 \
                                        /* Juste pour valider le couple (PUSH,PULL).                                                 */ \
                                                                                                                                        \
                    CALS(FgMOT());                                                                                                      \
                                        /* Restauration des transformations...                                                       */ \
                                                                                                                                        \
                    CALS(FgMIC());                                                                                                      \
                                        /* Sauvegarde du curseur...                                                                  */ \
                    CALS(FgMIY());                                                                                                      \
                    SYH(INTE(DIVI(FLOT(ECHELLE_COMMUNE),RACX(TROIS))));                                                                 \
                                        /* Modification temporaire de l'echelle sur l'axe des 'Y' qui rappelle le fait que pour      */ \
                                        /* atteindre le sommet "bas-gauche" d'un triangle equilateral a partir de son centre de      */ \
                                        /* gravite, il faut descendre de 'dy' et aller a gauche de 'dx', et que le rapport dx/dy     */ \
                                        /* est egal a racine de 3...                                                                 */ \
                    DO(MOIT(COTE)                                                                                                       \
                      ,BLOC(g3;g4;)                                                                                                     \
                       );                                                                                                               \
                    CALS(FgMOY());                                                                                                      \
                                        /* Afin de placer le centre du carre au centre de l'ecran...                                 */ \
                    gA;                                                                                                                 \
                    DO(TROIS                                                                                                            \
                      ,BLOC(G1;gB;TRZ(GRO2(FRA3(PI))));                                                                                 \
                       );                                                                                                               \
                                        /* Trace du triangle de base...                                                              */ \
                    CALS(FgMOC());                                                                                                      \
                                        /* Restauration du curseur...                                                                */ \
                                                                                                                                        \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   ECHELLE_GLOBALE                                                                                                               \
                    FU                                                                                                                  \
                                        /* Echelle globale introduite le 20231019151003, la valeur par defaut garantissant la        */ \
                                        /* compatibilite anterieure...                                                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A C E   D ' U N E   E T O I L E   D E   D A V I D  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));

     DEFV(Float,INIT(echelle_globale,ECHELLE_GLOBALE));
                                        /* Echelle globale...                                                                        */
     /*..............................................................................................................................*/
     INITIALISATION_SYSTEMATIQUE_TRANSFORMATION;

     GET_ARGUMENTSv(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("SX_SY_SZ_____compatibilite_20070416=""compatibilite_20070416="
                                       ,SX_SY_SZ_____compatibilite_20070416
                                        );
                                        /* Parametre introduit le 20070416161421...                                                  */
                         GET_ARGUMENT_L("Ipoint_anti_aliase_segment_____compatibilite_20110420=""compatibilite_20110420="
                                       ,Ipoint_anti_aliase_segment_____compatibilite_20110420
                                        );
                                        /* Parametre introduit le 20110420145308...                                                  */

                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);

                         GET_ARGUMENT_F("echelle=",echelle_globale);
                                        /* Parametre introduit le 20231019145419...                                                  */

                         GET_ARGUMENT_L("anti_aliasing=""aa=",vecteurs_____etat_anti_aliasing);
                         GET_ARGUMENT_L("editer_vecteurs=""ev=",IFsegment_____editer_le_vecteur_bidimensionnel);
                         GET_ARGUMENT_L("trier_vecteurs=""tv=",IFsegment_____trier_puis_editer_le_vecteur_bidimensionnel);
                                        /* Parametres introduits le 20231019145419...                                                */
                         )
                    );

     SUPER_ECHELLE_PETIT_CARRE;
                                        /* Choix du format des figures obtenues :                                                    */
                                        /*                                                                                           */
                                        /*                  SUPER_ECHELLE_RECTANGULAIRE;                                             */
                                        /*                  SUPER_ECHELLE_PETIT_CARRE;                                               */
                                        /*                  SUPER_ECHELLE_GRAND_CARRE;                                               */
                                        /*                                                                                           */

     CALi(Inoir(ImageR));
                                        /* Initialisation de l'image Resultat.                                                       */

     CALS(FgERASE());
                                        /* Clear...                                                                                  */

     TRZ(FZERO);
     GENERE_ETOILE_DE_DAVID;
                                        /* Generation de la premiere partie de l'Etoile de David.                                    */

     TRZ(FRA1(PI));
     GENERE_ETOILE_DE_DAVID;
                                        /* Generation de la premiere partie de l'Etoile de David.                                    */

     CALS(Imove(ImageR,ImageG));

     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.