Beaucoup de formes prédéfinies sont fournies par Processing. En voici les principales :
Pour commencer à dessiner, nous allons partir d'un point. Sur l'écran, un point est l'équivalent d'un pixel localisé dans la fenêtre de visualisation par deux axes de coordonnées, x et y correspondant respectivement à la largeur (axe horizontal) et à la hauteur (axe vertical) de l'espace de dessin. En suivant ce principe, la création d'un point dans Processing s'effectue à l'aide de l'instruction point(x,y)
. Dans cet exemple, le point est très petit. Il est placé au centre de la fenêtre de visualisation.
point(50, 50);
Notez que le cadre de la fenêtre de visualisation (l'espace de dessin) a une dimension de 100x100, ce qui explique que le point soit situé en plein milieu. Si on le dessinait en dehors du cadre (hors champ), avec par exemple l'instruction size(150,150)
, on ne le verrait pas.
Par définition, une ligne (AB) est constituée par une infinité de points entre un point de départ A et un point d'arrivée B. Pour la construire, nous allons nous intéresser uniquement aux coordonnées x et y de A et de B. Ainsi, si par exemple dans la fenêtre par défaut, le point A se situe dans la région en bas à gauche de votre fenêtre, et que le point B se situe en haut à droite, les instructions suivantes, peuvent dessiner cette ligne sous la forme line(xA,yA,xB,yB)
:
line(15, 90, 95, 10);
Un rectangle se dessine par quatre valeurs en faisant l'appel de rect(x,y,largeur,hauteur)
. La première paire de valeurs x
et y
, par défaut (mode CORNER)
correspond au coin supérieur gauche du rectangle, à l'instar du point. En revanche la seconde paire de valeurs ne va pas se référer à la position du coin inférieur droit, mais à la largeur (sur l’axe des x, horizontal) et à la hauteur (sur l’axe des y, vertical) de ce rectangle.
Exemple :
rect(10, 10, 80, 80);
Comme les deux dernières valeurs (largeur et hauteur) sont identiques, on obtient un carré. Amusez-vous à changer les valeurs et observez-en les résultats.
Pour que la première paire de valeurs corresponde au centre (le croisement des deux diagonales aux coordonnées 50, 50) du rectangle, il faut utiliser le mode CENTER
comme suit :
rectMode(CENTER); rect(50, 50, 80, 40);
Cela donne le résultat identique à l'exemple précédent.
Comme pour le rectangle, l'ellipse se construit sous les modes CENTER
(par défaut), et CORNER
. Ainsi l'instruction suivante produit un cercle dont les coordonnées du centre sont les deux premières valeurs entre parenthèses. La troisième valeur correspond à la grandeur du diamètre sur l'axe horizontal (x) et la quatrième à la grandeur du diamètre sur l'axe vertical : notez que si les 3e et 4e valeurs sont identiques, on dessine un cercle et dans le cas contraire, une ellipse quelconque :
ellipse(50, 50, 80, 80);
Amusez-vous à faire varier les 3e et 4e valeurs et observez-en les résultats.
Le triangle est un plan constitué de trois points. L'invocation de triangle(x1,y1,x2,y2,x3,y3)
définit les trois points de ce triangle :
triangle(10, 90, 50, 10, 90, 90);
Un arc ou section de cercle, peut se dessiner avec l'appel de arc(x, y, largeur, hauteur, début, fin)
, où la paire x, y définit le centre du cercle, la seconde paire ses dimensions et la troisième paire, le début et la fin de l'angle d'arc en radians :
arc(50, 50, 90, 90, 0, PI);
Le quadrilatère se construit en spécifiant quatre paires de coordonnées x et y sous la forme quad(x1,y1,x2,y2,x3,y3,x4,y4)
dans le sens horaire :
quad(10, 10, 30, 15, 90, 80, 20, 80);
Une courbe se dessine à l'aide de curve(x1, y1, x2, y2, x3, y3, x4, y4)
, où x1 et y1 définissent le premier point de contrôle, x4 et y4 le second point de contrôle , x2 et y2 le point de départ de la courbe et x3, y3 le point d'arrivée de la courbe :
curve(0, 300, 10, 60, 90, 60, 200, 100);
La courbe de type Bézier se construit à l'aide de bezier(x1,y1,x2,y2,x3,y3,x4,y4)
bezier(10, 10, 70, 30, 30, 70, 90, 90);
L'appel de curveVertex()
dessine plusieurs paires de coordonnées x et y, entre deux points de contrôle, sous la forme curveVertex(point de contrôle initial,xN,yN,xN,yN,xN,yN, point de contrôle final)
ce qui permet de construire des courbes lissées :
beginShape(); curveVertex(0, 100); curveVertex(10, 90); curveVertex(25, 70); curveVertex(50, 10); curveVertex(75, 70); curveVertex(90, 90); curveVertex(100, 100); endShape();
Plusieurs formes libres peuvent être dessinés par une succession de points en utilisant la suite d'instructions beginShape(),vertex(x,y),...,endShape()
. Chaque point se construit par ses coordonnées x et y. La fonction CLOSE
dans endShape(CLOSE)
indique que la figure sera fermée, c'est-à-dire que le dernier point sera relié au premier, comme dans l'exemple ci-dessous de dessin d'un hexagone :
beginShape(); vertex(50, 10); vertex(85, 30); vertex(85, 70); vertex(50, 90); vertex(15, 70); vertex(15, 30); endShape(CLOSE);
Vous avez remarqué que jusqu'à présent, toutes les figures données en exemple comportent un contour, ainsi qu'une surface de remplissage. Si vous voulez rendre invisible le contour, utilisez noStroke()
en faisant bien attention de le placer avant la forme à dessiner :
noStroke(); quad(10, 10, 30, 15, 90, 80, 20, 80);
De la même manière, il est possible de dessiner des formes sans surface de remplissage avec l'instruction noFill()
:
noFill(); quad(10, 10, 30, 15, 90, 80, 20, 80);
Par défaut, l'arrière-fond de la fenêtre de visualisation (l'espace de dessin) est gris neutre, les contours des figures sont noirs, et la surface de remplissage est blanche. Vous apprendrez au prochain chapitre comment modifier les couleurs à votre convenance.
Les formes prédéfinies disponibles en 3 dimensions (primitives 3D) peuvent être réalisées de manière simple en appelant size(x, y, P3D)
au début de notre sketch puis en employant en fonction de vos besoins les instructions sphere(taille)
et box(longueur, largeur, profondeur)
. Il est également possible de produire des effets d'éclairage sur nos formes tridimensionnelles à l'aide de lights()
.
size(100, 100, P3D); noStroke(); lights(); // éclairer l'objet 3D translate(50, 50, 0); // voir Chapitre "Transformations" sphere(28);
size(100, 100, P3D); noStroke(); lights(); translate(50, 50, 0); rotateY(0.5); box(40);
Il y a une erreur de communication avec le serveur Booktype. Nous ne savons pas actuellement où est le problème.
Vous devriez rafraîchir la page.