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