Metafun : Premiers pas

spécial Melle Michu étudiante en sciences humaines

Fleuron

Les coordonnées

Pour nous repérer sur notre feuille de papier, nous allons utiliser un systhème de coordonnées, représenté par un couple (x,y) dans un repère cartesien orthonormé. Oh la la, je sens Melle Michu qui vacille : des maths pour dessiner des petits mickey, très peu pour moi.

Allez Melle Michu, accroche-toi, tu vas voir c'est pas si terrible que ça. En plus je prèfère te prévenir tout de suite METAFUN étant un langage de programation, tu auras le droit à des notions telles que variable, boucle de test,. . . J'espère arriver à rendre cela le plus compréhensible possible, même pour toi Melle Michu qui a décroché en math en 6e.

Revenons à notre repère cartésien. Pour dessiner sur notre feuille de papier il nous faut une origine, ce sera donc le coin en bas à gauche de notre feuille. Notre feuille, prenons par exemple une feuille A4 en mode portrait, à pour largeur 21 cm. On se déplace sur la largeur de droite à gauche. En mathématique on l'appelle l'abcisse et ses valeurs sont représentées par un x. Dans notre exemple x va de 0 à 21 si on s'expime en cm de 0 à 210 en mm,. . .

La hauteur de notre feuille vaut 29,7cm. On s'y déplace de bas en haut. En mathématique on l'appelle l'ordonnée et ses valeurs sont représentées par un y. Dans notre exemple y va de 0 à 29.7 si on s'expime en cm de 0 à 297 en mm,. . .

Attention comme dans la pluspart des languages informatiques on écrit les chiffres à l'anglo-saxone, donc les décimales sont notées avec un point et non une virgule comme en france.

Orthonormé signifie que l'angle formé par les abscisses et les ordonnées est un angle droit et qu'elles ont le même système de graduation. Donc notre feuille de papier est un repère cartesien orthonormé. N'importe quel point que tu vas dessiner sur ta feuille peut être représente par un couple (x,y). Par exemple l'angle en bas à gauche qui est l'origine à pour coordonnées le couple (0,0), le coin en bas à droite (21,0), l'angle en haut à droite (21,29.7), le coin en haut à gauche (0,29.7) et le centre de la feuille (10.5,14.85).

Un petit dessin pour clarifier tout cela :

Par exemple voici un point rouge à 2 en x et 1 en y (2,1), un point bleu à (1.3,2.75).

Les unités

L'unité par défaut dans METAFUN est le point postscript, une unité typographique, notée bp qui vaut 0.352 mm. Il est appelé gros point, par opposition au point typograhique (pt). Leurs définitions sont les suivantes :

Tu peux utiliser d'autres unités comme le centimètre, le millimètre, les pouces (inches, en anglais valant 2,54 cm et dont l'unité est in) le point d'impression (pt) et le pica (1pc = 1/6in), mais dans ce cas il faut préciser l'unité :

(2cm,1cm) ou (0,3mm) . . .

Pour récapituler :

Si tu ne précises pas l'unité METAFUN travaille en point postscript. Les unités sont un raccourci pour une multiplication. Par exemple 3mm équivaux à 3x0.352 soit 1.056 point postcript. Pour le zéro tu n'est pas obligé de préciser car 0 x 0.352 = 0.

Comme 3mm est un raccourci pour une multiplication tu ne dois pas mettre de blanc entre le chiffre et les unités (3 mm).

Les longueurs que peut gérer METAFUN vont de 1/65536bp soit environ 5,38nm (nanométres) jusqu'à 4096bp soit 1,4m. À titre de comparaison la longueur d'onde de la lumière visble est comprise entre de 380nm et 780nm et une feuille de papier standart (A4) fait 0.21m * 0.297m. Tu devrais pouvoir dessiner tout ce que tu veux.

En bon enfant de la révolution de 1789, nous allons travailler par la suite avec des centimètres ou des millimètres. On utilisera peut-être le cadratin (em) qui est une unité de mesure relative et qui dépend de la taille de la fonte utilisée. Si tu utilise une fonte de 12pt (fonte par défaut de ConTeXt) le cadratin vaut 12pt, pour une fonte de 8pt 1 cadratin vaut 8pt,. . . Le em est le nom anglais pour cette mesure qui vient du fait que le M majuscule à la taille de la fonte utilisée. Cette mesure est très pratique pour placer du texte par rapport à un autre texte, car si tu change de fonte ton texte est toujours bien placé.

Premier dessin

