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

Previous Up Next

2.5  Créer et tracer des objets

Conceptuellement, ePiX construit un « monde » virtuel en 3 dimensions puis le photographie sur un « écran» à 2 dimensions. L'écran contient la boîte-cadre qui est mise à l'échelle affinement aux dimensions de l'environnement picture de LATEX. Par défaut, l'écran est le plan (x,y) et le monde est représenté en regardant vers le bas le long de l'axe z.

Structures de données géométriques

L'objet le plus simple dans ce monde est le point, représenté par un triplet de nombres réels (décimal en double précision). La fonction P(x1,x2,x3) crée le point de coordonnées (x1,x2,x3). Si l'on ne donne que deux arguments, on a x3=0 par défaut. Souvent les points sont nommés afin que l'on puisse les utiliser plusieurs fois dans la figure. Les commandes (essentiellement équivalentes)

  P pt(x_min, 2*x_min, 4);
  P pt = P(x_min, 2*x_min, 4);

créent un point nommé pt et l'initialise à (xmin,2xmin,4) en utilisant la valeur actuelle de xmin. Cette valeur est utilisée à chaque fois que pt apparait ensuite. En général, on peut utiliser une expression contenant des variables pour allouer une valeur à une structure de donnée (pas uniquement à un point). Toutefois, on ne peut utiliser une variable tant que l'on ne lui a pas alloué une valeur. Par exemple, les commandes précédentes ne fonctionneront pas avant que la boîte-cadre soit déterminée puisque la valeur de xmin est inconnue avant. De plus, changer la valeur d'une variable ne met pas à jour les valeurs des structures de données qui en dépendent.

On peut aussi définir les points en donnant leurs coordonnées polaires, cylindriques ou sphériques ; tous les arguments sont numériques.

  P pt=polar(r, t);  // (r*Cos(t), r*Sin(t))
  P pt=cyl(r, t, z); // (r*Cos(t), r*Sin(t), z)
  P pt=sph(r, t, phi);

Les arguments de sph sont le rayon (distance à l'origine), la longitude (mesurée depuis l'axe (Ox)) et la latitude (mesurée depuis l'équateur). Par défaut, dans ePiX, les angles sont mesurés en radians. Deux autres « modes angulaires » sont disponibles : degrees (degrés) et revolutions (tours). Le mode angulaire est déterminé à l'aide d'une commande portant le même nom, p. ex. degrees() et toutes les opérations trigonométriques sont affectées par ce choix.

ePiX fournit des opérations algébriques sur les triplets, y compris l'addition, la multiplication par un réel, le produit scalaire (dot product) et le produit vectoriel (cross product) ainsi que quelques autres. Ces opérations sont utilisées pour exprimer les relations entre triplets comme dans

  P p1(2,1), p2(-3,1);
  P q1 = p1-p2, q2 = 2*p1-3*p2, q3=q1*q2;

Les points q1=p1p2, q2=2p1−3p2 et q3=q1× q2 pourraient recevoir des valeurs codées en dur. Toutefois, définir leurs valeurs symboliquement imprègne la figure d'une structure logique, rendant plus facile la lecture du fichier, sa modification, sa maintenance. La base canonique est disponible : E_1=P(1,0,0), etc.

En pratique, les triplets de nombres sont utilisés pour représenter aussi bien des emplacements (points) que des déplacements (vecteurs). Mathématiquement, les deux concepts sont disctincts, par exemple, en géométrie la somme de deux déplacements a un sens (on obtient un déplacement), la somme d'un déplacement à un emplacement a un sens (on obtient un emplacement) mais on ne peut donner un sens à la somme de deux emplacements. Les opérations algébriques agissent sur les vecteurs et non les points. ePiX n'applique pas la distinction entre points et vecteurs mais il le fera dans la Prochaine Génération2.

ePiX implémente des structures de données qui représentent les segments, les cercles, les plans et les sphères. Ces structures peuvent être soumises à translation, homothétie et intersection. Un fragment de code illustre les techniques élémentaires :

  circle C1(P(0,1), P(0,-1), P(0.5,0)); // cercle par 3 points
  C1 += P(0.1,0);           // translation du centre
  C1 *= 2;                  // double le rayon

  sphere S1(P(0,0,0), 1.5); // sphere de rayon 1.5 à l'origine
  plane P1(P(0,0,0), E_3);  // plan (x,y)
  circle C2 = S1*P1;        // cercle d'intersection

L'utilisation de ces structures de données est détaillée dans le chapitre 3.

Dessiner

Les commandes de la section précédente créent des structures de données mais n'écrivent aucune sortie. Chaque type (autre que P) est tracé à l'aide d'une syntaxe « orientée objet». Par exemple, si C1 est un cercle, la commande C1.draw() le dessine. Ce que produit le dessin d'un plane (plan) ou d'une sphere (sphère) est décrit au chapitre 3. ePiX fournit également des commandes de haut niveau pour tracer des polygones, des courbes, des objets composites tels que des flèches et les axes de coordonnées. Les commandes de dessin doivent apparaitre dans le corps du fichier, après begin().

  line(P p1, P p2);
  triangle(P p1, P p2, P p3);   // précise les sommets 
  rect(P p1, P p2);  // coordonnées de coins opposés du rectangle
  quad(P p1, P p2, P p3, P p4); // quadrilatère quelconque

  spline(P p1, P p2, P p3); //  splines quadratique/cubique définies
  spline(P p1, P p2, P p3, P p4); // par les points de contrôle

  arc(P center, radius, t_min, t_max);
  ellipse(P ctr, P v1, P v2, [t_min], [t_max], [int n]);

  polyline(int n, P p1, ..., P pn);
  polygon (int n, P p1, ..., P pn);

Les arguments de rect doivent être dans un plan parallèle à un plan de coordonnées ; les côtés du rectangle sont parallèles aux axes de coordonnées.

Un arc a le centre et le rayon comme donnés, il est situé dans un plan parallèle au plan (x,y). Les angles sont mesurés depuis la direction E1 dans l'unité d'angle courante.

Une commande ellipse dessine un arc elliptique avec le centre et les «axes» donnés ; plus précisément, la courbe dessinée est paramètrée par

t↦ ctr + (cost)v1 + (sint)v2,     tmin⩽ t⩽ tmax.

(Remarquez que ctr est un emplacement tandis que v1 et v2 sont des déplacements.) De même qu'avec arc les angles sont mesurés dans l'unité d'angles courante. Si les paramètres fixant les valeurs extrèmes sont omis c'est toute l'ellipse qui est tracée. Le dernier argument (optionnel) précise combien il faut utiliser de point pour tracer l'arc. On peut l'omettre sans danger dans la plupart des situations.


2
Note du TdS : Ici l'auteur écrit The Next Generation et fait ainsi allusion à la seconde série télévisée de Star Treck.

Previous Up Next