/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   4 - D I M E N S I O N N E L L E  :           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/CalabiYau.11$I' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20010525140949).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*        :Debut_listMN_VARIETE_DE_CALABI_YAU_4_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.12$K') :                                                                                    */
/*                                                                                                                                   */
/*                    Une variete complexe de Calabi-Yau                                                                             */
/*                  4-dimensionnelle est definie                                                                                     */
/*                  implicitement par :                                                                                              */
/*                                                                                                                                   */
/*                                      /      \n1   /      \n2                                                                      */
/*                                      |  Z'  |     |  Z'  |                                                                        */
/*                                      |   1  |     |   2  |                                                                        */
/*                                      | ---- |   + | ---- |   = 1                                                                  */
/*                                      |  A   |     |  B   |                                                                        */
/*                                      \      /     \      /                                                                        */
/*                                                                                                                                   */
/*                  posons :                                                                                                         */
/*                                                                                                                                   */
/*                                            Z'                                                                                     */
/*                                             1                                                                                     */
/*                                      Z  = ----                                                                                    */
/*                                       1    A                                                                                      */
/*                                                                                                                                   */
/*                                            Z'                                                                                     */
/*                                             2                                                                                     */
/*                                      Z  = ----                                                                                    */
/*                                       2    B                                                                                      */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1    n2                                                                                    */
/*                                      Z   + Z   = 1                                                                                */
/*                                       1     2                                                                                     */
/*                                                                                                                                   */
/*                  ou 'Z1' et 'Z2' sont deux nombres complexes.                                                                     */
/*                  Cela peut se reecrire :                                                                                          */
/*                                                                                                                                   */
/*                                               2            2                                                                      */
/*                                      /   n1  \    /   n2  \                                                                       */
/*                                      |  ---- |    |  ---- |                                                                       */
/*                                      |   2   |    |   2   |                                                                       */
/*                                      | Z     |  + | Z     |   = 1                                                                 */
/*                                      \  1    /    \  2    /                                                                       */
/*                                                                                                                                   */
/*                  ou encore :                                                                                                      */
/*                                                                                                                                   */
/*                                            2         2                                                                            */
/*                                      cos(Z)  + sin(Z)  = 1                                                                        */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1         2                                                                                */
/*                                      Z   = cos(Z)                                                                                 */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                       n2         2                                                                                */
/*                                      Z   = sin(Z)                                                                                 */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  (ou 'Z' est un "angle" complexe) d'ou :                                                                          */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k1   /       \ ----                                                               */
/*                                            2ip.---- |         | n1                                                                */
/*                                                 n1  |       2 |                                                                   */
/*                                      Z  = e         | cos(Z)  |                                                                   */
/*                                       1              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k2   /       \ ----                                                               */
/*                                            2ip.---- |         | n2                                                                */
/*                                                 n2  |       2 |                                                                   */
/*                                      Z  = e         | sin(Z)  |                                                                   */
/*                                       2              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ou 'i' represente l'imaginaire pur (0,1).                                                                        */
/*                                                                                                                                   */
/*                  D'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                                 k1         2                                                                      */
/*                                            2ip.----       ----                                                                    */
/*                                                 n1         n1                                                                     */
/*                                      Z  = e        .cos(Z)                                                                        */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                                 k2         2                                                                      */
/*                                            2ip.----       ----                                                                    */
/*                                                 n2         n2                                                                     */
/*                                      Z  = e        .sin(Z)                                                                        */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  et :                                                                                                             */
/*                                                                                                                                   */
/*                                      Z' = A.Z                                                                                     */
/*                                       1      1                                                                                    */
/*                                                                                                                                   */
/*                                      Z' = B.Z                                                                                     */
/*                                       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}, avec :                                                                              */
/*                                                                                                                                   */
/*                                      u E [ 0 , p/2 ]                                                                              */
/*                                                                                                                                   */
/*                                      v E [ -1 , +1 ]                                                                              */
/*                                                                                                                                   */
/*                  (ou 'p' designe 'pi') et :                                                                                       */
/*                                                                                                                                   */
/*                                      Z = u + i.v                                                                                  */
/*                                                                                                                                   */
/*                  (voir a ce propos 'v $xrs/CalabiYau.14$I permutation.de..u..et.de..v.'                                           */
/*                  pour la justification des bornes de 'u' et de 'v', en particulier).                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  [d'apres "A Construction for Computer Complex Curves" de Andrew J. Hanson                                        */
/*                  publie dans "Notices of the American Mathematical Society" du 11-12/1994]                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*        :Fin_listMN_VARIETE_DE_CALABI_YAU_4_DIMENSIONNELLE_11:                                                                     */
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  Cette variete est donc a 4 dimensions, et la                                                                     */
/*                  surface a 3 dimensions que l'on visualisera                                                                      */
/*                  sera definie par :                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u,v) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )                                      */
/*                                       x         xR1   1     xI1   1     xR2   2     xI2   2                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u,v) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )                                      */
/*                                       y         yR1   1     yI1   1     yR2   2     yI2   2                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u,v) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )                                      */
/*                                       z         zR1   1     zI1   1     zR2   2     zI2   2                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  soit, par defaut :                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u,v) =     R(Z )                         +     I(Z )                                      */
/*                                       x               1                                   2                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u,v) =                 I(Z )             +     I(Z )                                      */
/*                                       y                           1                       2                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      F (u,v) =                             R(Z ) +     I(Z )                                      */
/*                                       z                                       2           2                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  (ou 'R(...)' et 'I(...)' designent respectivement                                                                */
/*                  les parties Reelle et Imaginaire). Une possible                                                                  */
/*                  matrice 'A' sera :                                                                                               */
/*                                                                                                                                   */
/*                                      | 1 0 0 1 |                                                                                  */
/*                                      | 0 1 0 1 |                                                                                  */
/*                                      | 0 0 1 1 |                                                                                  */
/*                                                                                                                                   */
/*                  Le 20040331085528 ont ete introduites les procedures                                                             */
/*                  de projection 'v $ximd/operator.1$FON PROJECTION_PARALLELE_01_4D_3D_'.                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

__________pushdef(%%D%%z1%%F%%,z1_1)
__________pushdef(%%D%%z2%%F%%,z2_1)
__________pushdef(%%D%%coordonnee_u%%F%%,coordonnee_u_1)
__________pushdef(%%D%%coordonnee_v%%F%%,coordonnee_v_1)
__________pushdef(%%D%%initialiser_les_coordonnees_u_v%%F%%,initialiser_les_coordonnees_u_v_1)
                                        /* En vue d'interpolation de surfaces pour eviter des doubles definitions (introduit le      */
                                        /* 20040501115047).                                                                          */