draw est la commande qui permet de dessiner. -- (2 traits d'union) est la commande qui relie deux coordonées par un trait. Pour dessiner un trait du point d'origine au point (3cm,2cm) :

draw (0,0) -- (3cm,2cm);

Toutes les instructions METAFUN se terminent par un point virgule ; ne l'oublie pas.

Pour intégrer du code (un programme) METAFUN dans ConTeXt, il faut le placer dans l'environement \startMPpage . . . \stopMPpage. Voici le code complet :

\starttext \startMPpage draw (0,0) -- (3cm,2cm); \stopMPpage \stoptext

Que tu compiles avec ConTeXt.


J'ai ajouté la grille verte avec les coordonnées, qui n'apparaissent pas avec le code ci-dessus pour plus de compréhension.

On peut tracer plusieurs traits à la suite :

draw (0,0) -- (3cm,2cm) -- (3cm,4cm) -- (0,4cm);

On appelle ceci un path (chemin).

\starttext \startMPpage draw (0,0) -- (3cm,2cm) -- (3cm,4cm) -- (0,4cm); \stopMPpage \stoptext

Attach:meta-2.jpg Δ

La commande --cycle permet de fermer le path :

\starttext \startMPpage draw (0,0) -- (3cm,2cm) -- (3cm,4cm) -- (0,4cm)--cycle; \stopMPpage \stoptext

Attach:meta-2.jpg Δ

Attention la commande suivante ne ferme pas le path : draw (0,0) -- (3cm,2cm) -- (3cm,4cm) -- (0,4cm) -- (0,0); même si à première vue les deux dessins se ressemblent, on verra par la suite que ce n'est pas la même chose.

Les blanc ne sont pas nécessaire dans les commandes tu peux écrire : draw (0,0) -- (3cm,2cm) -- (3cm,4cm) -- (0,4cm) -- cycle; ou draw(0,0)--(3cm,2cm)--(3cm,4cm)--(0,4cm)--cycle;

Si tu emploies .. (2 points) à la place des -- tu obtiens un tracé courbe :

\starttext \startMPpage draw (0,0) .. (3cm,2cm) .. (3cm,4cm) .. (0,4cm)..cycle; \stopMPpage \stoptext

Attach:meta-3.jpg Δ

Tu peux mélanger les -- et les ..

\starttext \startMPpage draw (0,0) -- (3cm,2cm) .. (3cm,4cm) -- (0,4cm)..cycle; \stopMPpage \stoptext

Attach:meta-4.jpg Δ

Les variables

Il est important de comprendre la notion de variable car avec METAFUN on va en utiliser beaucoup. Une variable est un espace de stockage pour une donnée ou un résultat. C'est toi qui crée la variable et lui donne un nom qui est fixe. Par contre sa valeur peut varier à l'intérieur du programe METAFUN, d'ou son nom variable. Pour écrire le nom des tes variables tu peux utiliser tous les caractères suivant :

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz:<=>|#&@$/*\!?’‘ˆ{}[]1234567890

Par exemple |#&@$ est un nom autorisé, mais d'un intérét très limité, il vaut mieux donner un nom qui évoque ce pour quoi la variable a été crée.

Les types de variables

METAFUN reconnait 9 types différents de variables

Tu déclares une variable de la façon suivante :

Un nombre que l'on appelle age

numeric age;

Une couleur monrouge

color monrouge;

Une chaine de caractère prenom

string prenom;

Tu affectes une valeur à ta variable avec l'expression :=

Le signe = est réservé pour les égalités

Par exemple :

age:=24; monrouge:=(205,22,22); prenom:="Raoul";

Tu rencontreras dans les exemples que tu trouveras dans d'autre documentations l'affectation de variables numériques avec = et non:= je l'expliquerais plus tard pour l'instant on va rester avec := pour attribuer une valeur à nos varibles

Toutes les variables MetaFun peuvent être organisée en tableau, c'est à dire contenir plusieurs données ou groupe de données. Ces tableaux peuvent avoir plusieurs dimensions.

Un tableau de dimension 1 est une liste. Par exemple si tu veux stocker les couleurs de l'arc en ciel tu pourrais t'y prendre de cette façon :

string arcenciel[]

Les crochets [] indique que la variable arcenciel est un tableau, comme il n'y a qu'une paire de [] il est à 1 dimension, pour créer un tableau à 2 dimension on aurait mis [][] à trois [][][] et ainsi de suite.

Pour remplir le tableau il faut renseigner chaque case du tableau

arcenciel[1] :="rouge" arcenciel[2] :="orange" arcenciel[3] :="jaune" arcenciel[4] :="vert" arcenciel[5] :="bleu" arcenciel[6] :="indigo" arcenciel[7] :="violet"

Les variables peuvent recevoir des valeurs explicitement par assignement avec := ou implicitement par des équations linéaires. Équations utilisent la comparaison d'égalité, =. Les équations peuvent être construits à partir des valeurs numériques pair ou couleur

MetaFun doit être capable de résoudre les équations avant que les images qui utilisent leurs valeurs sont traitées.