/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N E   V A R I E T E   D E   C A L A B I - Y A U   8 - D I M E N S I O N N E L L E  :           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/CalabiYau.31$I' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20230202171144).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*        :Debut_listMN_VARIETE_DE_CALABI_YAU_8_DIMENSIONNELLE_11:                                                                   */
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   T R O I S   F O N C T I O N S   ' F '  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition  ('v $xrs/CalabiYau.32$K') :                                                                                    */
/*                                                                                                                                   */
/*                    Une variete hyper-complexe de Calabi-Yau                                                                       */
/*                  8-dimensionnelle est definie                                                                                     */
/*                  implicitement par :                                                                                              */
/*                                                                                                                                   */
/*                                      /      \n1   /      \n2                                                                      */
/*                                      |  Q'  |     |  Q'  |                                                                        */
/*                                      |   1  |     |   2  |                                                                        */
/*                                      | ---- |   + | ---- |   = 1                                                                  */
/*                                      |  A   |     |  B   |                                                                        */
/*                                      \      /     \      /                                                                        */
/*                                                                                                                                   */
/*                  posons :                                                                                                         */
/*                                                                                                                                   */
/*                                            Q'                                                                                     */
/*                                             1                                                                                     */
/*                                      Q  = ----                                                                                    */
/*                                       1    A                                                                                      */
/*                                                                                                                                   */
/*                                            Q'                                                                                     */
/*                                             2                                                                                     */
/*                                      Q  = ----                                                                                    */
/*                                       2    B                                                                                      */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1    n2                                                                                    */
/*                                      Q   + Q   = 1                                                                                */
/*                                       1     2                                                                                     */
/*                                                                                                                                   */
/*                  ou 'Q1' et 'Q2' sont deux nombres hyper-complexes.                                                               */
/*                  Cela peut se reecrire :                                                                                          */
/*                                                                                                                                   */
/*                                               2            2                                                                      */
/*                                      /   n1  \    /   n2  \                                                                       */
/*                                      |  ---- |    |  ---- |                                                                       */
/*                                      |   2   |    |   2   |                                                                       */
/*                                      | Q     |  + | Q     |   = 1                                                                 */
/*                                      \  1    /    \  2    /                                                                       */
/*                                                                                                                                   */
/*                  ou encore :                                                                                                      */
/*                                                                                                                                   */
/*                                            2         2                                                                            */
/*                                      cos(Q)  + sin(Q)  = 1                                                                        */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1         2                                                                                */
/*                                      Q   = cos(Q)                                                                                 */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                       n2         2                                                                                */
/*                                      Q   = sin(Q)                                                                                 */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  (ou 'Q' est un "angle" hyper-complexe) d'ou :                                                                    */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k1   /       \ ----                                                               */
/*                                            2Ip.---- |         | n1                                                                */
/*                                                 n1  |       2 |                                                                   */
/*                                      Q  = e         | cos(Q)  |                                                                   */
/*                                       1              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k2   /       \ ----                                                               */
/*                                            2Ip.---- |         | n2                                                                */
/*                                                 n2  |       2 |                                                                   */
/*                                      Q  = e         | sin(Q)  |                                                                   */
/*                                       2              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ou 'I' represente l'imaginaire pur (0,1,1,1).                                                                    */
/*                                                                                                                                   */
/*                  D'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                                 k1         2                                                                      */
/*                                            2Ip.----       ----                                                                    */
/*                                                 n1         n1                                                                     */
/*                                      Q  = e        .cos(Q)                                                                        */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                                 k2         2                                                                      */
/*                                            2Ip.----       ----                                                                    */
/*                                                 n2         n2                                                                     */
/*                                      Q  = e        .sin(Q)                                                                        */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  et :                                                                                                             */
/*                                                                                                                                   */
/*                                      Q' = A.Q                                                                                     */
/*                                       1      1                                                                                    */
/*                                                                                                                                   */
/*                                      Q' = B.Q                                                                                     */
/*                                       2      2                                                                                    */
/*                                                                                                                                   */
/*                  ou 'k1' et 'k2' indicent les racines n-iemes                                                                     */
/*                  de l'unite (n = {n1,n2}) :                                                                                       */
/*                                                                                                                                   */
/*                                      k1 E [ 0 , n1-1 ]                                                                            */
/*                                                                                                                                   */
/*                                      k2 E [ 0 , n2-1 ]                                                                            */
/*                                                                                                                                   */
/*                  La variete est ainsi composee de n1.n2 "patches"                                                                 */
/*                  parametres chacun par {u,v,u',v'}, avec :                                                                        */
/*                                                                                                                                   */
/*                                      u E [ 0 , p/2 ]                                                                              */
/*                                                                                                                                   */
/*                                      v E [ -1 , +1 ]                                                                              */
/*                                                                                                                                   */
/*                  (ou 'p' designe 'pi') et :                                                                                       */
/*                                                                                                                                   */
/*                                      Q = u + i.v + j.u' + k.v'                                                                    */
/*                                                                                                                                   */
/*                  {u',v'} etant deux parametres supplementaires (et arbitraires)...                                                */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*        :Fin_listMN_VARIETE_DE_CALABI_YAU_8_DIMENSIONNELLE_11:                                                                     */
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  Cette variete est donc a 8 dimensions, et la                                                                     */
/*                  surface a 3 dimensions que l'on visualisera                                                                      */
/*                  sera definie par :                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             X = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q )) + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))     */
/*                   X1    1       X2    1       X3    1       X4    1       X5    2       X6    2       X7    2       X8    2       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Y = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q )) + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))     */
/*                   Y1    1       Y2    1       Y3    1       Y4    1       Y5    2       Y6    2       Y7    2       Y8    2       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Z = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q )) + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))     */
/*                   Z1    1       Z2    1       Z3    1       Z4    1       Z5    2       Z6    2       Z7    2       Z8    2       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  soit, par defaut (qui fait que 'v $xiirs/CAYA.A1.0129' et 'v $xiirs/CAYA.O3' sont semblables bien qu'ayant ete   */
/*                  generees par '$xrs/CalabiYau.12$X' et '$xrs/CalabiYau.32$X' respectivement) :                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             X =      R(Q )                                                          +      I(Q )                                  */
/*                         1                                                                     2                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Y =                    I(Q )                                            +      I(Q )                                  */
/*                                       1                                                       2                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Z =                                                              R(Q )  +      I(Q )                                  */
/*                                                                                 2             2                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  (ou 'R(...)', 'I(...)', J(...)' et 'K(...)' designent respectivement                                             */
/*                  les parties Reelle, Imaginaire, Jmaginaire et Kmaginaire). Une possible                                          */
/*                  matrice 'A' sera :                                                                                               */
/*                                                                                                                                   */
/*                                      | 1 0 0 0 0 1 0 0 |                                                                          */
/*                                      | 0 1 0 0 0 1 0 0 |                                                                          */
/*                                      | 0 0 0 0 1 1 0 0 |                                                                          */
/*                                                                                                                                   */
/*                  qui permet de retrouver 'v $xiirs/CAYA.A1.0129'                                                                  */
/*                  avec 'v $xiirs/CAYA.O3'...                                                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

DEFV(Local,DEFV(hyper_complexe,q1));
DEFV(Local,DEFV(hyper_complexe,q2));
                                        /* Definition des coordonnees {q1,q2} de la variete hyper-complexe a 2 dimensions.           */
DEFV(Local,DEFV(Float,INIT(coordonnee_u,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_v,FLOT__UNDEF)));
                                        /* Definition des coordonnees parametriques {u,v}.                                           */
DEFV(Local,DEFV(Logical,INIT(initialiser_les_coordonnees_u_v,VRAI)));
                                        /* Controle de l'initialisation des coordonnees parametriques {u,v}.                         */

#include  xrs/CalabiYau.31.1.I"
                                        /* Introduit le 20230210114942...                                                            */

#define   GENERATION_DU_CALABI_YAU_3(u,v)                                                                                               \
                    Bblock                                                                                                              \
                    Test(IFOU(IL_FAUT(initialiser_les_coordonnees_u_v)                                                                  \
                             ,IFET(IL_NE_FAUT_PAS(initialiser_les_coordonnees_u_v)                                                      \
                                  ,IFOU(IFNE(u,coordonnee_u)                                                                            \
                                       ,IFNE(v,coordonnee_v)                                                                            \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )                                                                                                              \
                         Bblock                                                                                                         \
                         EGAL(initialiser_les_coordonnees_u_v,FAUX);                                                                    \
                         EGAL(coordonnee_u,u);                                                                                          \
                         EGAL(coordonnee_v,v);                                                                                          \
                                        /* Initialisation et optimisation du processus...                                            */ \
                                                                                                                                        \
                         begin_nouveau_block                                                                                            \
                              Bblock                                                                                                    \
                              GENERATION_DU_CALABI_YAU_OCTODIMENSIONNEL(coordonnee_u_prime,coordonnee_v_prime);                         \
                                        /* Mis sous cette forme le 20230210114942...                                                 */ \
                              Eblock                                                                                                    \
                         end_nouveau_block                                                                                              \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Calcul sur la variete hyper-complexe a 2 dimensions.                                      */

BFonctionV

DEFV(Local,DEFV(FonctionV,FCalabiYau_3(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     GENERATION_DU_CALABI_YAU_3(u,v);
                                        /* Calcul, si besoin est, de {q1,q2}.                                                        */

     RETU_VIDE;
     Eblock

EFonctionV

#undef    GENERATION_DU_CALABI_YAU_3

BFonctionF

DEFV(Local,DEFV(FonctionF,FFx_CalabiYau_3(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     CALS(FCalabiYau_3(u,v));
                                        /* Calcul, si besoin est, de {q1,q2}.                                                        */

     RETU(PROJECTION_PARALLELE_01_8D_3D_X(HReelle(q1)
                                         ,HImaginaire(q1)
                                         ,HJmaginaire(q1)
                                         ,HKmaginaire(q1)
                                         ,HReelle(q2)
                                         ,HImaginaire(q2)
                                         ,HJmaginaire(q2)
                                         ,HKmaginaire(q2)
                                          )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  X = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))                */
                                        /*                        X1    1       X2    1       X3    1       X4    1                  */
                                        /*                    + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))                */
                                        /*                        X5    2       X6    2       X7    2       X8    2                  */
                                        /*                                                                                           */
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFy_CalabiYau_3(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     CALS(FCalabiYau_3(u,v));
                                        /* Calcul, si besoin est, de {q1,q2}.                                                        */

     RETU(PROJECTION_PARALLELE_01_8D_3D_Y(HReelle(q1)
                                         ,HImaginaire(q1)
                                         ,HJmaginaire(q1)
                                         ,HKmaginaire(q1)
                                         ,HReelle(q2)
                                         ,HImaginaire(q2)
                                         ,HJmaginaire(q2)
                                         ,HKmaginaire(q2)
                                          )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  Y = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))                */
                                        /*                        Y1    1       Y2    1       Y3    1       Y4    1                  */
                                        /*                    + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))                */
                                        /*                        Y5    2       Y6    2       Y7    2       Y8    2                  */
                                        /*                                                                                           */
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFz_CalabiYau_3(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     CALS(FCalabiYau_3(u,v));
                                        /* Calcul, si besoin est, de {q1,q2}.                                                        */

     RETU(PROJECTION_PARALLELE_01_8D_3D_Z(HReelle(q1)
                                         ,HImaginaire(q1)
                                         ,HJmaginaire(q1)
                                         ,HKmaginaire(q1)
                                         ,HReelle(q2)
                                         ,HImaginaire(q2)
                                         ,HJmaginaire(q2)
                                         ,HKmaginaire(q2)
                                          )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  Z = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))                */
                                        /*                        Z1    1       Z2    1       Z3    1       Z4    1                  */
                                        /*                    + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))                */
                                        /*                        Z5    2       Z6    2       Z7    2       Z8    2                  */
                                        /*                                                                                           */
     Eblock

EFonctionF

#define   Fx_CalabiYau_3(u,v)                                                                                                           \
                    FFx_CalabiYau_3(u,v)                                                                                                \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            x                                                              */
#define   Fy_CalabiYau_3(u,v)                                                                                                           \
                    FFy_CalabiYau_3(u,v)                                                                                                \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            y                                                              */
#define   Fz_CalabiYau_3(u,v)                                                                                                           \
                    FFz_CalabiYau_3(u,v)                                                                                                \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            z                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N S   R E L A T I V E S   A   L A   P S E U D O - P R O J E C T I O N  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Pxyz_CalabiYau_3                                                                                                              \
                    Bblock                                                                                                              \
                    BLOC(VIDE;);                                                                                                        \
                    Eblock
                                        /* Initialisations specifiques a cette surface destinees a permettre la reinjection des      */
                                        /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans        */
                                        /* 'v $xrs/project2D.11$K'...                                                                */



Copyright © Jean-François COLONNA, 2023-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2023-2024.