Mode d'emploi et manuel de référence

Previous Up Next

3.8  Géométrie non-euclidienne

On spécifie des segments de droites hyperboliques par leurs extrémités dans les modèles du demi-plan supérieur ou du disque de Poincaré. Dans chaque cas rien n'est produit si l'un des points est situé en dehors du modèle.

  hyperbolic_line(p, q);
  disk_line(p, q);

Pour des raisons de compatibilité avec l'espace hyperbolique de dimension 2, le modèle du demi-plan est définie comme {(x1,x2,x3)∣ x2>0}.

Un repère détermine les coordonnées géographiques sur une sphere (sphère) : le premier élément est dirigé vers la longitude 0 sur l'équateur, le troisième vers le pole nord. Une courbe de latitude dépend d'une sphere, un frame (repère), d'une latitude numérique et d'un intervalle de longitudes. Une courbe de longitude est décrite d'une manière similaire.

  latitude(lat, long_min,long_max, sphere S, frame coords);
  longitude(lngtd, lat_min, lat_max, sphere S, frame coords);

Par défaut, coords est le repère canonique (frame) et S est la sphere unitaire. Ces commandes ne trace que la partie de la courbe visible depuis le point de vue (viewpoint) courant. La fonction back_latitude trace la partie invisible de la courbe de latitude.

Les arcs de sphère et les triangles sphériques sont décrits par leurs extrémité. Seule la direction du vecteur, joignant le centre de la sphère à l'extrémité de l'arc ou du triangle, est significative, si la sphère subit une homothétie ou un déplacement, le même appel de fonction tracera l'objet correspondant sur la nouvelle sphère.

Les fonctions qui suivent tracent les parties visibles (front) des arcs de grands cercles :

  front_arc(p1, p2, S);  // petit arc sur S de p1 à p2
  front_arc2(p1, p2, S); // arc de p1 à -p1 passant par p2
  front_line(p1, p2, S); // grand cercle passant par p1 et p2

Par souci de garder un niveau élevé d'abstraction, on fourni triangles et polyèdres réguliers (platoniques). Le fichier d'exemple extras/polyhedra.xp en illustre l'utilisation.

  front_triangle(p1, p2, p3, S); // triangle sphérique
  front_tetra(S, coords);  // tétraèdre régulier
  front_cube(S, coords);   // hexaèdre
  front_octa(S, coords);   // octaèdre
  front_dodeca(S, coords); // dodecaèdre
  front_icosa(S, coords);  // icosaèdre

Chaque fonction a une version back (arrière) qui trace la partie cachée. Le tétraèdre, le cube et l'octaèdre sont – avant mise à l'échelle – inscrits dans le cube d'arête 2 centré à l'origine et dont les arêtes sont parallèles aux vecteurs du repère (frame). Le point (1,1,1) est un sommet du tétraèdre.

Avant mise à l'échelle, les sommets de l'icosaèdre sont situés sur le rectangle doré dont les sommets sont (±γ,0,±1) et ses images par permutation circulaire des coordonnées. Le dodécaèdre est le dual de l'icosaèdre.

Les courbes paramétrées sur la sphère unité peuvent être définie soit par projection radiale d'une courbe gauche soit par projection stéréographique d'une courbe plane :

    plot_R(phi, t_min, t_max, n);    // radial
    plot_N(f1, f2, t_min, t_max, n); // depuis le pole nord
    plot_S(f1, f2, t_min, t_max, n); // depuis le pole sud

Une tentative d'effectuer une projection radiale sur une courbe passant par l'origine engendrera une erreur de division par zéro. La projection stéréographique applique le plan équatorial z=0 à la sphère unité par projection depuis le pole correspondant : N = (0,0,1), S = (0,0,−1).

Chaque commande de graphe sphérique accepte un préfixe front ou back qui imprime seulement la partie visible ou invisible (respectivement) depuis le point de vue (viewpoint) courant.

Compte tenu de la façon dont ePiX produit les couches, il vaut mieux en général placer les parties cachées de la sortie avant les parties visibles en fixant des épaisseurs ou des styles de lignes suggérant des lignes cachées.


Previous Up Next