/*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D ' U N E S P I R A L E C A R R E E : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande genere une image */ /* dont le nom est l'argument d'appel, */ /* et qui contient une spirale carree */ /* de centre (X_CENTRE,Y_CENTRE). */ /* */ /* */ /* Author of '$xci/spirale.21$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20150331110245). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 X_CENTRE \ Xcentre #define Y_CENTRE \ Ycentre #define Z_CENTRE \ Zorigine /* Definition du centre... */ #define SCALE_OX \ FU #define SCALE_OY \ FU #define SCALE_OZ \ FU #define SCALE_GLOBALE \ FU /* Definition des echelles. */ /* */ /* Le 20220628095416, passage de 'UN' a 'FU'... */ #define NIVEAU_DE_LA_SPIRALE \ BLANC \ /* Niveau de trace de la spirale... */ #define NOMBRE_DE_TOURS \ CENT \ /* Nombre de tours de la spirale... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D ' U N E S P I R A L E C A R R E E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(Int,INIT(X_centre,X_CENTRE)); DEFV(Int,INIT(Y_centre,Y_CENTRE)); DEFV(Int,INIT(Z_centre,Z_CENTRE)); /* Definition du centre... */ DEFV(Float,INIT(scale_OX,SCALE_OX)); DEFV(Float,INIT(scale_OY,SCALE_OY)); DEFV(Float,INIT(scale_OZ,SCALE_OZ)); DEFV(Float,INIT(scale_globale,SCALE_GLOBALE)); /* Definition des echelles. */ /* */ /* Le 20220628095416 je note quelque chose d'etrange. En effet, les quatre definitions */ /* precedentes sont de type 'Int', alors qu'elles servent a definir des elements qui sont */ /* eux de type 'Float' ('v $xiii/vecteurs$FON DEFV.Float.ZINT.vecteurs_____scale_'). Je */ /* corrige donc cela a cette date... */ DEFV(genere_p,INIT(niveau_de_la_spirale,NIVEAU_DE_LA_SPIRALE)); /* Niveau de trace de la spirale... */ DEFV(Int,INIT(nombre_de_tours,NOMBRE_DE_TOURS)); /* Nombre de tours de la spirale... */ /*..............................................................................................................................*/ GET_ARGUMENTSg(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("SX_SY_SZ_____compatibilite_20070416=""compatibilite_20070416=" ,SX_SY_SZ_____compatibilite_20070416 ); GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_I("X_centre=""Xc=""xc",X_centre); GET_ARGUMENT_I("Y_centre=""Yc=""yc",Y_centre); /* On notera qu'evidemment 'Z_centre' n'a pas a etre un argument... */ GET_ARGUMENT_F("K=""k=",scale_globale); GET_ARGUMENT_F("KX=""kx=",scale_OX); GET_ARGUMENT_F("KY=""ky=",scale_OY); GET_ARGUMENT_F("KZ=""kz=",scale_OZ); /* Le 20220628095416, passage de 'GET_ARGUMENT_I(...)' a 'GET_ARGUMENT_F(...)'... */ GET_ARGUMENT_P("niveau_spirale=""n=",niveau_de_la_spirale); GET_ARGUMENT_I("nombre_tours=""tours=""t=",nombre_de_tours); ) ); SET_CURSOR(_____cNORMALISE_OX(X_centre),_____cNORMALISE_OY(Y_centre),_____cNORMALISE_OZ(Z_centre)); EGAL(vecteurs_____scale_globale,NEUT(scale_globale)); EGAL(vecteurs_____scale_OX,_____lNORMALISE_OX(scale_OX)); EGAL(vecteurs_____scale_OY,_____lNORMALISE_OY(scale_OY)); EGAL(vecteurs_____scale_OZ,_____lNORMALISE_OZ(scale_OZ)); /* Pour les valeurs a donner a {K,KX,KY}, voir 'v $xiirv/.PRIM.H1.1.$U 20150401155810'... */ Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageG,nom_imageA)))) Bblock /* Chargement de l'image Argument. */ SET_COULEURS(niveau_de_la_spirale,niveau_de_la_spirale); gA; Repe(nombre_de_tours) Bblock g1;gB; g2;gB; /* On trace deux cotes orthogonaux et egaux de la spirale... */ CALS(FgXADDI()); CALS(FgYADDI()); /* Et on change d'echelle... */ g3;gB; g4;gB; /* On trace deux cotes orthogonaux et egaux de la spirale... */ CALS(FgXADDI()); CALS(FgYADDI()); /* Et on change d'echelle... */ Eblock ERep CALi(Iupdate_image(nom_imageR,ImageG)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande