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