1 <h1 id=
"les-macros-mathématiques-de-texgraph.mac">Les macros math
ématiques de TeXgraph.mac
</h1>
2 <h2 id=
"opérations-arithmétiques-et-logiques">Op
érations arithm
étiques et logiques
</h2>
3 <h3 id=
"Ceil">Ceil
</h3>
5 <li><p><b>Ceil(
<x
> )
</b>.
</p></li>
6 <li><p><u>Description
</u> : renvoie le plus petit entier sup
érieur ou
égal au r
éel
<<em>x
</em>>.
</p></li>
10 <li><p><b>div(
<x
>,
<y
> )
</b>.
</p></li>
11 <li><p><u>Description
</u> : renvoie l
’unique entier
<span class=
"math"><em>k
</em></span> tel que
<span class=
"math"><em>x
</em> -
 <em>k
</em><em>y
</em></span> soit dans l
’intervalle
<span class=
"math">[
0;
 ∣<em>y
</em>∣[
</span>.
</p></li>
15 <li><p><b>mod(
<x
>,
<y
> )
</b>.
</p></li>
16 <li><p><u>Description
</u> : renvoie l
’unique r
éel
<span class=
"math"><em>r
</em></span> de l
’intervalle
<span class=
"math">[
0;
 ∣<em>y
</em>∣[
</span> tel que
<span class=
"math"><em>x
</em> =
 <em>k
</em><em>y
</em> +
 <em>r
</em></span> avec
<span class=
"math"><em>k
</em></span> entier.
</p></li>
20 <li><p><b>not(
<expression bool
éenne
> )
</b></p></li>
21 <li><p><u>Description
</u> : renvoie la valeur bool
éenne de la n
égation.
</p></li>
23 <h3 id=
"pgcd">pgcd
</h3>
25 <li><p><b>pgcd(
<a
>,
<b
> [,
<u
>,
<v
>] )
</b></p></li>
26 <li><p><u>Description
</u> : renvoie la valeur d du pgcd de
<<em>a
</em>> et
<<em>b
</em>>, ainsi que deux coefficients de Bezout dans les variables
<<em>u
</em>> et
<<em>v
</em>> (si celles-ci sont pr
ésentes), de telle sorte que
<span class=
"math"><em>a
</em><em>u
</em> +
 <em>b
</em><em>v
</em> =
 <em>d
</em></span>.
</p></li>
28 <h3 id=
"ppcm">ppcm
</h3>
30 <li><p><b>ppcm(
<a
>,
<b
> )
</b></p></li>
31 <li><p><u>Description
</u> : renvoie la valeur du ppcm de
<<em>a
</em>> et
<<em>b
</em>>.
</p></li>
33 <h2 id=
"opérations-sur-les-variables">Op
érations sur les variables
</h2>
36 <li><p><b>Abs(
<affixe
> )
</b>.
</p></li>
37 <li><p><u>Description
</u> : cette macro donne la norme en cm.
</p></li>
39 <h3 id=
"free">free
</h3>
41 <li><p><b>free(
<x
> )
</b>.
</p></li>
42 <li><p><u>Description
</u> : lib
ère la variable
<<em>x
</em>> en la mettant
à <em>Nil
</em>. Depuis la version
1.93 on peut faire directement l
’affectation
à la constante
<em>Nil
</em>, par exemple:
<span style=
"color:red">x:=Nil
</span>.
</p></li>
44 <h3 id=
"IsIn">IsIn
</h3>
46 <li><p><b>IsIn(
<affixe
> [,
<epsilon
>] )
</b>.
</p></li>
47 <li><p><u>Description
</u> : renvoie
1 si l
’<<em>affixe
</em>> est dans la fen
être graphique,
0 sinon. Cette macro tient compte de la matrice courante, le test se fait
à <<em>epsilon
</em>> pr
ès et
<<em>epsilon
</em>> vaut
0.0001 cm par d
éfaut.
</p></li>
51 <li><p><b>nil(
<x
> )
</b>.
</p></li>
52 <li><p><u>Description
</u> : renvoie
1 si la variable
<<em>x
</em>> est
à <em>Nil
</em>,
0 sinon. Depuis la version
1.93 on peut faire directement le test d
’égalit
é avec la constante
<em>Nil
</em>.
</p></li>
54 <h3 id=
"round">round
</h3>
56 <li><p><b>round(
<liste
> [, d
écimales] )
</b></p></li>
57 <li><p><u>Description
</u> : tronque les complexes de la
<<em>liste
</em>> en arrondissant au plus proche les parties r
éelles et imaginaires avec le nombre de
<<em>d
écimales
</em>> demand
é (
0 par d
éfaut). Si la
<<em>liste
</em>> contient le constante
<em>jump
</em>, alors celle-ci est renvoy
ée dans la liste des r
ésultats. Cette macro utilise la commande
<a href=
"#Round">Round
</a> (qui ne s
’applique qu
’à un complexe et non une liste).
</p></li>
59 <h2 id=
"opérations-sur-les-listes">Op
érations sur les listes
</h2>
60 <h3 id=
"bary">bary
</h3>
62 <li><p><b>bary(
<[affixe1, coef1, affixe2, coef2, ...]
> )
</b>.
</p></li>
63 <li><p><u>Description
</u> : renvoie le barycentre du syst
ème pond
ér
é <<em>[(affixe1, coef1), (affixe2, coef2),...]
</em>>.
</p></li>
67 <li><p><b>del(
<liste
>,
<liste des index
à supprimer
>,
<quantit
é à supprimer
> )
</b>.
</p></li>
68 <li><p><u>Description
</u> : renvoie la liste apr
ès avoir supprimer les
él
éments dont l
’index figure dans la
<<em>liste des index
à supprimer
</em>>. La
<<em>quantit
é à supprimer
</em>> (
à chaque fois) est de
<span class=
"math">1</span> par d
éfaut, cet argument peut
être une liste lui aussi.
</p></li>
69 <li><p><u>Exemple(s)
</u> :
</p>
71 <li><p><span style=
"color:red">del( [
1,
2,
3,
4,
5,
6,
7,
8], [
2,
6,
8])
</span> donne
<span style=
"color:magenta">[
1,
3,
4,
5,
7]
</span>.
</p></li>
72 <li><p><span style=
"color:red">del( [
1,
2,
3,
4,
5,
6,
7,
8], [
2,
6,
8],
2)
</span> donne
<span style=
"color:magenta">[
1,
4,
5]
</span>.
</p></li>
73 <li><p><span style=
"color:red">del( [
1,
2,
3,
4,
5,
6,
7,
8], [
2,
6,
8], [
1,
2])
</span> donne
<span style=
"color:magenta">[
1,
3,
4,
5]
</span>.
</p></li>
74 <li><p><span style=
"color:red">del( [
1,
2,jump,
3,
4,
5,jump,
6,
7,
8],[
3,
7])
</span> donne
<span style=
"color:magenta">[
1,
2,
3,
4,
5,
6,
7,
8]
</span>.
</p></li>
77 <h3 id=
"getdot">getdot
</h3>
79 <li><p><b>getdot(
<s
> ,
<ligne polygonale
> )
</b>.
</p></li>
80 <li><p><u>Description
</u> : renvoie le point de la
<<em>ligne polygonale
</em>> ayant
<<em>s
</em>> comme abscisse curviligne. Le param
ètre
<<em>s
</em>> doit
être dans l
’intervalle
<span class=
"math">[
0;
 1]
</span>,
<span class=
"math">0</span> pour le premier point, et
<span class=
"math">1</span> pour le dernier.
</p></li>
82 <h3 id=
"IsAlign">IsAlign
</h3>
84 <li><p><b>IsAlign(
<liste points
2D
> [, epsilon] )
</b>.
</p></li>
85 <li><p><u>Description
</u> : renvoie
1 si les points sont sur une m
ême droite,
0 sinon. Par d
éfaut la tol
érance
<<em>epsilon
</em>> vaut
1E-10. La
<<em>liste
</em>> ne doit pas contenir la constante
<em>jump
</em>.
</p></li>
87 <h3 id=
"isobar">isobar
</h3>
89 <li><p><b>isobar(
<[affixe1, affixe2, ...]
> )
</b>.
</p></li>
90 <li><p><u>Description
</u> : renvoie l
’isobarycentre du syst
ème
<<em>[affixe1, affixe2, ...]
</em>>.
</p></li>
92 <h3 id=
"KillDup">KillDup
</h3>
94 <li><p><b>KillDup(
<liste
> [, epsilon] )
</b>.
</p></li>
95 <li><p><u>Description
</u> : renvoie la liste sans doublons. Les comparaisons se font
à <<em>epsilon
</em>> pr
ès (qui vaut
<span class=
"math">0</span> par d
éfaut).
</p></li>
96 <li><p><u>Exemple(s)
</u> :
<span style=
"color:red">KillDup( [
1.255,
1.258,jump,
1.257,
1.256,
1.269,jump] ,
1.5E-3)
</span> renvoie
<span style=
"color:magenta">[
1.255,
1.258,
1.269]
</span>.
</p></li>
98 <h3 id=
"length">length
</h3>
100 <li><p><b>length(
<liste
> )
</b>.
</p></li>
101 <li><p><u>Description
</u> : calcule la longueur de la
<<em>liste
</em>> en cm.
</p></li>
103 <h3 id=
"permute">permute
</h3>
105 <li><p><b>permute(
<liste
> )
</b>.
</p></li>
106 <li><p><u>Description
</u> : modifie la
<<em>liste
</em>> en pla
çant le premier
él
ément
à la fin,
<<em>liste
</em>> doit
être une variable.
</p></li>
107 <li><p>la commande
<span style=
"color:red">[x:= [
1,
2,
3,
4], permute(x), x]
</span> renvoie
<span style=
"color:magenta">[
2,
3,
4,
1]
</span>.
</p></li>
109 <h3 id=
"Pos">Pos
</h3>
111 <li><p><b>Pos(
<affixe
>,
<liste
>, [, epsilon] )
</b>.
</p></li>
112 <li><p><u>Description
</u> : renvoie la liste des positions de l
’<<em>affixe
</em>> dans la
<<em>liste
</em>>, la comparaison se fait
à <<em>epsilon
</em>> pr
ès, par d
éfaut
<<em>epsilon
</em>> vaut
0.
</p></li>
113 <li><p>la commande
<span style=
"color:red">Pos(
2, [
1,
2,
3,
2,
4])
</span> renvoie
<span style=
"color:magenta">[
2,
4]
</span>, mais
<span style=
"color:red">Pos(
5, [
1,
2,
3,
2,
4])
</span> renvoie
<em>Nil
</em>.
</p></li>
115 <h3 id=
"rectangle">rectangle
</h3>
117 <li><p><b>rectangle(
<liste
> )
</b>.
</p></li>
118 <li><p><u>Description
</u> : d
étermine le plus petit rectangle contenant la liste, cette macro renvoie une liste de deux complexes qui repr
ésentent l
’affixe du coin inf
érieur gauche suivi de celle du coin sup
érieur droit.
</p></li>
120 <h3 id=
"replace">replace
</h3>
122 <li><p><b>replace(
<liste
>,
<position
>,
<valeur
> )
</b>.
</p></li>
123 <li><p><u>Description
</u> : modifie la variable
<<em>liste
</em>> en rempla
çant l
’él
ément num
éro
<<em>position
</em>> par la
<<em>valeur
</em>>, cette macro renvoie
<em>Nil
</em>.
</p></li>
125 <h3 id=
"reverse">reverse
</h3>
127 <li><p><b>reverse(
<liste
> )
</b>.
</p></li>
128 <li><p><u>Description
</u> : renvoie la liste apr
ès avoir inverser chaque composante (deux composantes sont s
épar
ées par un
<em>jump
</em>).
</p></li>
130 <h3 id=
"SortWith">SortWith
</h3>
132 <li><p><b>SortWith(
<liste cl
és
>,
<liste
>,
<taille paquets
> [, mode] )
</b>.
</p></li>
133 <li><p><u>Description
</u> : trie la
<strong>variable
</strong> <<em>liste
</em>> suivant les
<<em>cl
és
</em>>. Les
él
éments de la
<<em>liste
</em>> sont trait
és par
<<em>paquets
</em>>, leur taille est de
1 par d
éfaut. La
<<em>taille paquets
</em>> peut
être
égale
à <em>jump
</em> pour un traitement par composante. Si un paquet n
’est pas complet, il n
’est pas trait
é. Si la liste contient la constante
<em>jump
</em>, alors toutes les composantes sont tri
ées chacune leur tour. Le dernier param
ètre d
étermine le type de tri:
<<em>mode
</em>>=
0 pour ordre croissant (valeur par d
éfaut),
<<em>mode
</em>>=
1 pour d
écroissant.
</p></li>
135 <h2 id=
"gestion-des-listes-par-composantes">Gestion des listes par composantes
</h2>
136 <p>La convention adopt
ée est que deux composantes sont s
épar
ées par la constante
<em>jump
</em>. Une composante peut
être vide.
</p>
137 <h3 id=
"CpCopy">CpCopy
</h3>
139 <li><p><b>CpCopy(
<liste
>,
<index depart
>,
<nombre
> )
</b>.
</p></li>
140 <li><p><u>Description
</u> : cette fonction renvoie la liste constitu
ée par les
<<em>nombre
</em>> composantes de la
<<em>liste
</em>> à partir de la composante num
éro
<<em>depart
</em>>[inclus]. Si
<<em>nombre
</em>> est nul, alors la fonction renvoie toutes les composantes de la liste
à partir de la composante num
éro
<<em>d
épart
</em>>.
</p>
141 <p>Si le num
éro
<<em>depart
</em>> est n
égatif, alors la liste et parcourue de droite
à gauche en partant du dernier, la derni
ère composante a l
’index
<span class=
"math"> -
 1</span>, l
’avant-derni
ère a l
’index
<span class=
"math"> -
 2</span> <span class=
"math">⋯</span> etc. La fonction renvoie les
<<em>nombre
</em>> composantes de la liste (ou toute la liste si
<<em>nombre
</em>> est nul) en allant vers la gauche, mais la liste renvoy
ée est dans le m
ême sens que la
<<em>liste
</em>>, et cette derni
ère n
’est pas modifi
ée.
</p></li>
142 <li><p><u>Exemple(s)
</u> :
</p>
144 <li><p><span style=
"color:red">CpCopy([
1,
2,jump,
3,
7,
8,jump,
4,jump,
5,
6],
2,
1)
</span> renvoie
<span style=
"color:magenta">[
3,
7,
8]
</span>.
</p></li>
145 <li><p><span style=
"color:red">CpCopy([
1,
2,jump,
3,
7,
8,jump,
4,jump,
5,
6], -
1,
2)
</span> renvoie
<span style=
"color:magenta">[
4,jump,
5,
6]
</span>.
</p></li>
146 <li><p><span style=
"color:red">CpCopy([
1,
2,jump,
3,
7,
8,jump,
4,jump,
5,
6], -
3,
0)
</span> renvoie
<span style=
"color:magenta">[
1,
2,jump,
3,
7,
8]
</span>.
</p></li>
149 <h3 id=
"CpDel">CpDel
</h3>
151 <li><p><b>CpDel(
<variable liste
>,
<index depart
>,
<nombre
> )
</b>.
</p></li>
152 <li><p><u>Description
</u> : cette fonction d
étruit dans la
<<em>variable liste
</em>>, les
<<em>nombre
</em>> composantes
à partir de la composante num
éro
<<em>depart
</em>>[inclus]. Si
<<em>nombre
</em>> est nul, alors la fonction d
étruit toutes les composantes de la
<<em>variable liste
</em>> à partir de la composante num
éro
<<em>d
épart
</em>>.
</p>
153 <p>Si le num
éro
<<em>depart
</em>> est n
égatif, alors la liste et parcourue de droite
à gauche en partant du dernier, la derni
ère composante a l
’index
<span class=
"math"> -
 1</span>, l
’avant-derni
ère a l
’index
<span class=
"math"> -
 2</span> <span class=
"math">⋯</span> etc. La fonction d
étruit les
<<em>nombre
</em>> composantes de la
<variable liste
> (ou toute la liste si
<<em>nombre
</em>> est nul) en allant vers la gauche.
</p>
154 <p>Le param
ètre
<<em>variable liste
</em>> doit
être
<strong>un nom de variable
</strong>, celle-ci est modifi
ée et la macro renvoie
<em>Nil
</em>.
</p></li>
156 <h3 id=
"CpNops">CpNops
</h3>
158 <li><p><b>CpNops(
<liste
> )
</b>.
</p></li>
159 <li><p><u>Description
</u> : cette fonction
évalue
<<em>liste
</em>> et renvoie le nombre de composantes qui la composent.
</p></li>
160 <li><p><u>Exemple(s)
</u> :
</p>
162 <li><p><span style=
"color:red">CpNops([
1,
2,jump,
3] )
</span> renvoie la valeur
<span style=
"color:magenta">2</span>.
</p></li>
163 <li><p><span style=
"color:red">CpNops([
1,
2,jump,
3,jump] )
</span> renvoie la valeur
<span style=
"color:magenta">3</span>.
</p></li>
164 <li><p><span style=
"color:red">CpNops([jump] )
</span> renvoie la valeur
<span style=
"color:magenta">2</span>.
</p></li>
167 <h3 id=
"CpReplace">CpReplace
</h3>
169 <li><p><b>CpReplace(
<variable liste
>,
<position
>,
<nouveau
> )
</b>.
</p></li>
170 <li><p><u>Description
</u> : modifie la
<<em>variable liste
</em>> en rempla
çant la composante num
éro
<<em>position
</em>> par
<<em>nouveau
</em>>, cette macro renvoie
<em>Nil
</em>.
</p></li>
172 <h3 id=
"CpReverse">CpReverse
</h3>
174 <li><p><b>CpReverse(
<liste
> )
</b>.
</p></li>
175 <li><p><u>Description
</u> : renvoie la
<<em>liste
</em>> avec les composantes dans l
’ordre inverse.
</p></li>
176 <li><p><u>Exemple(s)
</u> :
<span style=
"color:red">CpReverse([
1,
2,jump,
3,
4,
5,jump])
</span> renvoie
<span style=
"color:magenta">[jump,
3,
4,
5,jump,
1,
2]
</span>.
</p></li>
178 <h2 id=
"gestion-des-listes-de-chaînes">Gestion des listes de cha
înes
</h2>
179 <p>Une telle liste est en r
éalit
é une
<strong>macro
</strong>, les
él
éments sont index
és
à partir de
<span class=
"math">1</span>, et la cha
îne num
éro
<span class=
"math"><em>k
</em></span> est donn
ée par
<code>@nomListe(k)
</code>, alors que la longueur de la liste (nombre d
’él
éments) est donn
ée par
<code>nomListe(
0)
</code>.
</p>
180 <h3 id=
"StrListInit">StrListInit
</h3>
182 <li><p><b>StrListInit(
<nomListe
>,
<"chaine1
">,
<"chaine2
">, ... )
</b>.
</p></li>
183 <li><p><u>Description
</u> : cr
ée une liste de chaines sous forme d
’une macro appel
ée
<<em>nomListe
</em>>, les arguments suivants sont interpr
ét
és comme des cha
înes, ils constituent les
él
éments de la liste et sont index
és
à partir de
1.
</p></li>
184 <li><p><u>Exemple(s)
</u> : Apr
ès la commande
<span style=
"color:red">StrListInit(essai,
"toto
", [
"toto
",
2/
4],
24)
</span>, une macro du nom de
<strong>essai
</strong> est cr
éée et son contenu est:
</p>
185 <pre><code>for $z in Args() do
186 if z
<0 then Inc(z,
4) fi,
188 elif z=
1 then
"toto
"
189 elif z=
2 then
"toto0.5
"
190 elif z=
3 then
"24"
194 <li><p><u>Exemple(s)
</u> : Afficher des labels avec une affixe et une orientation pour chacun, en utilisant une seule fois LabelDot.
</p></li>
198 <p>view(-
2,
2,-
2,
2), Marges(
0,
0,
0,
0), size(
7.5), StrListInit( nom, -
1,
"<span class=
"math"><em>A
</em></span>",
"O
", i,
"<span class=
"math"><em>B
</em></span>",
"N
",
1,
"<span class=
"math"><em>C
</em></span>",
"E
", -i,
"<span class=
"math"><em>D
</em></span>",
"S
"), for k from
1 to nom(
0) step
3 do LabelDot( Eval(@nom(k)), @nom(k+
1), @nom(k+
2),
1) od, StrListKill(nom)
</p>
201 <p>Une autre solution consiste
à faire trois listes: nom, position, orientation:
</p>
202 <pre><code> view(-
2,
2,-
2,
2), Marges(
0,
0,
0,
0), size(
7.5),
203 StrListInit( nom,
"$A$
",
"$B$
",
"$C$
",
"$D$
"),
204 StrListInit(orientation,
"O
",
"N
",
"E
",
"S
"),
205 position:=[-
1, i,
1, -i],
206 for k from
1 to nom(
0) do
207 LabelDot( position[k], @nom(k), @orientation(k),
1)
209 StrListKill(nom, orientation)
211 <h3 id=
"StrListAdd">StrListAdd
</h3>
213 <li><p><b>StrListAdd(
<nomListe
>,
<"chaine1
">,
<"chaine2
">, ... )
</b>.
</p></li>
214 <li><p><u>Description
</u> : cette macro ajoute
à la fin de la liste de cha
înes appel
ée
<<em>nomListe
</em>>, les arguments suivants (qui sont interpr
ét
és comme des cha
înes). Cela suppose que la liste
<<em>nomListe
</em>> existe d
éj
à, cette liste est en fait une macro qui va
être enti
èrement r
éécrite pour lui ajouter les
él
éments suppl
émentaires. Il est plus rapide de d
éfinir la liste en une seule fois avec la macro
<a href=
"#StrListInit">StrListInit
</a> quand c
’est possible.
</p></li>
216 <h3 id=
"StrListCopy">StrListCopy
</h3>
218 <li><p><b>StrListCopy(
<nomListe
>,
<nouvelleListe
> [, index depart, nombre] )
</b>.
</p></li>
219 <li><p><u>Description
</u> : cette macro cr
ée une nouvelle liste de cha
înes appel
ée
<<em>nouvelleListe
</em>> en copiant
<<em>nombre
</em>> él
éments de la liste
<<em>nomListe
</em>> en partant de
<<em>index depart
</em>>. L
’argument
<index depart
> peut
être n
égatif (
<span class=
"math"> -
 1</span> designe le dernier
él
ément,
<span class=
"math"> -
 2</span> l
’avant-dernier, ...), par contre les
él
éments sont toujours parcourus de gauche
à droite quand
<nombre
> est positif, et dans le sens inverse quand
<nombre
> est n
égatif. Par d
éfaut l
’<<em>index depart
</em>> vaut
<span class=
"math">1</span> et le
<<em>nombre
</em>> vaut
<span class=
"math">0</span> (ce qui signifie
øg tous les
él
éments).
</p></li>
221 <h3 id=
"StrListDelKey">StrListDelKey
</h3>
223 <li><p><b>StrListDelKey(
<nomListe
>,
<index depart
>,
<nombre
> )
</b>.
</p></li>
224 <li><p><u>Description
</u> : cette macro supprime de
<<em>nomListe
</em>> <<em>nombre
</em>> él
éments
à partir de l
’<<em>index depart
</em>>. Comme dans la commande Del, l
’argument
<<em>index depart
</em>> peut
être n
égatif (
<span class=
"math"> -
 1</span> designe le dernier
él
ément,
<span class=
"math"> -
 2</span> l
’avant-dernier, ...), par contre les
él
éments sont toujours parcourus de gauche
à droite quand
<nombre
> est positif, et dans le sens inverse quand
<nombre
> est n
égatif. Cette macro renvoie
<em>Nil
</em>.
</p></li>
226 <h3 id=
"StrListDelVal">StrListDelVal
</h3>
228 <li><p><b>StrListDelVal(
<nomListe
>,
<val1
>,
<val2
>, ... )
</b>.
</p></li>
229 <li><p><u>Description
</u> : cette macro supprime de
<<em>nomListe
</em>> les cha
înes
<<em>val1
</em>>,
<<em>val2
</em>>..., sans avoir
à conna
ître leurs index.
</p></li>
231 <h3 id=
"StrListGetKey">StrListGetKey
</h3>
233 <li><p><b>StrListGetKey(
<nomListe
>,
<chaine
> )
</b>.
</p></li>
234 <li><p><u>Description
</u> : cette macro renvoie l
’index de la
<<em>cha
îne
</em>> dans la liste
<<em>nomListe
</em>>, si elle n
’y figure pas, la macro renvoie
<em>Nil
</em>.
</p></li>
236 <h3 id=
"StrListInsert">StrListInsert
</h3>
238 <li><p><b>StrListInsert(
<nomListe1
>,
<cha
îne
> [,
<index
> ])
</b>.
</p></li>
239 <li><p><u>Description
</u> : cette macro modifie la liste de chaines
<<em>nomListe
</em>>, en ins
érant une nouvelle
<<em>cha
îne
</em>> à la position
<<em>index
</em>>. Par d
éfaut la valeur de
<<em>index
</em>> est nulle ce qui repr
ésente la fin de la liste, cette valeur peut
être n
égative (
<span class=
"math"> -
 1</span> est l
’index du dernier
él
ément,
<span class=
"math"> -
 2</span> l
’avant-dernier, ...).
</p></li>
241 <h3 id=
"StrListKill">StrListKill
</h3>
243 <li><p><b>StrListKill(
<nomListe1
>,
<nomListe2
>, ... )
</b>.
</p></li>
244 <li><p><u>Description
</u> : cette macro d
étruit les listes de cha
înes
<<em>nomListe1
</em>>,
<<em>nomListe2
</em>>, ...
</p></li>
246 <h3 id=
"StrListReplace">StrListReplace
</h3>
248 <li><p><b>StrListReplace(
<nomListe
>,
<ancienne chaine
>,
<nouvelle
> )
</b>.
</p></li>
249 <li><p><u>Description
</u> : cette macro remplace dans la liste appel
ée
<<em>nomListe
</em>>, l
’<<em>ancienne chaine
</em>> par la
<<em>nouvelle
</em>>.
</p></li>
251 <h3 id=
"StrListReplaceKey">StrListReplaceKey
</h3>
253 <li><p><b>StrListReplaceKey(
<nomListe
>,
<index
>,
<nouvelle cha
îne
> )
</b>.
</p></li>
254 <li><p><u>Description
</u> : cette macro remplace dans la liste appel
ée
<<em>nomListe
</em>>, la cha
îne dont le num
éro est
<<em>index
</em>>, par la
<<em>nouvelle cha
îne
</em>>.
</p></li>
256 <h3 id=
"StrListShow">StrListShow
</h3>
258 <li><p><b>StrListShow(
<nomListe
> [,
<index depart
>,
<nombre
> ])
</b>.
</p></li>
259 <li><p><u>Description
</u> : cette macro renvoie la cha
îne obtenue en copiant
<<em>nombre
</em>> él
éments de la liste
<<em>nomListe
</em>> en partant de
<<em>index depart
</em>>, mais sans les concat
éner. La cha
îne renvoy
ée est de la forme:
<code>"chaine
",
"chaine
", ...
</code>. L
’argument
<index depart
> peut
être n
égatif (
<span class=
"math"> -
 1</span> designe le dernier
él
ément,
<span class=
"math"> -
 2</span> l
’avant-dernier, ...), par contre les
él
éments sont toujours parcourus de gauche
à droite quand
<<em>nombre
</em>> est positif, et dans le sens inverse quand
<nombre
> est n
égatif. Par d
éfaut l
’<index depart
> vaut
<span class=
"math">1</span> et le
<<em>nombre
</em>> vaut
<span class=
"math">0</span> (ce qui signifie
øg tous les
él
éments).
</p></li>
261 <h2 id=
"fonctions-statistiques">Fonctions statistiques
</h2>
262 <h3 id=
"Anp">Anp
</h3>
264 <li><p><b>Anp(
<n
>,
<p
> )
</b>.
</p></li>
265 <li><p><u>Description
</u> : renvoie le nombre d
’arrangements de
<<em>p
</em>> parmi
<<em>n
</em>>.
</p></li>
267 <h3 id=
"binom">binom
</h3>
269 <li><p><b>binom(
<n
>,
<p
> )
</b>.
</p></li>
270 <li><p><u>Description
</u> : renvoie le coefficient binomial (ou combinaison)
<<em>p
</em>> parmi
<<em>n
</em>>.
</p></li>
272 <h3 id=
"ecart">ecart
</h3>
274 <li><p><b>ecart(
<liste r
éels
> )
</b>.
</p></li>
275 <li><p><u>Description
</u> : renvoie l
’écart type d
’une liste de r
éels, la constante
<em>jump
</em> est ignor
ée.
</p></li>
277 <h3 id=
"fact">fact
</h3>
279 <li><p><b>fact(
<n
> )
</b>.
</p></li>
280 <li><p><u>Description
</u> : renvoie la valeur de
<span class=
"math"><em>n
</em>!
</span> (fonction factorielle).
</p></li>
282 <h3 id=
"max">max
</h3>
284 <li><p><b>max(
<liste complexes
> )
</b>.
</p></li>
285 <li><p><u>Description
</u> : renvoie le plus grand
él
ément d
’une liste de complexes (ordre lexicographique), la constante
<em>jump
</em> est ignor
ée.
</p></li>
287 <h3 id=
"min">min
</h3>
289 <li><p><b>min(
<liste complexes
> )
</b>.
</p></li>
290 <li><p><u>Description
</u> : renvoie le plus petit
él
ément d
’une liste de complexes (ordre lexicographique), la constante
<em>jump
</em> est ignor
ée.
</p></li>
292 <h3 id=
"median">median
</h3>
294 <li><p><b>median(
<liste complexes
> )
</b>.
</p></li>
295 <li><p><u>Description
</u> : renvoie l
’él
ément m
édian d
’une liste de complexes (ordre lexicographique), la constante
<em>jump
</em> est ignor
ée.
</p></li>
297 <h3 id=
"moy">moy
</h3>
299 <li><p><b>moy(
<liste complexes
> )
</b>.
</p></li>
300 <li><p><u>Description
</u> : renvoie la moyenne d
’une liste de complexes, la constante
<em>jump
</em> est ignor
ée.
</p></li>
302 <h3 id=
"prod">prod
</h3>
304 <li><p><b>prod(
<liste complexes
> )
</b>.
</p></li>
305 <li><p><u>Description
</u> : renvoie le produit des
él
éments d
’une liste de complexes, la constante
<em>jump
</em> est ignor
ée.
</p></li>
307 <h3 id=
"sum">sum
</h3>
309 <li><p><b>sum(
<liste complexes
> )
</b>.
</p></li>
310 <li><p><u>Description
</u> : renvoie la somme des
él
éments d
’une liste de complexes, la constante
<em>jump
</em> est ignor
ée.
</p></li>
312 <h3 id=
"var">var
</h3>
314 <li><p><b>var(
<liste r
éels
> )
</b>.
</p></li>
315 <li><p><u>Description
</u> : renvoie la variance d
’une liste de r
éels, la constante
<em>jump
</em> est ignor
ée.
</p></li>
317 <h2 id=
"fonctions-de-conversion">Fonctions de conversion
</h2>
318 <h3 id=
"RealArg">RealArg
</h3>
320 <li><p><b>RealArg(
<affixe
> )
</b></p></li>
321 <li><p><u>Description
</u> : renvoie l
’argument (en radians) de l
’affixe r
éelle d
’un vecteur en tenant compte de la matrice courante.
</p></li>
323 <h3 id=
"RealCoord">RealCoord
</h3>
325 <li><p><b>RealCoord(
<affixe
écran
> )
</b></p></li>
326 <li><p><u>Description
</u> : renvoie l
’affixe r
éelle d
’un point compte tenu des
échelles et de la matrice courante.
</p></li>
328 <h3 id=
"RealCoordV">RealCoordV
</h3>
330 <li><p><b>RealCoordV(
<affixe
écran
> )
</b></p></li>
331 <li><p><u>Description
</u> : renvoie l
’affixe r
éelle d
’un vecteur compte tenu des
échelles de la matrice courante.
</p></li>
333 <h3 id=
"ScrCoord">ScrCoord
</h3>
335 <li><p><b>ScrCoord(
<affixe r
éelle
> )
</b></p></li>
336 <li><p><u>Description
</u> : renvoie l
’affixe
écran d
’un point en tenant compte des
échelles et de la matrice courante.
</p></li>
338 <h3 id=
"ScrCoordV">ScrCoordV
</h3>
340 <li><p><b>ScrCoordV(
<affixe r
éelle
> )
</b></p></li>
341 <li><p><u>Description
</u> : renvoie l
’affixe
écran d
’un vecteur en tenant compte des
échelles et de la matrice courante.
</p></li>
343 <h3 id=
"SvgCoord">SvgCoord
</h3>
345 <li><p><b>SvgCoord(
<screen affixe
> )
</b></p></li>
346 <li><p><u>Description
</u> : renvoie l
’affixe export
ée en svg en tenant compte des
échelles et de la matrice courante.
</p></li>
348 <h3 id=
"TeXCoord">TeXCoord
</h3>
350 <li><p><b>TeXCoord(
<screen affixe
> )
</b></p></li>
351 <li><p><u>Description
</u> : renvoie l
’affixe export
ée en tex, pst et pgf en tenant compte des
échelles et de la matrice courante. Pour l
’eps il y a la commande
<a href=
"#EpsCoord">EpsCoord
</a>.
</p></li>
353 <h2 id=
"transformations-géométriques-planes">Transformations g
éom
étriques planes
</h2>
354 <h3 id=
"affin">affin
</h3>
356 <li><p><b>affin(
<liste
> ,
<[A, B]
>,
<V
>,
<lambda
> )
</b></p></li>
357 <li><p><u>Description
</u> : renvoie la liste des images des points de
<<em>liste
</em>> par l
’affinit
é de base la droite
<<em>(AB)
</em>>, de rapport
<<em>lambda
</em>> et de direction le vecteur
<<em>V
</em>>.
</p></li>
359 <h3 id=
"defAff">defAff
</h3>
361 <li><p><b>defAff(
<nom
>,
<A
>,
<A
’>,
<partie lin
éaire
> )
</b></p></li>
362 <li><p><u>Description
</u> : cette fonction permet de cr
éer une macro appel
ée
<<em>nom
</em>> qui repr
ésentera l
’application affine qui transforme
<<em>A
</em>> en
<<em>A
’</em>>, et dont la partie lin
éaire est le dernier argument. Cette partie lin
éaire se pr
ésente sous la forme d
’une liste de deux complexes: [Lf(
1), Lf(i)] o
ù Lf d
ésigne la partie lin
éaire de la transformation.
</p></li>
364 <h3 id=
"ftransform">ftransform
</h3>
366 <li><p><b>ftransform(
<liste
>,
<f(z)
> )
</b></p></li>
367 <li><p><u>Description
</u> : renvoie la liste des images des points de
<<em>liste
</em>> par la fonction
<<em>f(z)
</em>>, celle-ci peut-
être une expression fonction de z ou une macro d
’argument z.
</p></li>
369 <h3 id=
"hom">hom
</h3>
371 <li><p><b>hom(
<liste
>,
<A
>,
<lambda
> )
</b></p></li>
372 <li><p><u>Description
</u> : renvoie la liste des images de la
<<em>liste
</em>> par l
’homoth
étie de centre
<<em>A
</em>> et de rapport
<<em>lambda
</em>>.
</p></li>
374 <h3 id=
"inv">inv
</h3>
376 <li><p><b>inv(
<liste
>,
<A
>,
<R
> )
</b></p></li>
377 <li><p><u>Description
</u> : renvoie la liste des images des points de
<<em>liste
</em>> par l
’inversion de cercle de centre
<<em>A
</em>> et de rayon
<<em>R
</em>>.
</p></li>
379 <h3 id=
"mtransform">mtransform
</h3>
381 <li><p><b>mtransform(
<liste
>,
<matrice
> )
</b></p></li>
382 <li><p><u>Description
</u> : renvoie la liste des images des points de
<<em>liste
</em>> par l
’application affine
<span class=
"math"><em>f
</em></span> d
éfinie par la
<<em>matrice
</em>>. Cette
<a href=
"#matrix">matrice
</a> est de la forme [f(
0), Lf(
1), Lf(i)] o
ù Lf d
ésigne la partie lin
éaire.
</p></li>
384 <h3 id=
"proj">proj
</h3>
386 <li><p><b>proj(
<liste
>,
<A
>,
<B
> )
</b> ou
<strong>proj(
<liste
>,
<[A,B]
> )
</strong></p></li>
387 <li><p><u>Description
</u> : renvoie la liste des projet
és orthogonaux des points de
<<em>liste
</em>> sur la droite
<span class=
"math">(
<em>A
</em><em>B
</em>)
</span>.
</p></li>
389 <h3 id=
"projO">projO
</h3>
391 <li><p><b>projO(
<liste
>,
<[A,B]
>,
<vecteur
> )
</b></p></li>
392 <li><p><u>Description
</u> : renvoie la liste des projet
és des points de
<<em>liste
</em>> sur la droite
<<em>(AB)
</em>> dans la direction du
<<em>vecteur
</em>>.
</p></li>
394 <h3 id=
"rot">rot
</h3>
396 <li><p><b>rot(
<liste
>,
<A
>,
<alpha
> )
</b></p></li>
397 <li><p><u>Description
</u> : renvoie la liste des images des points de
<<em>liste
</em>> par la rotation de centre
<<em>A
</em>> et d
’angle
<<em>alpha
</em>>.
</p></li>
399 <h3 id=
"shift">shift
</h3>
401 <li><p><b>shift(
<liste
>,
<vecteur
> )
</b></p></li>
402 <li><p><u>Description
</u> : renvoie la liste des translat
és des points de
<<em>liste
</em>> avec le
<<em>vecteur
</em>>.
</p></li>
404 <h3 id=
"simil">simil
</h3>
406 <li><p><b>simil(
<liste
> ,
<A
>,
<lambda
>,
<alpha
> )
</b></p></li>
407 <li><p><u>Description
</u> : renvoie la liste des images des points de
<<em>liste
</em>>, par la similitude de centre
<<em>A
</em>>, de rapport
<<em>lambda
</em>> et d
’angle
<<em>alpha
</em>>.
</p></li>
409 <h3 id=
"sym">sym
</h3>
411 <li><p><b>sym(
<liste
>,
<A
>,
<B
> )
</b> ou
<strong>sym(
<liste
>,
<[A,B]
> )
</strong></p></li>
412 <li><p><u>Description
</u> : renvoie la liste des sym
étriques des points de
<<em>liste
</em>>, par rapport
à la droite
<span class=
"math">(
<em>A
</em><em>B
</em>)
</span>.
</p></li>
414 <h3 id=
"symG">symG
</h3>
416 <li><p><b>symG(
<liste
>,
<A
>,
<vecteur
> )
</b></p></li>
417 <li><p><u>Description
</u> : sym
étrie gliss
ée: renvoie la liste des images des points de
<<em>liste
</em>>, par la sym
étrie orthogonale d
’axe la droite passant par
<<em>A
</em>> et dirig
ée par
<<em>vecteur
</em>>, compos
ée avec la translation de
<<em>vecteur
</em>>.
</p></li>
419 <h3 id=
"symO">symO
</h3>
421 <li><p><b>symO(
<liste
>,
<[A, B]
>,
<vecteur
> )
</b></p></li>
422 <li><p><u>Description
</u> : renvoie la liste des sym
étriques des points de
<<em>liste
</em>> par rapport
à la droite
<<em>(AB)
</em>> et dans la direction du
<<em>vecteur
</em>>.
</p></li>
424 <h2 id=
"matrices-de-transformations-2d">Matrices de transformations
2D
</h2>
425 <p>Une transformation affine
<span class=
"math"><em>f
</em></span> du plan complexe peut
être repr
ésent
ée par son expression analytique dans la base canonique
<span class=
"math">(
1,
 <em>i
</em>)
</span>, la forme g
én
érale de cette expression est:
</p>
426 <p>{
<br /><span class=
"math">$\left\{\begin{array}{rcl}
427 x'
&=
&t_1+ax+by\\
428 y'
&=
&t_2+cx+dy
429 \end{array}\right.$
</span><br /> }
</p>
430 <p>cette expression analytique sera repr
ésent
ée par la liste
<span style=
"color:red">[t1+i*t2, a+i*c, b+i*d]
</span> c
’est
à dire:
<span style=
"color:red">[ f(
0), f(
1)-f(
0), f(i)-f(
0)]
</span>, cette liste sera appel
ée plus bri
èvement (et de mani
ère abusive)
<em>matrice
</em> de la transformation
<span class=
"math"><em>f
</em></span>. Les deux derniers
él
éments de cette liste:
<span style=
"color:red">[ a+i*c, b+i*d]
</span>, repr
ésentent la matrice de la partie lin
éaire de
<span class=
"math"><em>f
</em></span>: Lf
<span class=
"math"> =
 <em>f
</em> -
 <em>f
</em>(
0)
</span>.
</p>
431 <h3 id=
"ChangeWinTo">ChangeWinTo
</h3>
433 <li><p><b>ChangeWinTo(
<[xinf+i*yinf, xsup+i*ysup]
> [, ortho] )
</b></p></li>
434 <li><p><u>Description
</u> : modifie la matrice courante de mani
ère
à transformer la fen
être courante en la fen
être de grande diagonale
<<em>[xinf+i*yinf, xsup+i*ysup]
</em>>, la fen
être sera orthonorm
ée ou non en fonction de la valeur du param
ètre optionnel
<<em>ortho
</em>> (
<span class=
"math">0</span> par d
éfaut).
</p></li>
438 <p>view(-
10,
10,-
5,
5),size(
7.5),NbPoints:=
100, LabelSize:=footnotesize, SaveWin(),view(-
10,-
1,-
5,
5), ChangeWinTo([-
2-
2*i,
2+
2*i]), Arrows:=
1, axes(
0,
1+i),Arrows:=
0, tMin:=-
2, tMax:=
2, Color:=red, Width:=
8, Cartesienne(x*Ent(
1/x)-
1,
5,
1), Color:=blue,A:=(
1+i)/
4, Dparallelo(A,bar(A),-A), dep:=RealCoord(i*Im(A)), RestoreWin(), SaveWin(), //zoom view(
1,
10,-
5,
5), background(full,white), ChangeWinTo([-A,A]), Color:=black, arr:=RealCoord(-Re(A)+i*Im(A)*
0.75), Arrows:=
1, axes(
0,A), Arrows:=
0, tMin:=-
0.25, tMax:=
0.25, Color:=red, Width:=
8, Cartesienne(x*Ent(
1/x)-
1,
5,
1), Color:=blue, Dparallelo(A,bar(A),-A), RestoreWin(), //trait Color:=blue, Arrows:=
1, A:=ScrCoord(dep), B:=ScrCoord(arr), Bezier(A,A+
3*exp(i*pi/
2),B-
3,B)
</p>
441 <h3 id=
"invmatrix">invmatrix
</h3>
443 <li><p><b>invmatrix(
<[f(
0), Lf(
1), Lf(i)]
> )
</b></p></li>
444 <li><p><u>Description
</u> : renvoie l
’inverse de la matrice
<<em>[f(
0), Lf(
1), Lf(i)]
</em>>, c
’est
à dire la matrice
<span class=
"math">[
<em>f
</em><sup> -
 1</sup>(
0),
 <em>L
</em><em>f
</em><sup> -
 1</sup>(
1),
 <em>L
</em><em>f
</em><sup> -
 1</sup>(
<em>i
</em>)]
</span> si elle existe.
</p></li>
446 <h3 id=
"matrix">matrix
</h3>
448 <li><p><b>matrix(
<fonction affine
>, [variable] )
</b></p></li>
449 <li><p><u>Description
</u> : renvoie la matrice de la
<<em>fonction affine
</em>>, par d
éfaut la
<<em>variable
</em>> est
<span class=
"math"><em>z
</em></span>. Cette matrice se pr
ésente sous la forme [f(
0), Lf(
1), Lf(i)], o
ù f d
ésigne l
’application affine et Lf sa partie lin
éaire, plus pr
écis
ément: Lf(
1)=f(
1)-f(
0) et Lf(i)=f(i)-f(
0).
</p></li>
450 <li><p><u>Exemple(s)
</u> :
<span style=
"color:red">matrix(i*bar(z))
</span> renvoie
<span style=
"color:magenta">[
0,i,
1]
</span>.
</p></li>
452 <h3 id=
"mulmatrix">mulmatrix
</h3>
454 <li><p><b>mulmatrix(
<[f(
0), Lf(
1), Lf(i)]
>,
<[g(
0), Lg(
1), Lg(i)]
> )
</b></p></li>
455 <li><p><u>Description
</u> : renvoie la matrice de la compos
ée:
<span class=
"math"><em>f
</em><em>o
</em><em>g
</em></span>, o
ù <span class=
"math"><em>f
</em></span> et
<span class=
"math"><em>g
</em></span> sont les deux applications affines d
éfinies par les matrices pass
ées en argument.
</p></li>
457 <h2 id=
"constructions-géométriques-planes">Constructions g
éom
étriques planes
</h2>
458 <p>Ces macros d
éfinissent des objets graphiques mais ne les dessinent pas, elles renvoient une liste de points repr
ésentant ces objets.
</p>
459 <h3 id=
"bissec">bissec
</h3>
461 <li><p><b>bissec(
<B
>,
<A
>,
<C
>,
<1 ou
2> )
</b></p></li>
462 <li><p><u>Description
</u> : renvoie une liste de deux points de la bissectrice,
1=int
érieure.
</p></li>
464 <h3 id=
"cap">cap
</h3>
466 <li><p><b>cap(
<ensemble1
>,
<ensemble2
> )
</b></p></li>
467 <li><p><u>Description
</u> : renvoie le contour de l
’intersection de
<<em>ensemble1
</em>> avec
<<em>ensemble2
</em>> sous forme d
’une liste de points. Ces deux ensembles sont des lignes polygonales repr
ésentant des courbes ferm
ées, orient
ées dans le meme sens, ayant une forme relativement simple. La macro
<a href=
"#set">set
</a> permet de d
éfinir et dessiner des ensembles.
</p></li>
468 <li><p><u>Exemple(s)
</u> : intersection de deux ensembles:
</p></li>
472 <p>Marges(
0,
0,
0,
0),size(
7.5), A:=set(
"A
",
0, [rotation:=
30]), B:=set(
"B
",
0, [rotation:=-
30]), C:= cap(A,B),Color:=red,FillStyle:=full, FillOpacity:=
0.5, FillColor:=pink, Ligne(C,
0)
</p>
475 <h3 id=
"capB">capB
</h3>
477 <li><p><b>capB(
<ensemble1
>,
<ensemble2
> )
</b></p></li>
478 <li><p><u>Description
</u> : renvoie le contour de l
’intersection de
<<em>ensemble1
</em>> avec
<<em>ensemble2
</em>> sous forme d
’une liste de points de contr
ôles qui doit
être dessin
ée avec la macro
<a href=
"#drawSet">drawSet
</a>. Ces deux ensembles sont doivent
également
être deux listes de points de contr
ôle repr
ésentant des courbes ferm
ées, orient
ées dans le meme sens, ayant une forme relativement simple. La macro
<a href=
"#setB">setB
</a> permet de d
éfinir et dessiner des ensembles.
</p></li>
479 <li><p><u>Exemple(s)
</u> : intersection de deux ensembles:
</p></li>
483 <p>Marges(
0,
0,
0,
0),size(
7.5), A:=setB(
"A
",
0, [rotation:=
30]), B:=setB(
"B
",
0, [rotation:=-
30]), C:= capB(A,B),Color:=red,FillStyle:=full, drawSet(C, [FillOpacity:=
0.5, FillColor:=pink])
</p>
486 <h3 id=
"carre">carre
</h3>
488 <li><p><b>carre(
<A
>,
<B
>,
<1 ou -
1> )
</b></p></li>
489 <li><p><u>Description
</u> : renvoie la liste des sommets du carr
é de sommets cons
écutifs A et B,
1=sens direct.
</p></li>
491 <h3 id=
"cup">cup
</h3>
493 <li><p><b>cup(
<ensemble1
>,
<ensemble2
> )
</b></p></li>
494 <li><p><u>Description
</u> : renvoie le contour de la r
éunion de
<<em>ensemble1
</em>> avec
<<em>ensemble2
</em>> sous forme d
’une liste de points. Ces deux ensembles doivent
être des courbes ferm
ées, orient
ées dans le meme sens, ayant une forme relativement simple. La macro
<a href=
"#set">set
</a> permet de d
éfinir et dessiner des ensembles.
</p></li>
495 <li><p><u>Exemple(s)
</u> : r
éunion de deux ensembles:
</p></li>
499 <p>Marges(
0,
0,
0,
0),size(
7.5), A:=set(
"A
",
0, [rotation:=
30]), B:=set(
"B
",
0, [rotation:=-
30]), C:= cup(A,B),Color:=red,FillStyle:=full, FillOpacity:=
0.5, FillColor:=pink, Ligne(C,
0)
</p>
502 <h3 id=
"cupB">cupB
</h3>
504 <li><p><b>cupB(
<ensemble1
>,
<ensemble2
> )
</b></p></li>
505 <li><p><u>Description
</u> : renvoie le contour de la r
éunion de
<<em>ensemble1
</em>> avec
<<em>ensemble2
</em>> sous forme d
’une liste de points de contr
ôles qui doit
être dessin
ée avec la macro
<a href=
"#drawSet">drawSet
</a>. Ces deux ensembles sont doivent
également
être deux listes de points de contr
ôle repr
ésentant des courbes ferm
ées, orient
ées dans le meme sens, ayant une forme relativement simple. La macro
<a href=
"#setB">setB
</a> permet de d
éfinir et dessiner des ensembles.
</p></li>
506 <li><p><u>Exemple(s)
</u> : intersection de deux ensembles:
</p></li>
510 <p>Marges(
0,
0,
0,
0),size(
7.5), A:=setB(
"A
",
0, [rotation:=
30]), B:=setB(
"B
",
0, [rotation:=-
30]), C:= cupB(A,B),Color:=red,FillStyle:=full, drawSet(C, [FillOpacity:=
0.5, FillColor:=pink])
</p>
513 <h3 id=
"cutBezier">cutBezier
</h3>
515 <li><p><b>cutBezier(
<courbe de b
ézier
>,
<point
>,
<avant(
0/
1)
> )
</b></p></li>
516 <li><p><u>Description
</u> : renvoie un arc de b
ézier correspondant
à la
<<em>courbe de b
ézier
</em>> coup
ée avant ou apr
ès le
<<em>point
</em>>, en fonction du param
ètre
<<em>avant
</em>>. Le r
ésultat doit
être dessin
é par la commande
<a href=
"#Bezier">Bezier
</a>.
</p></li>
518 <h3 id=
"Cvx2d">Cvx2d
</h3>
520 <li><p><b>Cvx2d(
<liste
> )
</b></p></li>
521 <li><p><u>Description
</u> : renvoie l
’enveloppe convexe de la
<<em>liste
</em>> selon l
’algorithme de {Ronald Graham}. La
<<em>liste
</em>> ne doit pas contenir la constante
<em>jump
</em>.
</p></li>
522 <li><p><u>Exemple(s)
</u> : on choisit al
éatoirement
<span class=
"math">10</span> points dans le pav
é <span class=
"math">[
 -
 4,
 4]
 × [
 -
 4,
 4]
</span> que l
’on place dans une variable
<span class=
"math"><em>P
</em></span> tout en dessinant chacun d
’eux avec son num
éro, puis on dessine l
’enveloppe convexe.
</p></li>
526 <p>Marges(
0,
0,
0,
0),size(
7.5), P:= for k from
1 to
10 do z:=
8*Rand()-
4+i*(
8*Rand()-
4), LabelDot(z, k,
"N
",
1), z od, Ligne(Cvx2d(P),
1)
</p>
529 <h3 id=
"Intersec">Intersec
</h3>
531 <li><p><b>Intersec(
<objet1
>,
<objet2
> )
</b></p></li>
532 <li><p><u>Description
</u> : renvoie la liste des points d
’intersection des deux objets graphiques. Ces deux objets peuvent
être soit des commandes graphiques (Cercle(), Droite(), ...) ou bien le nom d
’un
él
ément graphique d
éj
à cr
éé.
</p></li>
533 <li><p><u>Exemple(s)
</u> : la commande
<span style=
"color:red">Intersec( Cercle(
0,
1), Droite(-
1,i/
2) )
</span> renvoie:
</p>
534 <p><div style=
"text-align:center"><span style=
"color:magenta">[
0.59851109463416+
0.79925554731708*i, -
0.99794539275033+
0.00102730362483*i]
</span>.
</div></p></li>
536 <h3 id=
"med">med
</h3>
538 <li><p><b>med(
<A
>,
<B
> )
</b></p></li>
539 <li><p><u>Description
</u> : renvoie une liste de deux points de la m
édiatrice de
<span class=
"math">[
<em>A
</em>,
 <em>B
</em>]
</span>.
</p></li>
541 <h3 id=
"parallel">parallel
</h3>
543 <li><p><b>parallel(
<[A,B]
>,
<C
> )
</b></p></li>
544 <li><p><u>Description
</u> : renvoie une liste de deux points de la parall
èle
à <span class=
"math">(
<em>A
</em><em>B
</em>)
</span> passant par
<span class=
"math"><em>C
</em></span>.
</p></li>
546 <h3 id=
"parallelo">parallelo
</h3>
548 <li><p><b>parallelo(
<A
>,
<B
>,
<C
> )
</b></p></li>
549 <li><p><u>Description
</u> : renvoie la liste des sommets du parall
èlogramme de sommets cons
écutifs
<span class=
"math"><em>A
</em></span>,
<span class=
"math"><em>B
</em></span>,
<span class=
"math"><em>C
</em></span>.
</p></li>
551 <h3 id=
"perp">perp
</h3>
553 <li><p><b>perp(
<[A, B]
>,
<C
> )
</b></p></li>
554 <li><p><u>Description
</u> : renvoie une liste de deux points de la perpendiculaire
à <span class=
"math">(
<em>A
</em><em>B
</em>)
</span> passant par
<span class=
"math"><em>C
</em></span>.
</p></li>
556 <h3 id=
"polyreg">polyreg
</h3>
558 <li><p><b>polyreg(
<A
>,
<B
>,
<nombre de cot
és
> )
</b></p></li>
559 <li><p><u>Description
</u> : renvoie la liste des sommets du polyg
ône r
égulier de centre
<span class=
"math"><em>A
</em></span>, passant par
<span class=
"math"><em>B
</em></span> et avec le nombre de c
ôt
és indiqu
é.
</p></li>
563 <li><p><strong>polyreg(
<A
>,
<B
>,
<nombre de cot
és + i*sens
> )
</strong> avec sens = +/-
1</p></li>
564 <li><p><u>Description
</u> : renvoie la liste des sommets du polyg
ône r
égulier de sommets cons
écutifs
<span class=
"math"><em>A
</em></span> et
<span class=
"math"><em>B
</em></span>, avec le nombre de c
ôt
és indiqu
é et dans le sens indiqu
é (
1 pour le sens trigonom
étrique).
</p></li>
566 <h3 id=
"pqGoneReg">pqGoneReg
</h3>
568 <li><p><b>pqGoneReg(
<centre
>,
<sommet
>,
<[p,q]
> )
</b></p></li>
569 <li><p><u>Description
</u> : renvoie la liste des sommets du
<<em>p/q
</em>>-g
ône r
égulier d
éfini par le
<<em>centre
</em>> et un
<<em>sommet
</em>>.
</p></li>
570 <li><p><u>Exemple(s)
</u> : voir
<a href=
"#DpqGoneReg">ici
</a>.
</p></li>
572 <h3 id=
"rect">rect
</h3>
574 <li><p><b>rect(
<A
>,
<B
>,
<C
> )
</b></p></li>
575 <li><p><u>Description
</u> : renvoie la liste des sommets du rectangle de sommets cons
écutifs
<span class=
"math"><em>A
</em></span>,
<span class=
"math"><em>B
</em></span>, le c
ôt
é oppos
é passant par
<span class=
"math"><em>C
</em></span>.
</p></li>
577 <h3 id=
"setminus">setminus
</h3>
579 <li><p><b>setminus(
<ensemble1
>,
<ensemble2
> )
</b></p></li>
580 <li><p><u>Description
</u> : renvoie le contour de la diff
érence
<<em>ensemble1
</em>> -
<<em>ensemble2
</em>> sous forme d
’une liste de points. Ces deux ensembles doivent
être des courbes ferm
ées, orient
ées dans le meme sens, ayant une forme relativement simple. La macro
<a href=
"#set">set
</a> permet de d
éfinir et dessiner des ensembles.
</p></li>
581 <li><p><u>Exemple(s)
</u> : diff
érence de deux ensembles:
</p></li>
585 <p>Marges(
0,
0,
0,
0),size(
7.5), A:=set(
"A
",
0, [rotation:=
30]), B:=set(
"B
",
0, [rotation:=-
30]), C:= setminus(A,B),Color:=red,FillStyle:=full, FillOpacity:=
0.5, FillColor:=pink, Ligne(C,
0)
</p>
588 <h3 id=
"setminusB">setminusB
</h3>
590 <li><p><b>setminusB(
<ensemble1
>,
<ensemble2
> )
</b></p></li>
591 <li><p><u>Description
</u> : renvoie le contour de la diff
érence
<<em>ensemble1
</em>> -
<<em>ensemble2
</em>> sous forme d
’une liste de points de contr
ôles qui doit
être dessin
ée avec la macro
<a href=
"#drawSet">drawSet
</a>. Ces deux ensembles sont doivent
également
être deux listes de points de contr
ôle repr
ésentant des courbes ferm
ées, orient
ées dans le meme sens, ayant une forme relativement simple. La macro
<a href=
"#setB">setB
</a> permet de d
éfinir et dessiner des ensembles.
</p></li>
592 <li><p><u>Exemple(s)
</u> : diff
érence de deux ensembles:
</p></li>
596 <p>Marges(
0,
0,
0,
0),size(
7.5), A:=setB(
"A
",
0, [rotation:=
30]), B:=setB(
"B
",
0, [rotation:=-
30]), C:= setminusB(A,B),Color:=red,FillStyle:=full, drawSet(C, [FillOpacity:=
0.5, FillColor:=pink])
</p>
599 <h2 id=
"gestion-du-flattened-postscript">Gestion du flattened postscript
</h2>
600 <p>Il est possible de transformer un fichier pdf ou un fichier postscript en
<em>flattened postscript
</em> gr
âce
à l
’utilitaire
<em>pstoedit
</em> (
<a href=
"http://www.pstoedit.net/"><code class=
"url">http://www.pstoedit.net/
</code></a>). Dans le fichier obtenu, tout est chemin, y compris le texte. TeXgraph peut r
écup
érer tous les chemins d
’un fichier
écrit en
<em>flattened postscript
</em>. C
’est que proposent les macros de cette section.
</p>
601 <h3 id=
"conv2FlatPs">conv2FlatPs
</h3>
603 <li><p><b>conv2FlatPs(
<fichier entr
ée
>,
<fichier sortie
> [, dossier de travail] )
</b></p></li>
604 <li><p><u>Description
</u> : cette macro invoque l
’utilitaire
<em>pstoedit
</em> pour transformer le
<<em>fichier entr
ée
</em>> en
<em>flattened postscript
</em> dans le
<<em>fichier sortie
</em>>. Le fichier
<<em>fichier entr
ée
</em>> doit
être un fichier pdf ou ps.
</p></li>
606 <h3 id=
"drawFlatPs">drawFlatPs
</h3>
608 <li><p><b>drawFlatPs(
<affixe
>,
<chemins lus par loadFlatPs
> [, options] )
</b></p></li>
609 <li><p><u>Description
</u> : cette macro dessine
à l
’écran l
’ensemble des chemins lus dans un fichier en
<em>flattened postscript
</em> par la macro
<a href=
"#loadFlatPs">loadFlatPs
</a>. L
’affichage se fait
à l
’<<em>affixe
</em>> demand
é. Le param
ètre
<<em>options
</em>> est une liste (facultative) de la forme
<span style=
"font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]
</span>, les options sont:
</p>
611 <li><p><span style=
"color:blue">scale :=
< nombre positif
></span>:
échelle,
1 par d
éfaut.
</p></li>
612 <li><p><span style=
"color:blue">position :=
< center/left/right/...
></span>: position de l
’affixe par rapport
à l
’image, center par d
éfaut (fonctionne comme la variable LabelStyle).
</p></li>
613 <li><p><span style=
"color:blue">color :=
< couleur
></span>: pour imposer une couleur,
<em>Nil
</em> par d
éfaut ce qui signifie qu
’on prend la couleur d
’origine.
</p></li>
614 <li><p><span style=
"color:blue">rotation :=
< angle en degr
és
></span>:
0 par d
éfaut.
</p></li>
615 <li><p><span style=
"color:blue">hollow :=
< 0/
1 ></span>: avec la valeur
0 (par d
éfaut) les remplissages sont effectu
és.
</p></li>
616 <li><p><span style=
"color:blue">select :=
< liste des num
éros de chemin
à montrer
></span>:
<em>Nil
</em> par d
éfaut, ce qui signifie tous les chemins.
</p></li>
619 <h3 id=
"drawTeXlabel">drawTeXlabel
</h3>
621 <li><p><b>drawTeXlabel(
<affixe
>,
<variable contenant la formule TeX lue par loadFlatPs
>, [, options] )
</b></p></li>
622 <li><p><u>Description
</u> : cette macro invoque la macro
<a href=
"#drawFlatPs">drawFlatPs
</a> pour dessiner une expression qui a
ét
é au pr
éalable compil
ée par . Le param
ètre
<<em>options
</em>> est une liste (facultative) de la forme
<span style=
"font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]
</span>, les options sont:
</p>
624 <li><p><span style=
"color:blue">scale :=
< nombre
>0 ></span>:
échelle,
1 par d
éfaut.
</p></li>
625 <li><p><span style=
"color:blue">hollow :=
< 0/
1 ></span>: avec la valeur
0 (par d
éfaut) les remplissages sont effectu
és.
</p></li>
627 <p>Cette macro est utilis
ée en interne par la macro
<a href=
"#NewTeXlabel">NewTeXlabel
</a>.
</p></li>
629 <h3 id=
"loadFlatPs">loadFlatPs
</h3>
631 <li><p><b>loadFlatPs(
<fichier en flattened postscript
>, [, options] )
</b></p></li>
632 <li><p><u>Description
</u> : cette macro charge un
<<em>fichier en flattened postscript
</em>>, adpate les coordonn
ées des points et renvoie la liste des chemins (que l
’on peut alors dessiner avec la macro
<a href=
"#drawFlatPs">drawFlatPs
</a>). Le param
ètre
<<em>options
</em>> est une liste (facultative) de la forme
<span style=
"font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]
</span>, les options sont:
</p>
634 <li><p><span style=
"color:blue">width :=
< nombre
>0 ></span>: largeur en cm,
<em>Nil
</em> par d
éfaut pour largeur naturelle.
</p></li>
635 <li><p><span style=
"color:blue">height :=
< nombre
>0 ></span>: hauteur en cm,
<em>Nil
</em> par d
éfaut pour hauteur naturelle.
</p></li>
637 <li><p>supposons que vous ayez le fichier
<em>circuit.pdf
</em> dans le dossier temporaire de TeXgraph, la commande suivante dans un
él
ément graphique Utilisateur:
</p></li>
639 <pre><code> [conv2FlatPs(
"circuit.pdf
",
"circuit.fps
", @TmpPath),
640 stock:= loadFlatPs( [@TmpPath,
"circuit.fps
"] ),
641 drawFlatPs(
0, stock, [scale:=
1, hollow:=
1] )
644 <p>va permettre de charger et dessiner le contenu de ce fichier dans TeXgraph, sans faire les remplissages.
</p>
645 <h3 id=
"NewTeXlabel">NewTeXlabel
</h3>
647 <li><p><b>NewTeXlabel(
<nom
>,
<affixe
>,
<formule TeX
>, [, options] )
</b></p></li>
648 <li><p><u>Description
</u> : cette macro va demander
à {} de compiler la formule dans un fichier pdf, ce fichier sera ensuite converti en un fichier eps par pstoedit, puis celui-ci sera charg
é par loadFlatPs et stock
é dans une variable globale appel
ée TeX_+nom. Un
él
ément graphique appel
é <<em>nom
</em>> est cr
éée pour dessiner la formule avec drawTeXLabel. Le param
ètre
<<em>options
</em>> est une liste (facultative) de la forme
<span style=
"font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]
</span>, les options sont:
</p>
650 <li><p><span style=
"color:blue">dollar :=
< 0/
1 ></span>: indique
à TeXgraph s
’il doit ajouter les d
élimiteurs
<code>\[
</code> et
<code>\]
</code> autour de la formule,
1 par d
éfaut.
</p></li>
651 <li><p><span style=
"color:blue">scale :=
< nombre
>0 ></span>:
échelle,
1 par d
éfaut.
</p></li>
652 <li><p><span style=
"color:blue">hollow :=
< 0/
1 ></span>: avec la valeur
0 (par d
éfaut) les remplissages sont effectu
és.
</p></li>
654 <p>Dans les options, les attributs suivants peuvent
également
être utilis
és:
<span style=
"font-style:italic;color:red">LabelStyle
</span>,
<span style=
"font-style:italic;color:red">LabelAngle
</span> et
<span style=
"font-style:italic;color:red">Color
</span>.
</p>
655 <p>Voici la d
éfinition de cette macro:
</p>
657 <pre><code>[dollar:=
1, scale:=
1, hollow:=
0, $options:=%
4,
658 $aux:=OpenFile([@TmpPath,
"formula.tex
"]),
659 if dollar then WriteFile([
"\[
",%
3,
"\]
"]) else WriteFile(%
3) fi,
661 Exec(
"pdflatex
",
"-interaction=nonstopmode tex2FlatPs.tex
",@TmpPath,
1),
662 Exec(
"pstoedit -dt -pta -f ps -r2400x2400
",
"tex2FlatPs.pdf tex2FlatPs.eps
",@TmpPath,
1),
663 NewVar([
"TeX_
",%
1],loadFlatPs([@TmpPath,
"tex2FlatPs.eps
"])),
664 NewGraph(%
1, [
"drawTeXlabel(
",%
2,
", TeX_
",%
1,
", [scale:=
",scale,
", hollow:=
",hollow,
"])
"]),
669 <p>La formule est
écrite dans le fichier
<em>formula.tex
</em>, puis on compile le fichier
<em>tex2FlatPs.tex
</em> suivant:
</p>
670 <pre><code> \documentclass[
12pt]{article}
671 \usepackage{amsmath,amssymb}
679 <p>et on convertit le r
ésultat en
<em>flattened postscript
</em> avant de le charger.
</p>
680 <p>Cette macro s
’utilise dans la ligne de commande ou bien dans des macros qui cr
éent des
él
éments graphiques, mais pas directement dans un
él
ément graphique Utilisateur, exemple:
</p>
681 <p><div style=
"text-align:center"><span style=
"color:red">NewTeXlabel(
"label1
",
0,
"\frac{
\pi}{
\sqrt{
2}}
", [scale:=
1.5, Color:=blue, LabelAngle:=
45])
</span></div></p></li>
683 <h2 id=
"autres">Autres
</h2>
684 <h3 id=
"pdfprog">pdfprog
</h3>
686 <li><p><b>pdfprog()
</b>.
</p></li>
687 <li><p><u>Description
</u> : cette macro est utilis
ée en interne pour m
émoriser le programme utilis
é pour faire la conversion du format eps vers le format pdf. Par d
éfaut, cette macro contient la chaine:
<span style=
"font-style:italic">"epstopdf
"</span>. En
éditant le fichier TeXgraph.mac, vous pouvez modifier le programme utilis
é.
</p></li>