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

Previous Up Next

2.10  Éléments de dessin de haut niveau

ePiX définit des capacités de dessin de haut niveau : flèches, axes de coordonnées et étiquettes d'axes, graphiques en coordonnées polaires, représentation graphique de données lues dans des fichiers, champs de vecteurs, résolution d'équations différentielles et géométrie non-euclidienne.

Flèches

Une flèche (arrow) droite est déterminée par sa queue et sa pointe. Des flèches splines quadratiques ou cubiques sont décrites par leurs points de controle. Un argument facultatif final précise l'échelle de la tête de flèche.

  arrow(P tail, P tip, [double scale]);
  arrow(P p1, P p2, P p3, [double scale]);
  arrow(P p1, P p2, P p3, P p4, [double scale]);
  dart (P p1, P p2);  // same as arrow(p1, p2, 0.5);
  aarrow(P p1, P p2); // double-headed arrow <--->

En tant que dessin, une flèche consiste en un segment de courbe (le « bois») surmonté d'une tête de flèche. Vue de profil, la largeur d'une tête de flèche est 3pt et sa hauteur est 5,5 fois sa largeur. La hauteur effectivement imprimée dépend de l'orientation de la flèche par rapport à la caméra. Par défaut, la tête est un triangle vide. Le remplissage, la forme et la taille peuvent être ajustées avec les déclarations :

  arrow_fill(dens); // densité de gris, entre 0 et 1
  arrow_width(w);   // largeur en pt, 3 par défault
  arrow_ratio(r);   // rapport hauteur/largeur, 5,5 par défault
  arrow_camber(c);  
// renfoncement de la base comme fraction de la hauteur, 0 par défaut

         

Les têtes de flèche vides sont tracées dans la couleur de chemin courante ; les têtes remplies sont dessinées en noir. On peut utiliser des commandes PSTricks pour colorié les flèches.

Axes de coordonnées et étiquettes

Un axe de coordonnées est un segment de droite donné par ses extrémités et un nombre précisé de coches régulièrement espacées :

  h_axis(p1, p2, n);    // n intervalles (n+1 coches)
  v_axis(p1, p2, n);

Le style des coches est adapté au type d'axe. Si les extrémités ne sont pas précisées elles prennent les valeurs par défaut p1=(xmin,0) et p2=(xmax,0) pour un axe horizontal ou p1=(0,ymin) et p2=(0,ymax) pour un axe vertical. Si la boite-cadre a un côté entier alors l'omission du nombre de coches fait qu'une coche est dessinée par unité.

Pour un axe horizontal on crée les étiquettes avec

  h_axis_labels(p1, p2, n, P(u,v));
  h_axis_labels(P p1, P p2, int n, P offset, [alignment]);

Cela place n+1 étiquettes régulièrement espacées sur le segment d'extrémité p1 et p2. Les étiquettes sont crées automatiquement pour correspondre à leur emplacement horizontal. De même que pour des étiquettes ordinaires, le déplacement (offset()) est en pt et l'option facultative d'alignement LATEXoïde place les étiquettes en utilisant leurs coins plutôt que leur point de référence. Les étiquettes d'un axe vertical sont crées de manière évidente.

De même que pour les axes de coordonnées, le point initial et final peuvent être omis d'une commande axis_label avec les mêmes valeurs par défaut. Toutefois le déplacement (offset) et le nombre d'étiquettes doivent toujours être spécifiés.

Quadrillage

Un quadrillage cartésien emplit un rectangle de coordonnées et a un nombre déterminé de lignes dans chaque direction. Un quadrillage polaire a un rayon, un nombre d'anneaux et un nombre de secteurs angulaires déterminés.

  grid(n1, n2);         // remplit la boite-cadrex
  grid(p1, p2, n1, n2); // remplit la boite de coins p1, p2
  grid(p1, p2, mesh(n1, n2), mesh(m1,m2));
  polar_grid(r, n1, n2);

Chacune des commandes dessine un quadrillage n1 par n2. La troisième utilise un maillage (mesh) ce qui n'est utile que si l'objectif de la caméra ne projette pas les droites des objets de l'espace sur des droites du plan.

On peut créer un quadrillage semblable à celui du papier millimétré en superposant des quadrillages :

  pen(0.25);
  grid(10*x_size, 10*y_size);
  pen(0.5);
  grid(2*x_size, 2*y_size);
  pen(1);
  grid(x_size, y_size);
    

L'extension contrib de S. D. Pedersen fournit un perfectionnement des graphiques cartésiens. Si cette extension est installée, la documentation de contrib sera dans $INSTALL/share/doc/epix.


Previous Up Next