/*************************************************************************************************************************************/ /* */ /* R E C H E R C H E D ' U N E R O T A T I O N D A N S L E S Q U A T E R N I O N S : */ /* */ /* */ /* Author of '$xtKg/rotations_HC.01$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20181202143943). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_CPP_____MODULE_NON_DERIVABLE @define PRAGMA_CL_____MODULE_NON_OPTIMISABLE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 ALPHA_D \ NEGA(PI_SUR_2) #define ALPHA_A \ NEUT(PI_SUR_2) #define PHI___D \ NEGA(PI_SUR_2) #define PHI___A \ NEUT(PI_SUR_2) #define THETA__D \ NEGA(PI_SUR_2) #define THETA__A \ NEUT(PI_SUR_2) #define PAS \ FRA10(FRA10(FU)) #define EPSILON \ GRO3(FRA10(FU)) /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /* */ /* R E C H E R C H E D ' U N E R O T A T I O N D A N S L E S Q U A T E R N I O N S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Float,INIT(c1,11)); DEFV(Float,INIT(ci,22)); DEFV(Float,INIT(cj,33)); DEFV(Float,INIT(ck,44)); /* Composantes flottantes. */ DEFV(hyper_complexe,q1); /* Variables complexe et hyper-complexe. */ DEFV(Float,INIT(alpha,FLOT__UNDEF)); DEFV(Float,INIT(phi__,FLOT__UNDEF)); DEFV(Float,INIT(theta_,FLOT__UNDEF)); /* Angles... */ DEFV(Float,INIT(pas,PAS)); DEFV(Float,INIT(epsilon,EPSILON)); /* Arguments d'appel... */ /*..............................................................................................................................*/ EGAL(nombre_de_chiffres_des_editions_flottantes,QUATRE); EGAL(PREMIER_CARACTERE_ITb0(mode_fg_de_FORMAT_FLOT_EDITION),K_f); GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_F("epsilon=",epsilon); GET_ARGUMENT_F("pas=",pas); ) ); HCinitialisation(q1,c1,ci,cj,ck); DoIn(alpha,ALPHA_D,ALPHA_A,pas) Bblock DoIn(phi__,PHI___D,PHI___A,pas) Bblock DoIn(theta_,THETA__D,THETA__A,pas) Bblock DEFV(hyper_complexe,q2); HCrotation(q2,q1,alpha,phi__,theta_); Test(I4ET(IFEQ_a_peu_pres_absolu(HReelle(q2),NEGA(HImaginaire(q1)),epsilon) ,IFEQ_a_peu_pres_absolu(HImaginaire(q2),NEUT(HReelle(q1)),epsilon) ,IFEQ_a_peu_pres_absolu(HJmaginaire(q2),NEUT(HJmaginaire(q1)),epsilon) ,IFEQ_a_peu_pres_absolu(HKmaginaire(q2),NEUT(HKmaginaire(q1)),epsilon) ) ) Bblock CAL3(Prme3("rotation={%+.^^^,%+.^^^,%+.^^^}",alpha,phi__,theta_)); CALS(FPrme0(" ")); CAL3(Prme4("q1={%+.^^^,%+.^^^,%+.^^^,%+.^^^}",HReelle(q1),HImaginaire(q1),HJmaginaire(q1),HKmaginaire(q1))); CALS(FPrme0(" --> ")); CAL3(Prme4("q2={%+.^^^,%+.^^^,%+.^^^,%+.^^^}",HReelle(q2),HImaginaire(q2),HJmaginaire(q2),HKmaginaire(q2))); CALS(Fsauts_de_lignes(UN)); Eblock ATes Bblock Eblock ETes Eblock EDoI Eblock EDoI Eblock EDoI RETU_Commande; Eblock ECommande