6.1 Les opérations
6.1.1 Opérations usuelles
- Ce sont les opérations : +, -, *, /. Ces symboles sont obligatoires dans
les expressions, par exemple : 2x à la place de 2*x va générer une
erreur.
- On peut ajouter deux listes : [1,2,3]+[4,5] donnera [5,7,3].
- On peut soustraire deux listes : [1,2,3]-[4,5,6,7] donnera [-3,-3,-3,-7].
- On peut multiplier une liste par un complexe : 5*[1,2,3] donnera [5,10,15],
mais [1,2,3]*5 donnera 5.
- On peut diviser une liste par un complexe : [1,2,3]/2 donnera [0.5,1,1.5].
- On dispose en plus de l’opération x^y qui correspond à la fonction
puissance xy. L’exposant doit être réel, mais lorsque x est complexe
non réel, l’exposant y doit être entier.
6.1.2 Opérations logiques
- Il s’agit des opérations And et Or, les valeurs booléennes True et
False correspondent respectivement aux valeurs numériques 1 et 0. La
macro not() permet de prendre la négation.
- Exemple(s) : 1 And 0 donne 0, mais 2 Or 1 donne Nil.
6.1.3 Opérations de comparaison
Il s’agit d’opérations dont le résultat est une valeur booléenne (0 ou 1), voici la
liste :
- Egal (ou encore =) : teste l’égalité entre deux objets dont la valeur
peut être soit une liste, soit la valeur Nil.
- Negal (ou encore <> ) : teste la différence entre deux objets dont la
valeur peut être soit une liste, soit la valeur Nil.
- Inf (ou encore <) : teste la relation "strictement inférieur à" (entre
deux réels).
- InfOuE (ou encore <=) : teste la relation "inférieur ou égal à".
- Sup (ou encore > ) : teste la relation "strictement supérieur à".
- SupOuE (ou encore >=) : teste la relation "supérieur ou égal à".
- Inside : teste si le premier argument (qui doit être un affixe) est à
l’intérieur (bord exclu) du polygone représenté par le deuxième
argument (qui doit donc être une liste fermée).
- Exemple(s) : 1 Inside [-1,2+3*i,4-i,-1] donne 1 et i Inside [-1,2+3*i,4-i,-1]
donne 0.
6.1.4 Opérations d’intersection
Elles sont au nombre de deux :
- Inter : les deux arguments doivent être des listes de deux éléments (il
peut y en avoir plus, mais seuls les deux premiers sont pris en compte), ils
sont alors interprétés comme deux droites [définies par deux points],
l’opération Inter détermine et renvoie le point d’intersection. Lorsque
les deux droites sont parallèles, le résultat est Nil.
- InterL : les deux arguments doivent être des listes d’au moins deux
éléments, ils sont alors interprétés comme deux lignes polygonales,
l’opération InterL détermine et renvoie la liste des points d’intersection
de ces deux lignes. Les points d’intersection sont rangés suivant
le même "sens de parcours" que le premier argument (et si
plusieurs points sont sur le même segment alors ils sont rangés dans
le sens de parcours du deuxième argument).
6.1.5 Opérations de coupure
Elles sont au nombre de deux :
- CutA : (cut after) le premier argument doit être une liste et le second
un complexe (qui est censé être sur la ligne polygonale définie par les
points de la liste). L’opération CutA détermine et renvoie les points
de la liste situés avant le complexe.
- Exemple(s) : [1,2,3,4,5] CutA 3.5 donne [1,2,3,3.5] et [1,2,3,4,5] CutA 6
donne Nil.
- CutB : (cut before) le premier argument doit être une liste et le second
un complexe (qui est censé être sur la ligne polygonale définie par les
points de la liste). L’opération CutB détermine et renvoie les points
de la liste situés après le complexe.