DEFV(Local,DEFV(complexe,z1));
DEFV(Local,DEFV(complexe,z2));
                                        /* Definition des coordonnees {z1,z2} de la variete 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}.                         */

#define   GENERATION_DU_CALABI_YAU_1(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                                                                                                         \
                         DEFV(Float,INIT(exposant_n1,parametre_n1));                                                                    \
                         DEFV(Float,INIT(demi_exposant_n1,MOIT(parametre_n1)));                                                         \
                                        /* Exposant (n1) et demi-exposant (n1/2).                                                    */ \
                         DEFV(Float,INIT(exposant_n2,parametre_n2));                                                                    \
                         DEFV(Float,INIT(demi_exposant_n2,MOIT(parametre_n2)));                                                         \
                                        /* Exposant (n2) et demi-exposant (n2/2).                                                    */ \
                         DEFV(complexe,zuv);                                                                                            \
                         DEFV(complexe,cosinus_zuv);                                                                                    \
                         DEFV(complexe,sinus_zuv);                                                                                      \
                         DEFV(complexe,puissance_de_cosinus_zuv);                                                                       \
                         DEFV(complexe,puissance_de_sinus_zuv);                                                                         \
                         DEFV(complexe,racine_de_l_unite_1);                                                                            \
                         DEFV(complexe,racine_de_l_unite_2);                                                                            \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                         EGAL(initialiser_les_coordonnees_u_v,FAUX);                                                                    \
                         EGAL(coordonnee_u,u);                                                                                          \
                         EGAL(coordonnee_v,v);                                                                                          \
                                        /* Initialisation et optimisation du processus...                                            */ \
                                                                                                                                        \
                         Cinitialisation(zuv,u,v);                                                                                      \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  z   = u + i.v                                                            */ \
                                        /*                   uv                                                                      */ \
                                        /*                                                                                           */ \
                                        /* (voir a ce propos 'v $xrs/CalabiYau.14$I permutation.de..u..et.de..v.').                  */ \
                         Ccosinus(cosinus_zuv,zuv);                                                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  cos(z  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         Csinus(sinus_zuv,zuv);                                                                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  sin(z  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         Cpuissance(puissance_de_cosinus_zuv,cosinus_zuv,INVE(demi_exposant_n1));                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2                                                               */ \
                                        /*                          ----                                                             */ \
                                        /*                           n1                                                              */ \
                                        /*                  cos(z  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         Cpuissance(puissance_de_sinus_zuv,sinus_zuv,INVE(demi_exposant_n2));                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2                                                               */ \
                                        /*                          ----                                                             */ \
                                        /*                           n2                                                              */ \
                                        /*                  sin(z  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         Cdefinition_trigonometrique(racine_de_l_unite_1                                                                \
                                                    ,C_MODULE_UNITAIRE                                                                  \
                                                    ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n1,parametre_k1)                              \
                                                     );                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1                                                                 */ \
                                        /*                   2ip.----                                                                */ \
                                        /*                        n1                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Cdefinition_trigonometrique(racine_de_l_unite_2                                                                \
                                                    ,C_MODULE_UNITAIRE                                                                  \
                                                    ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n2,parametre_k2)                              \
                                                     );                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2                                                                 */ \
                                        /*                   2ip.----                                                                */ \
                                        /*                        n2                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Cproduit(z1,racine_de_l_unite_1,puissance_de_cosinus_zuv);                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1           2                                                     */ \
                                        /*                   2ip.----         ----                                                   */ \
                                        /*                        n1           n1                                                    */ \
                                        /*                  e        .cos(z  )                                                       */ \
                                        /*                                 uv                                                        */ \
                                        /*                                                                                           */ \
                         Cproduit(z2,racine_de_l_unite_2,puissance_de_sinus_zuv);                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2           2                                                     */ \
                                        /*                   2ip.----         ----                                                   */ \
                                        /*                        n2           n2                                                    */ \
                                        /*                  e        .sin(z  )                                                       */ \
                                        /*                                 uv                                                        */ \
                                        /*                                                                                           */ \
                         Cproduit(z1,parametre_zA,z1);                                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k1           2                                                   */ \
                                        /*                     2ip.----         ----                                                 */ \
                                        /*                          n1           n1                                                  */ \
                                        /*                  A.e        .cos(z  )                                                     */ \
                                        /*                                   uv                                                      */ \
                                        /*                                                                                           */ \
                         Cproduit(z2,parametre_zB,z2);                                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k2           2                                                   */ \
                                        /*                     2ip.----         ----                                                 */ \
                                        /*                          n2           n2                                                  */ \
                                        /*                  B.e        .sin(z  )                                                     */ \
                                        /*                                   uv                                                      */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         Test(IL_FAUT(valider_la_qualite_du_calcul_de_z1_et_de_z2))                                                     \
                              Bblock                                                                                                    \
                              DEFV(complexe,z1_puissance_n1);                                                                           \
                              DEFV(complexe,z2_puissance_n2);                                                                           \
                              DEFV(complexe,validation);                                                                                \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                              Cpuissance(z1_puissance_n1,z1,parametre_n1);                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1                                                                      */ \
                                        /*                  z                                                                        */ \
                                        /*                   1                                                                       */ \
                                        /*                                                                                           */ \
                              Cpuissance(z2_puissance_n2,z2,parametre_n2);                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n2                                                                      */ \
                                        /*                  z                                                                        */ \
                                        /*                   2                                                                       */ \
                                        /*                                                                                           */ \
                              Csomme(validation,z1_puissance_n1,z2_puissance_n2);                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1    n2                                                                */ \
                                        /*                  z   + z                                                                  */ \
                                        /*                   1     2                                                                 */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                              Test(CTestIFNE_a_peu_pres_absolu(validation,C_____nombre_complexe_p1__0                                   \
                                                              ,epsilon_de_validation_du_calcul_de_z1_et_de_z2                           \
                                                               )                                                                        \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("le calcul de 'z1' et de 'z2' est incorrect");                                          \
                                   PRINT_DANS_C("zuv",zuv);                                                                             \
                                        /* Introduit le 20230323092518...                                                            */ \
                                   PRINT_DANS_C("z1",z1);                                                                               \
                                   PRINT_DANS_C("z2",z2);                                                                               \
                                   CAL1(Prer4("(%+.^^^,%+.^^^) est obtenu au lieu de (%+.^^^,%+.^^^)\n"                                 \
                                             ,Reelle(validation),Imaginaire(validation)                                                 \
                                             ,Reelle(C_____nombre_complexe_p1__0),Imaginaire(C_____nombre_complexe_p1__0)               \
                                              )                                                                                         \
                                        );                                                                                              \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Calcul sur la variete complexe a 2 dimensions.                                            */

BFonctionV

DEFV(Local,DEFV(FonctionV,FCalabiYau_1(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     GENERATION_DU_CALABI_YAU_1(u,v);
                                        /* Calcul, si besoin est, de {z1,z2}.                                                        */

     RETU_VIDE;
                                        /* Introduit le 20071130134757...                                                            */
     Eblock

EFonctionV

#undef    GENERATION_DU_CALABI_YAU_1

#define   EDITION_EVENTUELLE_DES_PROJECTIONS(nom_de_la_coordonnee,valeur_de_la_coordonnee)                                              \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(editer_les_projections))                                                                               \
                         Bblock                                                                                                         \
                         CAL3(Prme0("{"));                                                                                              \
                                                                                                                                        \
                         CAL3(Prme2("{%+.^^^,%+.^^^}"                                                                                   \
                                   ,Reelle(z1)                                                                                          \
                                   ,Imaginaire(z1)                                                                                      \
                                    )                                                                                                   \
                              );                                                                                                        \
                                                                                                                                        \
                         CAL3(Prme0(","));                                                                                              \
                                                                                                                                        \
                         CAL3(Prme2("{%+.^^^,%+.^^^}"                                                                                   \
                                   ,Reelle(z2)                                                                                          \
                                   ,Imaginaire(z2)                                                                                      \
                                    )                                                                                                   \
                              );                                                                                                        \
                                                                                                                                        \
                         CAL3(Prme0("}     "));                                                                                         \
                                                                                                                                        \
                         CAL3(Prme1("     R=%+.^^^"                                                                                     \
                                   ,COEFFICIENT_DE_PROJECTION_PERSPECTIVE_01_4D_3D_R(Reelle(z1)                                         \
                                                                                    ,Imaginaire(z1)                                     \
                                                                                    ,Reelle(z2)                                         \
                                                                                    ,Imaginaire(z2)                                     \
                                                                                     )                                                  \
                                    )                                                                                                   \
                              );                                                                                                        \
                                                                                                                                        \
                         CAL3(Prme0("     --> "));                                                                                      \
                                                                                                                                        \
                         CAL3(Prme2("     %s=%+.^^^\n"                                                                                  \
                                   ,nom_de_la_coordonnee                                                                                \
                                   ,valeur_de_la_coordonnee                                                                             \
                                    )                                                                                                   \
                              );                                                                                                        \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Procedure introduite le 20230317100815...                                                 */

BFonctionF

DEFV(Local,DEFV(FonctionF,FFx_CalabiYau_1(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(coordonnee_projetee_X,FLOT__UNDEF));
                                        /* Coordonnee 'X' projetee introduite explicitement le 20230317095348...                     */
     /*..............................................................................................................................*/
     CALS(FCalabiYau_1(u,v));
                                        /* Calcul, si besoin est, de {z1,z2}.                                                        */

     EGAL(coordonnee_projetee_X
         ,COND(IL_FAUT(faire_une_projection_parallele)
              ,PROJECTION_PARALLELE_01_4D_3D_X(Reelle(z1)
                                              ,Imaginaire(z1)
                                              ,Reelle(z2)
                                              ,Imaginaire(z2)
                                               )
              ,PROJECTION_PERSPECTIVE_01_4D_3D_X(Reelle(z1)
                                                ,Imaginaire(z1)
                                                ,Reelle(z2)
                                                ,Imaginaire(z2)
                                                 )
               )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  F (u,v) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )                  */
                                        /*                   x         xR1   1     xI1   1     xR2   2     xI2   2                   */
                                        /*                                                                                           */

     EDITION_EVENTUELLE_DES_PROJECTIONS("X",coordonnee_projetee_X);
                                        /* Introduit le 20230317100815...                                                            */

     RETU(coordonnee_projetee_X);
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFy_CalabiYau_1(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(coordonnee_projetee_Y,FLOT__UNDEF));
                                        /* Coordonnee 'Y' projetee introduite explicitement le 20230317095348...                     */
     /*..............................................................................................................................*/
     CALS(FCalabiYau_1(u,v));
                                        /* Calcul, si besoin est, de {z1,z2}.                                                        */

     EGAL(coordonnee_projetee_Y
         ,COND(IL_FAUT(faire_une_projection_parallele)
              ,PROJECTION_PARALLELE_01_4D_3D_Y(Reelle(z1)
                                              ,Imaginaire(z1)
                                              ,Reelle(z2)
                                              ,Imaginaire(z2)
                                               )
              ,PROJECTION_PERSPECTIVE_01_4D_3D_Y(Reelle(z1)
                                                ,Imaginaire(z1)
                                                ,Reelle(z2)
                                                ,Imaginaire(z2)
                                                 )
               )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  F (u,v) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )                  */
                                        /*                   y         yR1   1     yI1   1     yR2   2     yI2   2                   */
                                        /*                                                                                           */

     EDITION_EVENTUELLE_DES_PROJECTIONS("Y",coordonnee_projetee_Y);
                                        /* Introduit le 20230317100815...                                                            */

     RETU(coordonnee_projetee_Y);
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFz_CalabiYau_1(u,v)))
DEFV(Argument,DEFV(Float,u));
DEFV(Argument,DEFV(Float,v));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(coordonnee_projetee_Z,FLOT__UNDEF));
                                        /* Coordonnee 'Z' projetee introduite explicitement le 20230317095348...                     */
     /*..............................................................................................................................*/
     CALS(FCalabiYau_1(u,v));
                                        /* Calcul, si besoin est, de {z1,z2}.                                                        */

     EGAL(coordonnee_projetee_Z
         ,COND(IL_FAUT(faire_une_projection_parallele)
              ,PROJECTION_PARALLELE_01_4D_3D_Z(Reelle(z1)
                                              ,Imaginaire(z1)
                                              ,Reelle(z2)
                                              ,Imaginaire(z2)
                                               )
              ,PROJECTION_PERSPECTIVE_01_4D_3D_Z(Reelle(z1)
                                                ,Imaginaire(z1)
                                                ,Reelle(z2)
                                                ,Imaginaire(z2)
                                                 )
               )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  F (u,v) = A   R(Z ) + A   I(Z ) + A   R(Z ) + A   I(Z )                  */
                                        /*                   z         zR1   1     zI1   1     zR2   2     zI2   2                   */
                                        /*                                                                                           */

     EDITION_EVENTUELLE_DES_PROJECTIONS("Z",coordonnee_projetee_Z);
                                        /* Introduit le 20230317100815...                                                            */

     RETU(coordonnee_projetee_Z);
     Eblock

EFonctionF

#undef    EDITION_EVENTUELLE_DES_PROJECTIONS

#define   Fx_CalabiYau_1(u,v)                                                                                                           \
                    FFx_CalabiYau_1(u,v)                                                                                                \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            x                                                              */
#define   Fy_CalabiYau_1(u,v)                                                                                                           \
                    FFy_CalabiYau_1(u,v)                                                                                                \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            y                                                              */
#define   Fz_CalabiYau_1(u,v)                                                                                                           \
                    FFz_CalabiYau_1(u,v)                                                                                                \
                                        /* Definition de la fonction F (u,v).                                                        */ \
                                        /*                            z                                                              */

__________popdef(%%D%%initialiser_les_coordonnees_u_v%%F%%)
__________popdef(%%D%%coordonnee_v%%F%%)
__________popdef(%%D%%coordonnee_u%%F%%)
__________popdef(%%D%%z2%%F%%)
__________popdef(%%D%%z1%%F%%)
                                        /* En vue d'interpolation de surfaces pour eviter des doubles definitions (introduit le      */
                                        /* 20040501121852).                                                                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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_1                                                                                                              \
                    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' (introduit le 20050203092240)...                                  */



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