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