/*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N S G E N E R A L E S D E C O O R D O N N E E S C A R T E S I E N N E S */ /* E N C O O R D O N N E E S S P H E R I Q U E S E T I N V E R S E M E N T : */ /* */ /* */ /* Author of '$xcg/ConversionCartesiennesSpheriques.01$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20220612103847). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ @define PRAGMA_CL_____PAS_DE_LIBRAIRIES_DYNAMIQUES /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ #define LES_COORDONNEES_SONT_CARTESIENNES \ VRAI \ /* Choix entre les coordonnees cartesiennes et spheriques... */ #define NOMBRES_COMPLEXES \ VRAI #define NOMBRES_HYPER_COMPLEXES \ VRAI #define NOMBRES_HYPER_HYPER_COMPLEXES \ VRAI /* Choix {C,HC,HHC}... */ #define COORDONNEES_X1 \ FZERO #define COORDONNEES_X2 \ FZERO #define COORDONNEES_X3 \ FZERO #define COORDONNEES_X4 \ FZERO #define COORDONNEES_X5 \ FZERO #define COORDONNEES_X6 \ FZERO #define COORDONNEES_X7 \ FZERO #define COORDONNEES_X8 \ FZERO /* Coordonnees cartesiennes a 2, 4 et 8 dimensions. */ #define COORDONNEES_R_ \ FZERO #define COORDONNEES_A1 \ FZERO #define COORDONNEES_A2 \ FZERO #define COORDONNEES_A3 \ FZERO #define COORDONNEES_A4 \ FZERO #define COORDONNEES_A5 \ FZERO #define COORDONNEES_A6 \ FZERO #define COORDONNEES_A7 \ FZERO /* Coordonnees spheriques a 2, 4 et 8 dimensions. */ #include xcg/ARIT.01.I" #include xci/valeurs.01.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/valeurs.02.I" #define EDITION_2_2_VALEURS(v11,v12,v21,v22) \ Bblock \ CAL2(Prin2("{%+.^^^,%+.^^^}" \ ,v11,v12 \ ) \ ); \ CAL2(Prin0(" --> ")); \ CAL2(Prin2("{%+.^^^,%+.^^^}" \ ,v21,v22 \ ) \ ); \ CAL2(Prin0("\n")); \ Eblock #define EDITION_4_4_VALEURS(v11,v12,v13,v14,v21,v22,v23,v24) \ Bblock \ CAL2(Prin4("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}" \ ,v11,v12,v13,v14 \ ) \ ); \ CAL2(Prin0(" --> ")); \ CAL2(Prin4("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}" \ ,v21,v22,v23,v24 \ ) \ ); \ CAL2(Prin0("\n")); \ Eblock #define EDITION_8_8_VALEURS(v11,v12,v13,v14,v15,v16,v17,v18,v21,v22,v23,v24,v25,v26,v27,v28) \ Bblock \ CAL2(Prin8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^}" \ ,v11,v12,v13,v14,v15,v16,v17,v18 \ ) \ ); \ CAL2(Prin0(" --> ")); \ CAL2(Prin8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^}" \ ,v21,v22,v23,v24,v25,v26,v27,v28 \ ) \ ); \ CAL2(Prin0("\n")); \ Eblock /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C O N V E R S I O N S G E N E R A L E S D E C O O R D O N N E E S C A R T E S I E N N E S */ /* E N C O O R D O N N E E S S P H E R I Q U E S E T I N V E R S E M E N T : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Logical,INIT(les_coordonnees_sont_cartesiennes,LES_COORDONNEES_SONT_CARTESIENNES)); /* Choix entre les coordonnees cartesiennes et spheriques... */ DEFV(Logical,INIT(nombres_complexes,NOMBRES_COMPLEXES)); DEFV(Logical,INIT(nombres_hyper_complexes,NOMBRES_HYPER_COMPLEXES)); DEFV(Logical,INIT(nombres_hyper_hyper_complexes,NOMBRES_HYPER_HYPER_COMPLEXES)); /* Choix {C,HC,HHC}... */ DEFV(Float,INIT(coordonnees_X1,COORDONNEES_X1)); DEFV(Float,INIT(coordonnees_X2,COORDONNEES_X2)); DEFV(Float,INIT(coordonnees_X3,COORDONNEES_X3)); DEFV(Float,INIT(coordonnees_X4,COORDONNEES_X4)); DEFV(Float,INIT(coordonnees_X5,COORDONNEES_X5)); DEFV(Float,INIT(coordonnees_X6,COORDONNEES_X6)); DEFV(Float,INIT(coordonnees_X7,COORDONNEES_X7)); DEFV(Float,INIT(coordonnees_X8,COORDONNEES_X8)); /* Coordonnees cartesiennes a 2, 4 et 8 dimensions. */ DEFV(Float,INIT(coordonnees_R_,COORDONNEES_R_)); DEFV(Float,INIT(coordonnees_A1,COORDONNEES_A1)); DEFV(Float,INIT(coordonnees_A2,COORDONNEES_A2)); DEFV(Float,INIT(coordonnees_A3,COORDONNEES_A3)); DEFV(Float,INIT(coordonnees_A4,COORDONNEES_A4)); DEFV(Float,INIT(coordonnees_A5,COORDONNEES_A5)); DEFV(Float,INIT(coordonnees_A6,COORDONNEES_A6)); DEFV(Float,INIT(coordonnees_A7,COORDONNEES_A7)); /* Coordonnees spheriques a 2, 4 et 8 dimensions. */ DEFV(complexe,z); DEFV(complexe_etendu,z_etendu); DEFV(hyper_complexe,q); DEFV(hyper_complexe_etendu,q_etendu); DEFV(hyper_hyper_complexe,o); DEFV(hyper_hyper_complexe_etendu,o_etendu); #include xci/valeurs.03.I" /*..............................................................................................................................*/ GET_ARGUMENTS_(nombre_d_arguments ,BLOC( GET_ARGUMENT_L("coordonnees_cartesiennes=""cc=",les_coordonnees_sont_cartesiennes); GET_ARGUMENT_N("coordonnees_spheriques=""cs=",les_coordonnees_sont_cartesiennes); GET_ARGUMENT_L("nombres_complexes=""C=",nombres_complexes); GET_ARGUMENT_L("nombres_hyper_complexes=""HC=",nombres_hyper_complexes); GET_ARGUMENT_L("nombres_hyper_hyper_complexes=""HHC=",nombres_hyper_hyper_complexes); GET_ARGUMENT_F("X1=""x1=",coordonnees_X1); GET_ARGUMENT_F("X2=""x2=",coordonnees_X2); GET_ARGUMENT_F("X3=""x3=",coordonnees_X3); GET_ARGUMENT_F("X4=""x4=",coordonnees_X4); GET_ARGUMENT_F("X5=""x5=",coordonnees_X5); GET_ARGUMENT_F("X6=""x6=",coordonnees_X6); GET_ARGUMENT_F("X7=""x7=",coordonnees_X7); GET_ARGUMENT_F("X8=""x8=",coordonnees_X8); GET_ARGUMENT_F("R=""r=",coordonnees_R_); GET_ARGUMENT_F("A1=""a1=",coordonnees_A1); GET_ARGUMENT_F("A2=""a2=",coordonnees_A2); GET_ARGUMENT_F("A3=""a3=",coordonnees_A3); GET_ARGUMENT_F("A4=""a4=",coordonnees_A4); GET_ARGUMENT_F("A5=""a5=",coordonnees_A5); GET_ARGUMENT_F("A6=""a6=",coordonnees_A6); GET_ARGUMENT_F("A7=""a7=",coordonnees_A7); PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_2; /* Ces deux procedures furent introduites le 20061226182515... */ ) ); Test(EST_VRAI(les_coordonnees_sont_cartesiennes)) Bblock CAL2(Prin0("Conversion Cartesienne --> Spherique\n")); Test(IL_FAUT(nombres_complexes)) Bblock Cinitialisation(z ,coordonnees_X1 ,coordonnees_X2 ); Cextension_directe(z_etendu,z); EDITION_2_2_VALEURS(Reelle(z) ,Imaginaire(z) ,CP_Rho(z_etendu) ,CP_Theta(z_etendu) ); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(nombres_hyper_complexes)) Bblock HCinitialisation(q ,coordonnees_X1 ,coordonnees_X2 ,coordonnees_X3 ,coordonnees_X4 ); HCextension_directe(q_etendu,q); EDITION_4_4_VALEURS(HReelle(q) ,HImaginaire(q) ,HJmaginaire(q) ,HKmaginaire(q) ,HCHS_Rho(q_etendu) ,HCHS_Theta(q_etendu) ,HCHS_Phi(q_etendu) ,HCHS_Alpha(q_etendu) ); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(nombres_hyper_hyper_complexes)) Bblock HHCinitialisation(o ,coordonnees_X1 ,coordonnees_X2 ,coordonnees_X3 ,coordonnees_X4 ,coordonnees_X5 ,coordonnees_X6 ,coordonnees_X7 ,coordonnees_X8 ); HHCextension_directe(o_etendu,o); EDITION_8_8_VALEURS(HHReelle(o) ,HHImaginaire(o) ,HHJmaginaire(o) ,HHKmaginaire(o) ,HHSmaginaire(o) ,HHTmaginaire(o) ,HHUmaginaire(o) ,HHVmaginaire(o) ,HHCHHS_Rho(o_etendu) ,HHCHHS_Angle1(o_etendu) ,HHCHHS_Angle2(o_etendu) ,HHCHHS_Angle3(o_etendu) ,HHCHHS_Angle4(o_etendu) ,HHCHHS_Angle5(o_etendu) ,HHCHHS_Angle6(o_etendu) ,HHCHHS_Angle7(o_etendu) ); Eblock ATes Bblock Eblock ETes Eblock ATes Bblock CAL2(Prin0("Conversion Spherique --> Cartesienne\n")); Test(IL_FAUT(nombres_complexes)) Bblock Cinitialisation_trigonometrique(z ,coordonnees_R_ ,coordonnees_A1 ); EDITION_2_2_VALEURS(coordonnees_R_ ,coordonnees_A1 ,Reelle(z) ,Imaginaire(z) ); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(nombres_hyper_complexes)) Bblock HCinitialisation_trigonometrique(q ,coordonnees_R_ ,coordonnees_A1 ,coordonnees_A2 ,coordonnees_A3 ); EDITION_4_4_VALEURS(coordonnees_R_ ,coordonnees_A1 ,coordonnees_A2 ,coordonnees_A3 ,HReelle(q) ,HImaginaire(q) ,HJmaginaire(q) ,HKmaginaire(q) ); Eblock ATes Bblock Eblock ETes Test(IL_FAUT(nombres_hyper_hyper_complexes)) Bblock HHCinitialisation_trigonometrique(o ,coordonnees_R_ ,coordonnees_A1 ,coordonnees_A2 ,coordonnees_A3 ,coordonnees_A4 ,coordonnees_A5 ,coordonnees_A6 ,coordonnees_A7 ); EDITION_8_8_VALEURS(coordonnees_R_ ,coordonnees_A1 ,coordonnees_A2 ,coordonnees_A3 ,coordonnees_A4 ,coordonnees_A5 ,coordonnees_A6 ,coordonnees_A7 ,HHReelle(o) ,HHImaginaire(o) ,HHJmaginaire(o) ,HHKmaginaire(o) ,HHSmaginaire(o) ,HHTmaginaire(o) ,HHUmaginaire(o) ,HHVmaginaire(o) ); Eblock ATes Bblock Eblock ETes Eblock ETes RETU_Commande; Eblock ECommande