Ciblage de Courbe...
[geshi.git] / docs / texgraph / chap08.tex
1 \chapter{Fonctions et macros graphiques}\label{cmdFoncGraph}
2
3
4 Ces fonctions et macros créent un élément graphique au moment de leur évaluation et renvoient un résultat égal à \Nil,
5 elles ne sont utilisables \Mytextbf{que lors de la création d'un élément graphique "Utilisateur"}\footnote{Option
6 \textsl{Elément graphique/Créer/Utilisateur} du menu.}.
7
8 Elles peuvent être utilisées dans des macros, mais elles ne seront évaluées que si ces macros sont exécutées lors de la
9 création d'un élément graphique "Utilisateur".
10
11
12 \section{Fonctions graphiques prédéfinies}
13
14 Notations:
15
16 <argument>: signifie que l'argument est \Mytextbf{obligatoire}.
17
18 [, argument]: signifie que l'argument est \Mytextbf{facultatif}.
19
20
21 \subsection{Axes}\label{cmdAxes}
22
23 \begin{itemize}
24 \item \util \textbf[Axes()]{Axes( <origine>, <graduationX + i*graduationY> [, position label origine] )}.
25
26 \item \desc dessine les axes, \argu{origine} est l'affixe du point d'intersection des axes, \argu{graduationX} est le
27 pas pour les graduations sur l'axe Ox, et \argu{graduationY} celui de l'axe Oy, une graduation égale à zéro signifie
28 l'absence de graduation. La longueur des graduations est dans la variable globale \co{xyticks} que l'on peut modifier,
29 la distance des labels à l'extrêmité des graduations est dans la variable \co{xylabelsep} qui peut également être
30 modifiée.
31
32 Le troisième paramètre est facultatif, il permet de préciser la position des labels de l'origine (à l'intersection des
33 axes), c'est un complexe: $a+ib$, la partie réelle concerne l'abscisse de l'origine et l'autre concerne l'ordonnée. Ces
34 deux nombres peuvent prendre trois valeurs:
35
36 \begin{itemize}
37 \item $0$: le label n'apparaît pas,
38 \item $1$: le label est affiché comme celui des autres graduations,
39 \item $2$: le label est décalé pour ne pas chevaucher l'autre axe (valeur par défaut).
40 \end{itemize}
41
42 \item On peut modifier dans les \textit{Attributs}: le style de ligne, l'épaisseur, la couleur et la taille des labels.
43 \end{itemize}
44
45 \begin{demo}{Commande Axes}{Axes}
46 \begin{texgraph}[name=Axes,export=pgf]
47 view(-5,4,-5,5),Marges(0.5,0,0,0.5),
48 size(7.5), Width:=2,
49 Color:=lightgray, Grille(-5-5*i,(1+i)/2),
50 Width:=4,
51 Color:=gray, Grille(-5-5*i,(1+i)),
52 Color:=black, Arrows:=1,
53 Axes(-5-5*i,1+i,1+i),Arrows:=0,
54 LabelAxe(x,-pi-5*i,"$-\pi$",2-i,1),
55 LabelAxe(x,pi-5*i,"$\pi$",2+i,1),
56 SaveAttr(),
57 FillStyle:=full, FillColor:=lightblue,
58 FillOpacity:=0.5,
59 domaine2(3*sin(x)^3, -5,-pi,pi),
60 RestoreAttr(),
61 Color:=red, Arrows:=0, Width:=8,
62 Cartesienne( 3*sin(x)^3 )
63 \end{texgraph}
64 \end{demo}
65
66
67 \subsection{(Poly-)Bezier}\label{cmdBezier}
68
69 \begin{itemize}
70 \item \util \textbf[Bezier()]{Bezier( <liste de points> )}.
71
72 \item \desc dessine une succession de courbes de \textsc{Bezier} (avec éventuellement des segments de droite).
73 Il y a plusieurs possibilités pour la liste de points:
74 \begin{enumerate}
75 \item une liste de trois points $[A,C,B]$, il s'agit alors d'une courbe de Bezier d'origine \argu{A} et
76 d'extrémité \argu{B} avec un point de contrôle \argu{C}, c'est la courbe paramétrée par:
77
78 \[(1-t)^2A+2t(1-t)C+t^2B\]
79
80 \item une liste de 4 points ou plus: [A1, C1, C2, A2, C3, C4, A3...]: il s'agit alors d'une succession de
81 courbes de Bezier à 2 points de contrôles, la première va de A1 à A2, elle est contrôlée par C1, C2 (paramétrée par
82 $(1-t)^3tA1+3(1-t)^2tC1]+3(1-t)t^2C2+t^3A2$), la deuxième va de A2 à A3 et est contrôlée par C3,C4 ...etc. Une exception
83 toutefois, on peut remplacer les deux points de contrôle par la constante \jump, dans ce cas on saute directement de A1
84 à A2 en traçant un segment de droite.
85 \end{enumerate}
86 \item Le nombre de points calculés (par courbe) est modifiable dans les \textit{Attributs} (variable \co{NbPoints}).
87 \end{itemize}
88
89 \begin{demo}{Commande Bezier}{Bezier}
90 \begin{texgraph}[name=Bezier,export=pgf]
91 view(-4,4,-4,5),Marges(0,0,0,0),
92 size(7.5), Width:=8,
93 A:=-3+4*i, B:=3+i, C:=3-3*i, D:=-3-3*i,
94 C1:=4.5*i,C2:=-2*i, C3:=2-i, C4:=-2,
95 FillStyle:=full, FillColor:=lightblue,Color:=red,
96 Bezier(A,C1,C2,B,jump,C,C3,C4,D,jump,A),
97 FillStyle:=none, DotStyle:=cross,
98 DotScale:=2,Color:=black,
99 LabelDot(A,"$A$","N",1),
100 LabelDot(B,"$B$","E",1),
101 LabelDot(C,"$C$","SE",1),
102 LabelDot(D,"$D$","SO",1),
103 LabelDot(C1,"$C_1$","E",1),
104 LabelDot(C2,"$C_2$","SO",1),
105 LabelDot(C3,"$C_3$","N",1),
106 LabelDot(C4,"$C_4$","N",1),
107 LineStyle:=userdash,
108 DashPattern:=[5,2,0.5,2], Width:=6,
109 LineCap:=round,
110 Ligne([A,C1,C2,B,jump,C,C3,C4,D],0)
111 \end{texgraph}
112 \end{demo}
113
114 \subsection{Cartesienne}\label{cmdCartesienne}
115
116 \begin{itemize}
117 \item \util \textbf[Cartesienne()]{Cartesienne( <f(x)> [, n, 1] )}.
118
119 \item \desc trace la courbe cartésienne d'équation $y=f(x)$. Le paramètre optionnel \argu{n} est un entier (égal à 5 par
120 défaut) qui permet de faire varier le pas de la manière suivante: lorsque la distance entre deux points consécutifs est
121 supérieur à un certain seuil alors on calcule un point intermédiaire [par dichotomie], ceci peut être répété n fois. Si
122 au bout de n itérations la distance entre deux points consécutifs est toujours supérieure au seuil, et si la valeur
123 optionnelle $1$ est présente, alors une discontinuité (\jump) est insérée dans la liste des points.
124 \end{itemize}
125
126
127 \begin{demo}{Courbe avec discontinuités}{Cartesienne}
128 \begin{texgraph}[name=Cartesienne,export=pgf]
129 view(-2,2,-0.1,2),Marges(0.5,0.5,0.5,0.5),
130 size(7.5), tMin:=-2, tMax:=2,
131 Color:=darkgray, Width:=8,
132 LineStyle:=dotted, Grille(0,0.5*(1+i)),
133 Color:=black, LineStyle:=solid,Axes(0,1+i,1),
134 NbPoints:=100, Width:=8, Color:=darkseagreen,
135 Cartesienne(x*Ent(1/x),5,1)
136 \end{texgraph}
137 \end{demo}
138
139 \subsection{Courbe}\label{cmdCourbe}
140
141 \begin{itemize}
142 \item \util \textbf[Courbe()]{Courbe( <f(t)> [, n, 1] )}.
143
144 \item \desc trace la courbe paramétrée par \argu{f(t)} où $f$ est à valeurs complexes.
145
146 Le paramètre optionnel \argu{n} est un entier (égal à 5 par défaut) qui permet de faire varier le pas de la manière
147 suivante:
148 lorsque la distance entre deux points consécutifs est supérieur à un certain seuil alors on calcule un point
149 intermédiaire (par dichotomie), ceci peut être répété $n$ fois. Si au bout de $n$ itérations la distance entre deux
150 points consécutifs est toujours supérieure au seuil, et si la valeur optionnelle $1$ est présente, alors une
151 discontinuité (\jump) est insérée dans la liste des points.
152 \end{itemize}
153
154 \subsection{Droite}\label{cmdDroite}
155
156 \begin{itemize}
157 \item \util \textbf[Droite()]{Droite( <A>, <B> [, C] )}.
158
159 \item \desc trace la droite $(AB)$ lorsque le troisième argument \argu{C} est omis, sinon c'est la droite d'équation
160 cartésienne \argu{A}x+\argu{B}y=\argu{C}.
161 \end{itemize}
162
163
164 \begin{demo}{Développée d'une ellipse}{Droite}
165 \begin{texgraph}[name=Droite,export=pgf]
166 view(-5,5,-5,5),Marges(0,0,0,0),
167 size(7.5),
168 F:=sqrt(7), F':=-F, {foyers}
169 Width:=1, Color:=darkgray,
170 for t from -pi to pi step 0.1 do
171 M:=4*cos(t)+3*i*sin(t),
172 Vn:=(M-F)/abs(M-F)+(M-F')/abs(M-F'),
173 Droite(M,M+Vn),{normale à l'ellipse}
174 od,
175 Width:=8, Color:=red,
176 Ellipse(0,4,3),
177 LabelDot(F,"$F$","S",1),
178 LabelDot(F',"$F'$","S",1)
179 \end{texgraph}
180 \end{demo}
181
182 \subsection{Ellipse}\label{cmdEllipse}
183
184 \begin{itemize}
185 \item \util \textbf[Ellipse()]{Ellipse( <A>, <Rx>, <Ry> [, inclinaison] )}.
186
187 \item \desc trace une ellipse de centre \argu{A} de rayons \argu{Rx} et \argu{Ry} sur les axes respectifs $Ox$ et $Oy$.
188 Le dernier paramètre \argu{inclinaison} est un angle en degrés (nul par défaut) qui indique l'inclinaison de l'ellipse
189 par rapport à l'horizontale.
190 \end{itemize}
191
192 \begin{demo}{Ellipses}{Ellipse}
193 \begin{texgraph}[name=ellipse,export=pgf]
194 view(-5.25,5.25,-5.25,5.25),
195 Marges(0,0,0,0), size(7.5),
196 background(full,blue),
197 Width:=4, Color:=white,
198 inclin:=[0,35,-35],
199 for z in inclin do
200 Ellipse(0,5,2,z)
201 od,
202 Width:=2*mm, Ellipse(0,1.5,4.5),
203 Label(-0.1,
204 "\resizebox{6cm}{3.5cm}{R\ T\ F}")
205 \end{texgraph}
206 \end{demo}
207
208 \subsection{EllipticArc}\label{cmdEllipticArc}
209
210 \begin{itemize}
211 \item \util \textbf[EllipticArc()]{EllipticArc( <B>, <A>, <C>, <Rx>, <Ry> [, sens] )}.
212
213 \item \desc trace un arc d'ellipse dont les axes sont $Ox$ et $Oy$ et le centre \argu{A},
214 le rayon sur $Ox$ est \argu{Rx}, et celui sur $Oy$ est \argu{Ry}. L'arc est tracé partant de la droite $(AB)$ jusqu'à la
215 droite $(AC)$, l'argument facultatif \argu{sens} indique: le sens trigonométrique si sa valeur est $1$ (valeur par
216 défaut), le sens contraire si sa valeur est $-1$.
217 \end{itemize}
218
219 \begin{demo}{Commande EllipticArc}{EllipticArc}
220 \begin{texgraph}[name=Arc,export=pgf]
221 view(-2.25,3.75,-2,5),Marges(0,0,0,0),size(7.5),
222 A:=0, B:=3+i, C:=2+4*i,
223 DotScale:=2, Width:=8,
224 Ligne([B,A,C],0), Color:=red,
225 LabelDot(A,"$A$","S",1),
226 LabelDot(B,"$B$","N",1),
227 LabelDot(C,"$C$","SE",1),
228 Arrows:=1, Color:=blue,
229 EllipticArc(B,A,C,2,1,-1),
230 EllipticArc(B,A,C,2,3,1)
231 \end{texgraph}
232 \end{demo}
233
234 Remarque: pour un arc de cercle, il suffit de prendre \argu{Rx} et \argu{Ry} égaux. Mais le plus simple est d'utiliser
235 la macro \Helpref{Arc}{macArc} qui remplace la commande \Mytextbf{Arc} de l'ancienne version.
236
237
238 \subsection{EquaDif}\label{cmdEquadif}
239
240 \begin{itemize}
241 \item \util \textbf[EquaDif()]{EquaDif( <f(t,x,y)>, <t0>, <x0 + i*y0> [, mode] )}.
242
243 \item \desc trace une solution approchée de l'équation différentielle: $x'(t)+iy'(t)=f(t,x,y)$ avec la condition
244 initiale $x(t0)=x0$ et $y(t0)=y0$. Le dernier paramètre est facultatif et peut valoir 0, 1 ou 2:
245 \begin{itemize}
246 \item \argu{mode}=0: la courbe représente les points de coordonnées $(x(t),y(t))$, c'est la valeur par défaut.
247 \item \argu{mode}=1: la courbe représente les points de coordonnées $(t,x(t))$.
248 \item \argu{mode}=2: la courbe représente les points de coordonnées $(t,y(t))$.
249 \end{itemize}
250 C'est la méthode de \textsc{Runge-Kutta} d'ordre 4 qui est utilisée.
251 \item \exem l'équation $x''-x'-tx=\sin(t)$ avec la condition initiale $x(0)=-1$ et $x'(0)=1/2$, se met sous la
252 forme:
253 \[\begin{pmatrix}
254 X'\\Y'\end{pmatrix}=\begin{pmatrix} 0&1\\t&1\end{pmatrix}\begin{pmatrix}X\\Y\end{pmatrix}+
255 \begin{pmatrix}0\\\sin(t)\end{pmatrix}\] en posant $X=x$ et $Y=x'$:
256 \end{itemize}
257
258
259 \begin{demo}{\'Equation différentielle}{EquaDif}
260 \begin{texgraph}[name=EquaDif,export=pgf]
261 view(-10.5,2.5,-1.5,4.5),Marges(0,0,0,0),
262 size(7.5,0), Arrows:=1, Width:=4,
263 Axes(0,1+i), Arrows:=0,
264 LabelAxe(y,4.25*i,"$x$"),
265 LabelAxe(x,2,"$t$",2),
266 Width:=8, Color:=red, tMin:=-10, tMax:=2,
267 EquaDif(y+i*(t*x+y+sin(t)),0,-1+i/2, 1),
268 Color:=black, LabelStyle:=stacked,
269 Label(-6+2*i,
270 "$x''-tx'-x=\sin(t)$\\
271 avec $x(0)=-1$ et $x'(0)=\frac12$")
272 \end{texgraph}
273 \end{demo}
274
275
276 \subsection{Grille}\label{cmdGrille}
277
278 \begin{itemize}
279 \item \util \textbf[Grille()]{Grille( <origine>, <graduationX + i*graduationY> )}.
280
281 \item \desc dessine une grille, \argu{origine} est l'affixe du point considéré comme origine, \argu{graduationX} est le
282 pas des graduations sur l'axe Ox, et \argu{graduationY} celui de l'axe Oy, une graduation égale à zéro signifie
283 l'absence de graduation.
284 \item On peut modifier dans les \textit{Attributs} le style de ligne, l'épaisseur et la couleur. La grille de ne fait
285 pas appraître de graduations, on peut dessiner des axes par dessus.
286 \end{itemize}
287
288 \subsection{Implicit}\label{cmdImplicit}
289
290 \begin{itemize}
291 \item \util \textbf[Implicit()]{Implicit( <f(x,y)> [, n, m] )}.
292 \item \desc trace la courbe implicite d'équation $f(x,y)=0$. L'intervalle des abscisses est subdivisé en \argu{n}
293 parties et l'intervalle des ordonnées en \argu{m} parties, par défaut $n=m=25$. Sur chaque pavé ainsi obtenu on teste
294 s'il y a un changement de signe, auquel cas on applique une dichotomie sur les bords du pavé.
295 \end{itemize}
296
297
298 \begin{demo}{\'Equation $\sin(xy)=0$}{Implicit}
299 \begin{texgraph}[name=Implicit,export=pgf]
300 view(-5,5,-5,5),Marges(0,0,0,0),
301 size(7.5), Arrows:=1, Width:=4,
302 Axes(0,1+i), Arrows:=0,
303 Width:=8, Color:=red,
304 Implicit( sin(x*y) )
305 \end{texgraph}
306 \end{demo}
307
308 \subsection{Label}\label{cmdLabel}
309
310 \begin{itemize}
311 \item \util \textbf[Label()]{Label( <affixe1>, <texte1>,..., <affixeN>, <texteN> )}.
312
313 \item \desc place la chaîne de caractères \argu{texte1} à la position \argu{affixe1} ... etc. Les paramètres
314 \argu{texte1},..., \argu{texteN} sont donc interprétés comme des \Helpref{chaînes de caractères}{chaine}.
315 \end{itemize}
316
317
318 \begin{demo}{Nommer des points}{Label}
319 \begin{texgraph}[name=Label,export=pgf,
320 preload="PolyedresII.mac"]
321 view(-5,5,-5,5),Marges(0,0,0,0),
322 size(7.5,0),
323 C:=Cube(Origin, M(3,3,0)),
324 S:=Sommets(C), Point3D(S),
325 DrawPoly(C,0), k:=0,
326 for Z in S by 2 do
327 Inc(k,1),
328 Label(Proj3D(Z)+
329 if k>4 then 0.5*i else -0.5*i fi,
330 ["$S_",k,"$"])
331 od
332 \end{texgraph}
333 \end{demo}
334
335 \subsection{Ligne}\label{cmdLigne}
336
337 \begin{itemize}
338 \item \util \textbf[Ligne()]{Ligne( <liste>, <fermée> [, rayon] )}.
339
340 \item \desc trace la ligne polygonale définie par la liste, si le paramètre \argu{fermée} vaut 1, la ligne polygonale
341 sera fermée, si sa valeur est 0 la ligne est ouverte. Si l'argument \argu{rayon} est précisé (0 par défaut), alors les
342 "angles" de la ligne polygonale sont arrondis avec un arc de cercle dont le rayon correspond à l'argument \argu{rayon}.
343 \end{itemize}
344
345 \begin{demo}{Triangle de \textsc{Sierpinski}}{Ligne}
346 \begin{texgraph}[name=Ligne,export=pgf]
347 Marges(0,0,0,0), size(7.5),
348 A:=-5-5*i, B:=5*i, C:=5-5*i,niv:=6,
349 Tr:=[A,B,C,jump], {initial}
350 for k from 1 to niv do
351 Tr:=[hom(Tr,A,0.5),hom(Tr,B,0.5),
352 hom(Tr,C,0.5)]
353 od,
354 FillStyle:=full,FillColor:=blue,
355 Ligne(Tr,1)
356 \end{texgraph}
357 \end{demo}
358
359 \subsection{Path}\label{cmdPath}
360
361 \begin{itemize}
362 \item \util \textbf[Path()]{Path( <liste> [, fermé (0/1)]}
363
364 \item \desc trace le chemin représenté par \argu{liste} et ferme la dernière composante de celui-ci si l'argument
365 optionnel vaut $1$ (sa valeur par défaut est $0$). La liste est une succession de points (affixes) et d'instructions
366 indiquant à quoi correspondent ces points, ces instructions sont:
367
368 \begin{itemize}
369 \item \textbf{line}: relie les points par une ligne polygonale,
370
371 \item \textbf{linearc}: relie les points par une ligne polygonale mais les angles sont arrondis par un arc de cercle,
372 la valeur précédent la commande linearc est interprétée comme le rayon de ces arcs.
373
374 \item \textbf{arc}: dessine un arc de cercle, ce qui nécessite quatre arguments: 3 points et le rayon, plus
375 éventuellement un cinquième argument: le sens (+/- 1), le sens par défaut est 1 (sens trigonométrique).
376
377 \item \textbf{ellipticArc}: dessine un arc d'ellipse, ce qui nécessite cinq arguments: 3 points, le rayonX, le rayonY,
378 plus éventuellement un sixième argument: le sens (+/- 1), le sens par défaut est 1 (sens trigonométrique), plus
379 éventuellement un septième argument: l'inclinaison en degrés du grand axe par rapport à l'horizontale.
380
381 \item \textbf{curve}: relie les points par une spline cubique naturelle.
382
383 \item \textbf{bezier}: relie le premier et le quatrième point par une courbe de bézier (les deuxième et troisième
384 points sont les points de contrôle).
385
386 \item \textbf{circle}: desine un cercle, ce qui necessite deux arguments: un point et le centre, ou bien trois
387 arguments qui sont trois points du cercle.
388
389 \item \textbf{ellipse}: dessine une ellipse, les arguments sont: un point, le centre, rayon rX, rayon rY, inclinaison
390 du grand axe en degrés par rapport à l'horizontale (facultatif).
391
392 \item \textbf{move}: indique un déplacement sans tracé.
393
394 \item \textbf{closepath}: ferme la composante en cours.
395 \end{itemize}
396
397 Par convention, le premier point du tronçon numéro n+1 est le dernier point du tronçon numéro n.
398
399 \item \exem
400 \end{itemize}
401
402 \begin{demo}{Commande Path et Eofill}{Path}
403 \begin{texgraph}[name=Path,export=pgf]
404 view(-5,5,-4,6),Marges(0,0,0,0),size(7.5),
405 Axes(2*i,1+i),Eofill:=1,
406 FillStyle:=full,FillOpacity:=0.9,
407 FillColor:= blue, Width:=8,
408 Path([-4,i,circle,
409 -3+2*i,move,-3,-2,line,
410 0,2,2,-1,arc,
411 3,3+3*i,0.5,linearc,
412 1,-1+5*i,-3+2*i,bezier,
413 closepath,
414 ])
415 \end{texgraph}
416 \end{demo}
417
418
419 \subsection{Point}\label{cmdPoint}
420
421 \begin{itemize}
422 \item \util \textbf[Point()]{Point( <A1>, ..., <An> )}.
423
424 \item \desc représente le nuage de points \argu{A1} ... \argu{An}.
425 \end{itemize}
426
427 \pngtrue
428 \begin{demo}{Diagramme de bifurcation de la suite $u_{n+1}=ru_n(1-u_n)$}{Point}
429 \begin{texgraph}[name=Point,export=eps]
430 view(2.75,4,0,1),
431 Marges(0.75,0.5,0.5,0.5),size(7.5),
432 Axes(Xmin+i*Ymin,0.25+0.2*i,1+i),
433 pas:=0.001, Color:=red,
434 DotScale:=0.1,
435 Point(
436 for r from Xmin to Xmax step pas do
437 u:=0.5,
438 for k from 1 to 25 do u:=r*u*(1-u) od,
439 for k from 1 to 25 do u:=r*u*(1-u), r+i*u od
440 od)
441 \end{texgraph}
442 \end{demo}
443 \pngfalse
444
445 \subsection{Polaire}\label{cmdPolaire}
446
447 \begin{itemize}
448 \item \util \textbf[Polaire()]{Polaire( <r(t)> [, n, 0/1] )}.
449
450 \item \desc trace la courbe polaire d'équation $\rho=r(t)$, \argu{expression}. Le paramètre optionnel \argu{n} est
451 un entier (égal à 5 par défaut) qui permet de faire varier le pas de la manière suivante: lorsque la distance entre deux
452 points consécutifs est supérieur à un certain seuil alors on calcule un point intermédiaire (par dichotomie), ceci peut
453 être répété $n$ fois. Si au bout de $n$ itérations la distance entre deux points consécutifs est toujours supérieure au
454 seuil, et si la valeur optionnelle $1$ est présente, alors une discontinuité (\jump) est insérée dans la liste des
455 points.
456 \end{itemize}
457
458
459 \begin{demo}{Courbe polaire et points doubles}{Polaire}
460 \begin{texgraph}[name=Polaire,export=pgf]
461 view(-3,2,-2,3),Marges(0.25,0.25,0.25,0.25),
462 size(7.5),Width:=4,
463 Axes(0,1+i),NbPoints:=250,tMin:=-25,tMax:=25,
464 courbe:=Get(Polaire((t+1)/(t-1))),
465 ptDoubles:= courbe InterL courbe,
466 Width:=8, Color:= blue, Ligne(courbe,0),
467 DotStyle:=dotcircle, DotScale:=2,
468 Point(ptDoubles),
469 Label(1+2*i,"$r(t)=\dfrac{t+1}{t-1}$")
470 \end{texgraph}
471 \end{demo}
472
473
474 \subsection{Spline}\label{cmdSpline}
475
476 \begin{itemize}
477 \item \util \textbf[Spline()]{Spline( <V0>, <A0>,..., <An>, <Vn> )}.
478 \item \desc trace la spline cubique passant par les points \argu{A0} jusqu'à \argu{An}. \argu{V0} et \argu{Vn} désignent
479 les vecteurs vitesses aux extrémités [contraintes], si l'un d'eux est nul alors l'extrémité correspondante est
480 considérée comme libre (sans contrainte).
481 \end{itemize}
482
483
484 \begin{demo}{Commande Spline}{Spline}
485 \begin{texgraph}[name=Spline,export=pgf]
486 view(-5,5,-5,5),Marges(0.25,0.25,0.25,0.25),
487 size(7.5),Width:=4,Axes(0,1+i),
488 A:= -4-3*i, B:=-2+2*i, C:=1-3*i, D:=4+3*i,
489 LabelDot(A,"$A$","S",1),LabelDot(B,"$B$","N",1),
490 LabelDot(C,"$C$","S",1),LabelDot(D,"$D$","O",1),
491 Width:=8,Color:=red, Spline(0,A,B,C,D,0),
492 Ligne([-4.5+4.5*i,-4+4.5*i],0), LabelStyle:=left,
493 Label(-3.5+4.5*i,"libre"),
494 Color:=blue,Spline(5,A,B,C,D,5*i),
495 Ligne([-4.5+3.5*i,-4+3.5*i],0),
496 Label(-3.5+3.5*i,"contrainte"),
497 Width:=4,
498 Arrows:=1, Ligne([A,A+2,jump,D,D+2*i],0)
499 \end{texgraph}
500 \end{demo}
501
502
503 \section{Commandes de dessin bitmap}
504
505 La version \version propose quelques commandes de base pour faire du dessin bitmap. Ce dessin bitmap peut être
506 enregistré (au format \textit{bmp}) mais il n'est pas pris en compte par les autres exports du logiciel. Ces commandes
507 ne sont fonctionnelles qu'avec la version GUI de TeXgraph. Chaque pixel est repéré son affixe $x+iy$ où $x$ et $y$ sont
508 deux entiers, l'origine est en haut à gauche de la zone de dessin \Mytextbf{marges exclues}, l'axe $Ox$ est dirigé vers
509 la droite et l'axe $Oy$ vers le bas.
510
511 \subsection{DelBitmap}\label{cmdDelBitmap}
512
513 \begin{itemize}
514 \item \util \textbf[DelBitmap()]{DelBitmap()}.
515 \item \desc détruit le bitmap en cours.
516 \end{itemize}
517
518 \subsection{MaxPixels}\label{cmdMaxPixels}
519
520 \begin{itemize}
521 \item \util \textbf[MaxPixels()]{MaxPixels()}.
522 \item \desc renvoie la taille de la zone graphique en pixels sous la forme: \textsl{maxX+i*maxY}, ainsi pour les
523 coordonnées des pixels (coordonnées entières), l'intervalle des abscisses est \textsl{[0 .. maxX]} et celui des
524 ordonnées \textsl{[0 .. maxY]}. Chaque pixel est repéré par des coordonnées entières, donc chaque pixel a une affixe
525 $a+ib$ avec $a$ dans \textsl{[0 .. maxX]} et $b$ dans \textsl{[0 .. maxY]}. L'origine étant le coin supérieur gauche de
526 la zone graphique \Mytextbf{marges exclues}.
527 \end{itemize}
528
529 \subsection{NewBitmap}\label{cmdNewBitmap}
530
531 \begin{itemize}
532 \item \util \textbf[NewBitmap()]{NewBitmap( [fond] )}.
533 \item \desc permet de créer un nouveau bitmap (vide). Par défaut la couleur du fond est le blanc.
534 \end{itemize}
535
536 \subsection{Pixel}\label{cmdPixel}
537
538 \begin{itemize}
539 \item \util \textbf[Pixel()]{Pixel( <liste> )}.
540 \item \desc permet de d'allumer une \argu{liste} de pixels. Cette liste est de la forme: \textsl{[affixe, couleur,
541 affixe, couleur, ...]}. Les affixes des pixels sont de la forme $a+ib$ avec $a$ et $b$ des entiers positifs ou nuls,
542 l'origine étant le coin supérieur gauche de la zone graphique \Mytextbf{marges exclues}.
543 \end{itemize}
544
545 \subsection{Pixel2Scr}\label{cmdPixel2Scr}
546
547 \begin{itemize}
548 \item \util \textbf[Pixel2Scr()]{Pixel2Scr( <affixe> )}.
549 \item \desc permet de convertir l'\argu{affixe} d'un pixel (coordonnées entières) en affixe dans le repère de
550 l'utilisateur à l'écran.
551 \end{itemize}
552
553 \subsection{Scr2Pixel}\label{cmdScr2Pixel}
554
555 \begin{itemize}
556 \item \util \textbf[Scr2Pixel()]{Scr2Pixel( <affixe> )}.
557 \item \desc permet de convertir l'\argu{affixe} d'un point dans le repère de l'utilisateur à l'écran en coordonnées
558 entières (affixe du pixel correspondant au point).
559 \item \exem un ensemble de Julia, la commande est à placer dans un élément graphique utilisateur. L'image \textit{png} a
560 été obtenue à partir du bouton \textit{snapshot} de l'interface graphique en prenant l'export \textit{bmp} puis une
561 conversion en \textit{png}:
562 \end{itemize}
563
564 \pngtrue
565 \begin{demo}{Un ensemble de Julia}{julia}
566 \begin{texgraph}[name=julia,export=none]
567 view(-1.5,1.5,-1,1),Marges(0,0,0,0),size(7.5),
568 NewBitmap(),
569 T:=100, m:=MaxPixels(), c:=-0.181-0.667*i,
570 for x from 0 to Re(m) do
571 Pixel(
572 for y from 0 to Im(m) do
573 N:=0, z:=Pixel2Scr(x+i*y),
574 repeat
575 z:=z^2+c, Inc(N,1)
576 until (N=T) Or (abs(z)>2) od,
577 x+i*y, MixColor(darkred,1-N/T,yellow,N/T)
578 od )
579 od
580 \end{texgraph}
581 \end{demo}
582 \pngfalse
583
584
585 \section{Macros graphiques de TeXgraph.mac}
586
587 \subsection{angleD}
588
589 \begin{itemize}
590 \item \util \textbf[angleD()]{angleD( <B>, <A>, <C>, <r> )}.
591 \item \desc dessine l'angle $\widehat{BAC}$ avec un parallèlogramme de coté r.
592 \end{itemize}
593
594 \subsection{Arc}\label{macArc}
595
596 \begin{itemize}
597 \item \util \textbf[Arc()]{Arc( <B>, <A>, <C>, <R> [, sens] )}.
598
599 \item \desc trace un arc de cercle de centre \argu{A} et de rayon \argu{R}. L'arc est tracé partant de la droite $(AB)$
600 jusqu'à la droite $(AC)$, l'argument facultatif \argu{sens} indique: le sens trigonométrique si sa valeur est $1$
601 (valeur par défaut), le sens contraire si valeur est $-1$.
602 \end{itemize}
603
604 \begin{demo}{Commande Arc}{Arc}
605 \begin{texgraph}[name=Arc,export=pgf]
606 view(-2.25,3.75,-2,5),Marges(0,0,0,0),size(7.5),
607 A:=0, B:=3+i, C:=2+4*i,
608 DotScale:=2, Width:=8,
609 Ligne([B,A,C],0), Color:=red,
610 LabelDot(A,"$A$","S",1),
611 LabelDot(B,"$B$","N",1),
612 LabelDot(C,"$C$","SE",1),
613 Arrows:=1, Color:=blue,
614 Arc(B,A,C,1,-1),
615 Arc(B,A,C,2,1)
616 \end{texgraph}
617 \end{demo}
618
619 \subsection{arcBezier}
620
621 \begin{itemize}
622 \item \util \textbf[arcBezier()]{arcBezier( <B>, <A>, <C>, <r> [,sens] )}.
623 \item \desc a le même effet que la macro graphique \textsl{Arc} mais l'arc est dessiné avec des courbes de Bezier.
624 \end{itemize}
625
626
627 \subsection{axes}
628
629 \begin{itemize}
630 \item \util \textbf[axes()]{axes( <[origine, etendueX, etendueY]>, <gradX+i*gradY> [, subdivX+i*subdivY,
631 posOriginX+i*posOriginY, num, "texte", den, firstnum] )}.
632 \item \desc pour tracer et graduer les axes passant par \argu{origine} (affixe), elle s'utilise comme la commande
633 \Helpref{Axes}{cmdAxes} et utilise donc les variables \textit{xylabelpos} et \textit{xyticks}. Par défaut les axes
634 occupent toute la fenêtre si les paramètres optionnels \argu{etendueX} et \argu{etendueY} sont omis. Le paramètre
635 \argu{etendueX} représente sous forme complexe l'intervalle des abcisses: \verb|xmin+i*xmax|, de même pour les ordonnées
636 avec le paramètre \argu{etendueY}, les axes sont alors limités à ces intervalles. Remarque: pour préciser une valeur de
637 \argu{etendueY} sans préciser de valeur pour \argu{etendueX}, il suffit de mettre \jump à la place de \argu{etendueX}
638 (et non pas \Nil!).
639
640 \item Le paramètre optionnel \argu{subdivX+i*subdivY} indique le nombre de subdivisions par unité sur chaque axe (0 par
641 défaut).
642
643 \item Le paramètre optionnel \argu{posOriginX+i*posOriginY} permet de positionner le label de l'origine:
644
645 \begin{itemize}
646 \item \argu{posOriginX}=0: pas de label à l'origine (idem pour \argu{posOriginY}=0),
647 \item \argu{posOriginX}=1: label normal à l'origine (idem pour \argu{posOriginY}=1),,
648 \item \argu{posOriginX}=2: label décalé à droite de l'origine et en haut pour \argu{posOriginY}=2 (valeurs par
649 défaut),
650 \item \argu{posOriginX}=-2 label décalé à gauche de l'origine et en bas pour \argu{posOriginY}=-2.
651 \end{itemize}
652
653 \item Sur les 2 axes, chaque label est multiplié par la fraction \argu{num/den} (1 par défaut), ajouté à
654 \argu{firstnum/den} (l'origine par défaut) et accompagné du \argu{"texte"} au numérateur. Pour que le séparateur décimal
655 soit la virgule à la place du point, il suffit de mettre la variable \var{usecomma} à la valeur $1$. Cette macro est
656 également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et
657 \var{nbdeci} qui fixe le nombre de décimales affichées.
658
659 \item \exem pour avoir des axes gradués en $\pi/2$ en $\pi/2$: \co{axes(0, pi*(1+i)/2, 1+i, 2+2*i, 1, "\bks pi", 2, 0)}.
660 Contrairement à la commande Axes, cette macro est sensible aux modifications de la matrice courante.
661 \end{itemize}
662
663 \subsection{axeX}
664
665 \begin{itemize}
666 \item \util \textbf[axeX()]{axeX( <[origine, posOrigine, etendue]>, <Xpas> [, Subdiv, labelPos , num, ""texte"", den,
667 firstnum] )}.
668
669 \item \desc pour tracer et graduer un axe des abscisses passant par \argu{origine} et avec un pas de \argu{Xpas}. Le
670 paramètre \argu{etendue} représente sous forme complexe l'intervalle des abscisses \textsl{xmin+i*xmax}, si celui-ci est
671 omis, alors le tracé occupe la fenêtre. Remarque: pour préciser une valeur de \argu{etendue} sans préciser de valeur
672 pour \argu{posOrigine}, il suffit de mettre \jump à la place de \argu{posOrigine} (et non pas \Nil!).
673
674 \item \argu{Subdiv} est le nombre de subdivisions par unité, chaque abscisse est multipliée par la fraction
675 \argu{num/den} (1 par défaut), ajoutée à \argu{firstnum/den} (l'origine par défaut) et accompagnée du \argu{"texte"} au
676 numérateur. Pour que le séparateur décimal soit la virgule à la place du point, il suffit de mettre la variable
677 \var{usecomma} à la valeur $1$. Cette macro est
678 également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et
679 \var{nbdeci} qui fixe le nombre de décimales affichées.
680
681 \item Les paramètres optionnels \argu{posOrigine} et \argu{labelpos} permettent de positionner les labels:
682
683 \begin{itemize}
684 \item \argu{posOrigine}=0: pas de label à l'origine,
685 \item \argu{posOrigine}=1: label normal à l'origine,
686 \item \argu{posOrigine}=2: label décalé à droite à l'origine (valeur par défaut),
687 \item \argu{posOrigine}=-2 label décalé à gauche à l'origine,
688 \item \argu{labelPos}=0 : pas de label du tout,
689 \item \argu{Re(labelpos)}=top: labels au-dessus,
690 \item Re(\argu{labelPos})=bottom : labels en-dessous (valeur par défaut),
691 \item Im(\argu{Im(labelPos})=1: labels orthogonaux à l'axe.
692 \end{itemize}
693 \end{itemize}
694
695 \subsection{axeY}
696
697 \begin{itemize}
698 \item \util \textbf[axeY()]{axeY(<[origine, posOrigine, etendue]>, <Ypas> [, Subdiv, labelPos , num, ""texte"", den,
699 firstnum] )}.
700
701 \item \desc pour tracer et graduer un axe des abscisses passant par \argu{origine} et avec un pas de \argu{Ypas}. Le
702 paramètre \argu{etendue} représente sous forme complexe l'intervalle des ordonnées \textsl{ymin+i*ymax}, si celui-ci est
703 omis, alors le tracé occupe la fenêtre. Remarque: pour préciser une valeur de \argu{etendue} sans préciser de valeur
704 pour \argu{posOrigine}, il suffit de mettre \jump à la place de \argu{posOrigine} (et non pas \Nil!).
705
706 \item \argu{Subdiv} est le nombre de subdivisions par unité, chaque ordonnée est multipliée par la fraction
707 \argu{num/den} (1 par défaut), ajoutée à \argu{firstnum/den} (l'origine par défaut) et accompagnée du \argu{"texte"} au
708 numérateur. Pour que le séparateur décimal soit la virgule à la place du point, il suffit de mettre la variable
709 \var{usecomma} à la valeur $1$. Cette macro est
710 également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et
711 \var{nbdeci} qui fixe le nombre de décimales affichées.
712
713 \item Les paramètres optionnels \argu{posOrigine} et \argu{labelpos} permettent de positionner les labels:
714
715 \begin{itemize}
716 \item \argu{posOrigine}=0: pas de label à l'origine,
717 \item \argu{posOrigine}=1: label normal à l'origine,
718 \item \argu{posOrigine}=2: label décalé vers le haut à l'origine (valeur par défaut),
719 \item \argu{posOrigine}=-2 label décalé vers le bas à l'origine,
720 \item \argu{labelPos}=0 : pas de label du tout,
721 \item \argu{Re(labelpos)}=left: labels à gauche de l'axe (valeur par défaut),
722 \item Re(\argu{labelPos}=right : labels à droite de l'axe,
723 \item Im(\argu{labelPos})=1: labels orthogonaux à l'axe.
724 \end{itemize}
725 \end{itemize}
726
727
728 \begin{demo}{Utilisation de axeX, axeY}{axeXY}
729 \begin{texgraph}[name=axeXY,export=pgf]
730 view(-5,5,-5,5),size(7.5),
731 LabelSize:=footnotesize,
732 //graphique du haut
733 SaveWin(),
734 view(-5,5,0.25,5),Width:=6, Arrows:=1,
735 SetMatrix([2.5*i,2/pi,2*i]),
736 axeX(0,pi/2,Nil,Nil,1,"\pi",2), axeY(0,1),
737 Arrows:=0, Color:=red, Width:=8,
738 tMin:=-2*pi, tMax:=2*pi, Cartesienne(sin(x)),
739 Label(pi*1.65+i,"$f(x)=\sin(x)$"),RestoreWin(),
740 //graphique du bas
741 SaveWin(), Color:=black,
742 view(-5,5,-5,-0.25), SetMatrix([-5.5*i,2,i]),
743 Width:=6, Arrows:=1, usecomma:=1,
744 axeX([i,0],0.5), axeY([i,0],1,Nil,Nil,1,"a"),
745 Arrows:=0, Color:=blue, Width:=8,
746 Cartesienne(x^2+1),
747 Label(1+4.75*i,"$g(x)=x^2+a$"),
748 RestoreWin()
749 \end{texgraph}
750 \end{demo}
751
752
753 \subsection{background}\label{macbackground}
754
755 \begin{itemize}
756 \item \util \textbf[background()]{background( <fillstyle>, <fillcolor> )}.
757 \item \desc permet de remplir le fond de la fenêtre graphique avec le style et la couleur demandée. Cette macro met à
758 jour la variable \var{backcolor}.
759 \end{itemize}
760
761 \subsection{bbox}
762
763 \begin{itemize}
764 \item \util \textbf[bbox()]{bbox()}.
765 \item \desc permet d'ajuster la fenêtre à la "bounding box" autour du dessin courant. Cette macro est destinée à être
766 utilisée dans la ligne de commande en bas de la fenêtre principale, et non pas dans un élément graphique.
767 \end{itemize}
768
769
770 \subsection{centerView}
771
772 \begin{itemize}
773 \item \util \textbf[centerView()]{centerView( <affixe> )}.
774 \item \desc permet de centrer la fenêtre graphique sur le point représenté par \argu{affixe}, sans changer les
775 dimensions courantes du graphique. Cette macro est plutôt destinée à être utilisée dans la ligne de commande en bas de
776 la fenêtre principale.
777 \end{itemize}
778
779 \subsection{Cercle}\label{cmdCercle}
780
781 \begin{itemize}
782 \item \util \textbf[Cercle()]{Cercle( <A>, <r> [, B] )}.
783
784 \item \desc trace un cercle de centre \argu{A} et de rayon \argu{r} lorsque le troisième paramètre est omis, sinon c'est
785 le cercle défini par les trois points \argu{A}, \argu{r} et \argu{B}.
786
787 Pour les macros \textsl{Arc} et \textsl{Cercle}, on peut s'attendre à des surprises dans le résultat final si le
788 repère n'est pas orthonormé! Le repère est orthonormé lorsque les variables \var{Xscale} et \var{Yscale} sont égales,
789 voir option \Helpref{Paramètres/Fenêtre}{param}.
790 \end{itemize}
791
792 \begin{demo}{La cycloïde}{cycloide}
793 \begin{texgraph}[name=cycloide,export=pgf]
794 view(-5,5,-1,3),Marges(0,0,0,0),
795 size(7.5), Seg(-5,5),
796 for t in [-4,-1.85,0,1.85,3] do
797 M:=t-sin(t)+i*(1-cos(t)),
798 I:=t+i, DotStyle:=cross,
799 Point(I), DotStyle:=bigdot,
800 Point(M), Cercle(I,1), Seg(M,I),
801 Arrows:=1, Arc(M,I,t,0.5,t),
802 Arrows:=0, LineStyle:=dashed,
803 Seg(I,t), LineStyle:=solid
804 od,
805 Width:=8,Color:=red,
806 Courbe( t-sin(t)+i*(1-cos(t)))
807 \end{texgraph}
808 \end{demo}
809
810 \subsection{Clip}
811
812 \begin{itemize}
813 \item \util \textbf[Clip()]{Clip( <liste> )}.
814 \item \desc permet de clipper les éléments graphiques déjà dessinés avec la \argu{liste} qui doit être une courbe fermée
815 et simple. La macro peint l'extérieur de la courbe représentée par la \argu{liste}.
816 \end{itemize}
817
818 \subsection{Dbissec}
819
820 \begin{itemize}
821 \item \util \textbf[Dbissec()]{Dbissec( <B>, <A>, <C>, <1 ou 2> )}.
822 \item \desc dessine la bissectrice de l'angle $\widehat{BAC}$, intérieure si le dernier paramètre vaut $1$ et extérieure
823 pour la valeur $2$.
824 \end{itemize}
825
826 \subsection{Dcarre}
827
828 \begin{itemize}
829 \item \util \textbf[Dcarre()]{Dcarre( <A>, <B>, <+/-1> [, rayon] )}.
830 \item \desc dessine de carré de sommets consécutifs \argu{A} et \argu{B} dans le sens direct si le troisième paramètre
831 vaut $1$ (indirect pour $-1$). Si le paramètre \argu{rayon} est présent, alors les \og coins\fg\ de la figure seront
832 arrondis par un arc de cercle ayant le rayon mentionné.
833 \end{itemize}
834
835
836 \subsection{Ddroite}
837
838 \begin{itemize}
839 \item \util \textbf[Ddroite()]{Ddroite( <A>, <B> )}.
840 \item \desc dessine la demi-droite $[A,B)$.
841 \end{itemize}
842
843 \subsection{Dmed}
844
845 \begin{itemize}
846 \item \util \textbf[Dmed()]{Dmed( <A>, <B> [, angle droit(0/1)] )}.
847 \item \desc dessine la médiatrice du segment $[A,B]$. Si le troisième paramètre vaut $1$ ($0$ par défaut) alors un angle
848 droit est dessiné.
849 \end{itemize}
850
851
852 \subsection{domaine1}
853
854 \begin{itemize}
855 \item \util \textbf[domaine1()]{domaine1( <f(x)> [, a, b] )}.
856 \item \desc dessine la partie du plan comprise entre la courbe Cf, l'axe $Ox$ et les droites $x=a$, $x=b$ si a et b sont
857 précisés, sinon $x=$\textsl{tMin} et $x=$\textsl{tMax}.
858 \end{itemize}
859
860
861 \subsection{domaine2}
862
863 \begin{itemize}
864 \item \util \textbf[domaine2()]{domaine2( <f(x)>, <g(x)> [, a, b] )}.
865 \item \desc dessine la partie du plan comprise entre les courbes Cf, Cg et les droites $x=a$, $x=b$ si a et b sont
866 précisés, sinon $x=$\textsl{tMin} et $x=$\textsl{tMax}.
867 \end{itemize}
868
869
870 \subsection{domaine3}
871
872 \begin{itemize}
873 \item \util \textbf[domaine3()]{domaine3( <f(x)>, <g(x)> )}.
874 \item \desc délimite la partie du plan comprise entre les courbes Cf et Cg avec $x$ dans l'intervalle
875 \textsl{[tMin,tMax]}, en recherchant les points d'intersection.
876 \end{itemize}
877
878 \begin{demo}{Exemple avec domaine1, 2 et 3}{domaines}
879 \begin{texgraph}[name=domaines,export=pgf]
880 view(-5,5,-4,5),size(7.5),tMin:=-5,
881 Axes(-5,1+i,2+2*i), tMax:=-1,
882 Cartesienne(sin(x)), tMax:=5,
883 Cartesienne(2*cos(x)),tMin:=-3,tMax:=3,
884 Cartesienne(x^2), A:=-4.5+(Ymin+1.75)*i,
885 FillStyle:=full, FillOpacity:=0.5,FillColor:=green,
886 LabelStyle:=left, LabelSize:=footnotesize,
887 Dcarre(A+0.25*(-1+i), A+0.25*(1+i), -1),
888 Label(A+0.4,"domaine2 sur $[-4\,;\, -1.5]$ "),
889 Inc(A,-0.75*i), FillColor:=blue,
890 Dcarre(A+0.25*(-1+i), A+0.25*(1+i),-1),
891 Label(A+0.4,"domaine3 entre $2\cos(x)$ et $x^2$ "),
892 Inc(A,-0.75*i), FillColor:=red,
893 Dcarre(A+0.25*(-1+i), A+0.25*(1+i),-1),
894 Label(A+0.4,"domaine1 sur $[1.1\,;\, 4]$"),
895 FillColor:=red, domaine1(2*cos(x), 1.1, 4),
896 FillColor:=green, domaine2(2*cos(x), sin(x),-4,-1.5),
897 FillColor:=blue, domaine3(2*cos(x),x^2),
898 Arrows:=2, tangente(2*cos(x),0.5,1.5)
899 \end{texgraph}
900 \end{demo}
901
902 \subsection{Dparallel}
903
904 \begin{itemize}
905 \item \util \textbf[Dparallel()]{Dparallel( <[A, B]> , <C> )}.
906 \item \desc dessine la parallèle à la droite \argu{[A,B]} passant par \argu{C}.
907 \end{itemize}
908
909 \subsection{Dparallelo}
910
911 \begin{itemize}
912 \item \util \textbf[Dparallelo()]{Dparallelo( <A>, <B> , <C> [, rayon] )}.
913 \item \desc dessine le parallèlogramme de sommets consécutifs \argu{A}, \argu{B} et \argu{C}. Si le paramètre
914 \argu{rayon} est présent, alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le rayon
915 mentionné.
916 \end{itemize}
917
918
919 \subsection{Dperp}
920
921 \begin{itemize}
922 \item \util \textbf[Dperp()]{Dperp( <[A, B]> , <C> [, angle droit(0/1)] )}.
923 \item \desc dessine la perpendiculaire à la droite \argu{[A,B]} passant par \argu{C}. Si le troisième paramètre vaut $1$
924 ($0$ par défaut) alors un angle droit est dessiné.
925 \end{itemize}
926
927 \subsection{Dpolyreg}
928
929 \begin{itemize}
930 \item \util \textbf[Dpolyreg()]{Dpolyreg( <centre> , <sommet>, <nombre de côtés> [, rayon] )}.
931 \item \desc dessine le polygône régulier défini par le \argu{centre}, un \argu{sommet} et le \argu{nb de côtés}. Si le
932 paramètre \argu{rayon} est présent, alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le
933 rayon mentionné.
934 \end{itemize}
935
936 \centerline{ou}
937
938 \begin{itemize}
939 \item \util \textbf[Dpolyreg()]{Dpolyreg( <sommet1>, <sommet2>, <nombre de cotés +sens*i> [, rayon] )}.
940 \item \desc dessine le polygône régulier défini par deux sommets consécutifs \argu{sommet1} et \argu{sommet2}, le
941 \argu{nb de côtés}, et le \argu{sens} ($1$ pour direct et $-1$ pour indirect). Si le paramètre \argu{rayon} est présent,
942 alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le rayon mentionné.
943 \end{itemize}
944
945 \subsection{DpqGoneReg}\label{macDpqGoneReg}
946
947 \begin{itemize}
948 \item \util \textbf[DpqGoneReg()]{DpqGoneReg( <centre> , <sommet>, <[p,q]> )}.
949 \item \desc dessine le \argu{p/q}-gône régulier défini par le \argu{centre} et un \argu{sommet}.
950 \end{itemize}
951
952 \begin{demo}{\textit{DpqGoneReg}: exemple}{pqGoneReg}
953 \begin{texgraph}[name=pqGoneReg,export=pgf]
954 view(-5,5,-6,6),Marges(0,0,0,0),size(7.5),
955 FillStyle:=full, FillColor:=lightpink,
956 Color:=blue, Width:=8,
957 DpqGoneReg(-2.5+2.5*i,-2.5+0.25*i, [7,3]),
958 Label(-2.5+5*i,"[7,3]"),
959 DpqGoneReg(2.5+2.5*i,2.5+0.25*i, [7,2]),
960 Label(2.5+5*i,"[7,2]"),
961 DpqGoneReg(-2.5-2.5*i,-2.5-0.25*i, [7,1]),
962 Label(-2.5-5*i,"[7,1]"),
963 DpqGoneReg(2.5-2.5*i,2.5-0.25*i, [6,2]),
964 Label(2.5-5*i,"[6,2]")
965 \end{texgraph}
966 \end{demo}
967
968
969 \subsection{drawSet}\label{macdrawSet}
970
971 \begin{itemize}
972 \item \util \textbf[drawSet()]{drawSet( <ensemble> )}.
973 \item \desc dessine un ensemble produit par les macros \Helpref{capB}{maccapB}, \Helpref{cupB}{maccupB} ou
974 \Helpref{setminusB}{macsetminusB}.
975 \end{itemize}
976
977 \subsection{Drectangle}
978
979 \begin{itemize}
980 \item \util \textbf[Drectangle()]{Drectangle( <A>, <B> , <C> [, rayon] )}.
981 \item \desc dessine le rectangle de sommets consécutifs \argu{A}, \argu{B}, le côté opposé passant par \argu{C}. Si le
982 paramètre \argu{rayon} est présent, alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le
983 rayon mentionné.
984 \end{itemize}
985
986
987 \subsection{ellipticArc}\label{macellipticArc}
988 \begin{itemize}
989 \item \util \textbf[ellipticArc()]{ellipticArc( <B>, <A>, <C>, <RX>, <RY>, <sens(+/-1)> [, inclinaison] )}.
990 \item \desc dessine un arc d'ellipse de centre \argu{A}, allant de \argu{B} à \argu{C} de rayons \argu{RX} et \argu{RY},
991 l'axe portant le rayon \argu{RX} ayant une certaine \argu{inclinaison} par rapport à l'horizontale, celle-ci est en
992 degrés et vaut 0 par défaut, le paramètre \argu{sens} indique le sens de rotation, 1 pour le sens trigonométrique.
993 \end{itemize}
994
995
996 \subsection{flecher}
997
998 \begin{itemize}
999 \item \util \textbf[flecher()]{flecher( <liste>, <pos1, ..., posN> )}.
1000 \item \desc dessine des flèches le long de la ligne polygonale \argu{liste}, la position de chaque flèche (pos1, ...)
1001 est un nombre entre $0$ et $1$ ($0$ pour début de la ligne et $1$ pour fin de ligne), les flèches sont dessinées dans le
1002 sens de parcourt de la ligne, pour inverser une flèche on ajoute +i à la position.
1003 \item \exem \co{flecher(Get(Cercle(0,3)), [0,0.5] )}
1004 \end{itemize}
1005
1006 \subsection{GradDroite}\label{macGradDroite}
1007
1008 \begin{itemize}
1009 \item \util \textbf[GradDroite()]{GradDroite( <[A, origine + i*posOrigine, etendue]>, <[u, unit]>, <hautDiv>, <subdiv>
1010 [, poslab, orientation, num, ""texte"", den, firstnum] )}
1011 \item \desc gradue la droite passant par \argu{A} et dirigée par le vecteur \argu{u} (celui-ci n'est pas forcément
1012 unitaire), \argu{hautdiv} est la hauteur des graduations en cm, \argu{subdiv} est le nombre de subdivisions par unité.
1013
1014 Paramètres optionnels:
1015 \begin{itemize}
1016 \item \argu{origin}: indique la graduation de l'origine \argu{A} (0 par défaut),
1017 \item \argu{posOrigin}: indique la position du label à l'origine \argu{A}, plusieurs cas:
1018 \begin{itemize}
1019 \item \argu{posOrigin}=0: pas de label à l'origine,
1020 \item \argu{posOrigin}=1: label normal à l'origine (comme les autres)
1021 \item \argu{posOrigin}=2: label à l'origine décalé dans le sens du vecteur \argu{u} (valeur par défaut),
1022 \item \argu{posOrigin}=-2: label à l'origine décalé dans le sens opposé du vecteur \argu{u}.
1023 \end{itemize}
1024
1025 \item \argu{etendue}: représente l'intervalle des graduations sous forme complexe: \textsl{min+i*max}, le tracé
1026 de l'axe sera limité à cet intervalle. Si ce paramètre est omis, le tracé occupera la fenêtre.
1027 \item \argu{unit}: indique le pas des graduations sur l'axe (1 par défaut), cette valeur doit être positive.
1028 \item \argu{poslab} indique la position des labels par rapport à l'axe, ce paramètre prend les valeurs \co{top}
1029 ou \co{bottom},
1030 \item \argu{orientation}: orientation des labels, la valeur $i$ signifie que les labels sont orthogonaux à
1031 l'axe, sinon l'orientation représente le \var{LabelStyle} (left, right, top, ...),
1032 \item chaque graduation est multipliée par la fraction \argu{num/den} (1 par défaut), ajoutée à
1033 \argu{firstnum/den} (l'origine par défaut) et accompagnée du \argu{"texte"} au numérateur. Pour avoir une virgule comme
1034 spérateur décimal au lieu du point, il faut mettre la variable \var{usecomma} à la valeur $1$. Cette macro est
1035 également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et
1036 \var{nbdeci} qui fixe le nombre de décimales affichées. Le nombre maximal de
1037 graduations est fixé par la variable \var{maxGrad} qui vaut $100$ par défaut.
1038 \end{itemize}
1039
1040 \item \exem \co{GradDroite([0,1+2*i],[1,0.5], xyticks, 1, bottom, i)}: signifie que la graduation de l'origine sera 1
1041 avec un label décalé à droite, les graduations iront de 0.5 en 0.5, les labels seront sous l'axe et orthogonaux à l'axe.
1042
1043 \end{itemize}
1044
1045 \subsection{LabelArc}
1046
1047 \begin{itemize}
1048 \item \util \textbf[LabelArc()]{LabelArc( <B>, <A>, <C>, <R>, <sens>, <"texte">, [, options] )}.
1049 \item \desc cette macro dessine un arc de cercle de centre \argu{A}, de rayon \argu{R} partant de la droite $(AB)$
1050 jusqu'à la droite $(AC)$, l'argument facultatif \argu{sens} indique: le sens trigonométrique si sa valeur est 1 (valeur
1051 par défaut), le sens contraire si valeur est -1. La macro ajoute également le \argu{"texte"}. Le paramètre
1052 \argu{options} est une liste (facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les
1053 options sont:
1054
1055 \begin{itemize}
1056 \item \opt{labelpos}{inside/outside}: positionnement du label (outside par defaut)),
1057 \item \opt{labelsep}{distance en cm}: distance du label à l'arc (0.25cm par défaut).
1058 \item \opt{rotation}{nombre}: angle en degrés que fait le label par rapport à l'horizontale ($0$ par défaut).
1059 \end{itemize}
1060 Il est possible dans la liste des options, de modifier des attributs comme \var{Color} par exemple.
1061 \end{itemize}
1062
1063
1064
1065 \subsection{LabelAxe}
1066
1067 \begin{itemize}
1068 \item \util \textbf[LabelAxe()]{LabelAxe( <x ou y>, <affixe>, <label> [, [labelPos,décalage en cm], mark(0/1)] )}.
1069 \item \desc permet d'ajouter un label sur un des axes \argu{x ou y}, \argu{affixe} désigne l'affixe du point où se fait
1070 l'ajout, \argu{label} contient le texte à ajouter. Paramètres optionnels, \argu{[labelPos, décalage en cm]} et
1071 \argu{mark}:
1072 \begin{itemize}
1073 \item Re(\argu{labelpos})=1 signifie en dessous pour Ox et à droite pour Oy (par défaut pour Ox),
1074 \item Re(\argu{labelpos})=2 signifie au dessus pour Ox et à gauche pour Oy (par défaut pour Oy),
1075 \item Im(\argu{labelpos})=-1 signifie un décalage sur la gauche pour Ox, vers le bas pour Oy, si le décalage
1076 n'est pas précisé, il vaut 0.25 cm par défaut,
1077 \item Im(\argu{labelpos})=1 signifie un décalage sur la droite pour Ox, vers le haut pour Oy, si le décalage
1078 n'est pas précisé, il vaut 0.25 cm par défaut,
1079 \item Im(\argu{labelpos})=0 signifie pas de décalage (valeur par défaut),
1080 \item \argu{mark}: indique si le point doit être marqué (dans le dotsyle courant).
1081 \end{itemize}
1082 \end{itemize}
1083
1084 \subsection{LabelDot}\label{macLabelDot}
1085
1086 \begin{itemize}
1087 \item \util \textbf[LabelDot()]{LabelDot( <affixe>, <"texte">, <orientation> [, DrawDot, distance] )}.
1088 \item \desc cette macro affiche un texte à coté du point \argu{affixe}. L'orientation peut être "N" pour nord, "NE" pour
1089 nord-est ...etc, ou bien une liste de la forme [longueur, direction] où direction est un complexe, dans ce deuxième cas,
1090 le paramètre optionnel \argu{distance} est ignoré. Le point est également affiché lorsque \argu{DrawDot} vaut $1$ (0 par
1091 défaut) et on peut redéfinir la \argu{distance} en cm entre le point et le texte (0.25cm par défaut).
1092 \end{itemize}
1093
1094 \subsection{LabelSeg}
1095
1096 \begin{itemize}
1097 \item \util \textbf[LabelSeg()]{LabelSeg( <A>, <B>, <"texte">, [, options] )}.
1098 \item \desc cette macro dessine le segment défini par \argu{A} et \argu{B}, et ajoute le \argu{"texte"}. Le paramètre
1099 \argu{options} est une liste (facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les
1100 options sont:
1101 \begin{itemize}
1102 \item \opt{labelpos}{center/top/bottom}: positionnement du label (center par défaut),
1103 \item \opt{labelsep}{distance en cm}: distance du label au segment lorsque labelpos vaut top ou bottom (0.25cm
1104 par défaut).
1105 \item \opt{rotation}{nombre}: angle en degrés que fait le label par rapport à l'horizontale (par défaut le label
1106 est parallèle au segment).
1107 \end{itemize}
1108 Il est possible dans la liste des options, de modifier des attributs comme \var{Color} par exemple.
1109 \end{itemize}
1110
1111
1112 \subsection{markangle}
1113
1114 \begin{itemize}
1115 \item \util \textbf[markangle()]{markangle( <B>, <A>, <C>, <r>, <n>, <espacement>, <longueur> )}.
1116 \item \desc même chose que \Helpref{markseg}{cmdmarkseg} mais pour marquer un arc de cercle.
1117 \end{itemize}
1118
1119
1120 \subsection{markseg}\label{cmdmarkseg}
1121
1122 \begin{itemize}
1123 \item \util \textbf[markseg()]{markseg( <A>, <B>, <n>, <espacement>, <longueur> [, angle] )}.
1124 \item \desc marque le segment $[A,B]$ avec \argu{n} petits segments, l'\argu{espacement} est en unité graphique, et la
1125 \argu{longueur} en cm. Le paramètre optionnel \argu{angle} permet de définir en degré l'angle que feront les marques par
1126 rapport à la droite $(AB)$ (45 degrés par défaut).
1127 \end{itemize}
1128
1129
1130 \subsection{periodic}
1131
1132 \begin{itemize}
1133 \item \util \textbf[periodic()]{periodic( <f(x)>, <a>, <b> [, divisions, discontinuités] )}.
1134 \item \desc trace la courbe de la fonction périodique définie par $y=f(x)$ sur la période $[a;b]$, puis translate le
1135 motif pour couvrir l'intervalle [tMin; tMax]. Les deux paramètres optionnels sont identiques à ceux des courbes
1136 paramétrées (nombre de divisions et discontinuités).
1137 \end{itemize}
1138
1139 \begin{demo}{Fonctions périodiques}{periodic}
1140 \begin{texgraph}[name=periodic,export=pgf]
1141 view(-5,5,-5,5), size(7.5),
1142 Axes(0,1+i), Width:=8,
1143 Color:=red,
1144 periodic(if t>0 then 4 else 2 fi,-1,1,5,1),
1145 Color:=blue,
1146 periodic(2*abs(t)-1,-1,1),
1147 Color:=magenta,
1148 periodic(sin(t)-3,-pi/2,pi/2)
1149 \end{texgraph}
1150 \end{demo}
1151
1152 \subsection{Rarc}
1153
1154 \begin{itemize}
1155 \item \util \textbf[Rarc()]{Rarc( <B>, <A>, <C>, <R>, <sens> )}.
1156 \item \desc comme la macro \Helpref{Arc}{macArc} sauf que l'arc de cercle est rond même si le repère n'est pas
1157 orthonormé, le rayon \argu{R} est en centimètres.
1158 \end{itemize}
1159
1160 \subsection{Rcercle}
1161
1162 \begin{itemize}
1163 \item \util \textbf[Rcercle()]{Rcercle( <A>, <R> )} ou \Mytextbf{Rcercle( <A>, <B>, <C> )}.
1164 \item \desc dessine un cercle rond même si le repère n'est pas orthonormé. Dans la première forme, le rayon \argu{R} est
1165 en centimètres.
1166 \end{itemize}
1167
1168 \subsection{Rellipse}
1169
1170 \begin{itemize}
1171 \item \util \textbf[Rellipse()]{Rellipse( <O>, <RX>, <RY> [, inclinaison] )}.
1172 \item \desc comme la commande \Helpref{Ellipse}{cmdEllipse} sauf que celle-ci est insensible au repère écran, les rayons
1173 sont en centimètres.
1174 \end{itemize}
1175
1176 \subsection{RellipticArc}
1177
1178 \begin{itemize}
1179 \item \util \textbf[RellipticArc()]{RellipticArc( <B>, <A>, <C>, <RX>, <RY>, <sens(+/-1)> [, inclinaison] )}.
1180 \item \desc comme la macro \Helpref{ellipticArc}{macellipticArc} sauf que celle-ci est insensible au repère écran, les
1181 rayons sont en centimètres.
1182 \end{itemize}
1183
1184 \subsection{RestoreWin}\label{macRestoreWin}
1185
1186 \begin{itemize}
1187 \item \util \textbf[RestoreWin()]{RestoreWin()}.
1188 \item \desc restaure la fenêtre graphique ainsi que la matrice 2D enregistrées lors du dernier appel à la macro
1189 \Helpref{SaveWin}{macSaveWin}.
1190 \end{itemize}
1191
1192 \subsection{SaveWin}\label{macSaveWin}
1193
1194 \begin{itemize}
1195 \item \util \textbf[SaveWin()]{SaveWin()}.
1196 \item \desc enregistre la fenêtre graphique ainsi que la matrice 2D courantes, sur une pile. Cette macro va de paire
1197 avec la macro \Helpref{RestoreWin}{macRestoreWin}.
1198 \item \exem plusieurs graphiques sur un seul: voir \Helpref{cet exemple}{axeXY}.
1199 \end{itemize}
1200
1201 \subsection{Seg}
1202
1203 \begin{itemize}
1204 \item \util \textbf[Seg()]{Seg( <A>, <B> )}.
1205 \item \desc dessine le segment $[A,B]$.
1206 \end{itemize}
1207
1208 \subsection{set}\label{macset}
1209
1210 \begin{itemize}
1211 \item \util \textbf[set()]{set( <nom>, <affixe centre> [, options] )}.
1212 \item \desc dessine un ensemble en forme de patatoïde, \argu{affixe centre} désigne le centre de cet ensemble, et le
1213 paramètre \argu{nom} est une chaîne contenant le nom de cet ensemble. Le paramètre \argu{options} est une liste
1214 (facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les options sont:
1215
1216 \begin{itemize}
1217 \item \opt{scale}{entier positif}: représente l'échelle (1 par défaut),
1218 \item \opt{rotation}{angle en degrés}: permettant d'incliner le dessin (0 degré par défaut),
1219 \item \opt{labels}{0/1}: pour afficher ou non le nom de l'ensemble.
1220 \item \opt{labelsep}{distance en cm}: distance du label au bord de l'ensemble (0.45cm par défaut)
1221 \end{itemize}
1222 Il est possible dans la liste des options, de modifier des attributs comme \co{LabelStyle} par exemple.
1223 \item La macro renvoie en résultat la liste des points de la courbe dessinant l'ensemble.
1224 \end{itemize}
1225
1226 \subsection{setB}\label{macsetB}
1227
1228 \begin{itemize}
1229 \item \util \textbf[setB()]{setB( <nom>, <affixe centre> [, options] )}.
1230 \item \desc dessine un ensemble en forme de patatoïde à l'aide de courbes de Bézier, \argu{affixe centre} désigne le
1231 centre de cet ensemble, et le paramètre \argu{nom} est une chaîne contenant le nom de cet ensemble. Le paramètre
1232 \argu{options} est une liste (facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les
1233 options sont:
1234
1235 \begin{itemize}
1236 \item \opt{scale}{entier positif}: représente l'échelle (1 par défaut),
1237 \item \opt{rotation}{angle en degrés}: permettant d'incliner le dessin (0 degré par défaut),
1238 \item \opt{labels}{0/1}: pour afficher ou non le nom de l'ensemble.
1239 \item \opt{labelsep}{distance en cm}: distance du label au bord de l'ensemble (0.45cm par défaut)
1240 \end{itemize}
1241 Il est possible dans la liste des options, de modifier des attributs comme \co{LabelStyle} par exemple.
1242 \item La macro renvoie en résultat la liste des points de contrôle de la courbe représentant l'ensemble. Cette liste
1243 peut-être utilisée ensuite pour déterminer une intersection (voir \Helpref{capB}{maccapB}), une réunion (voir
1244 \Helpref{capB}{maccapB}) ou une différence (voir \Helpref{setminusB}{macsetminusB}).
1245 \end{itemize}
1246
1247
1248 \subsection{size}\label{macsize}
1249
1250 \begin{itemize}
1251 \item \util \textbf[size()]{size( <largeur + i*hauteur> [, ratio(Xscale/Yscale)] )}
1252 \item \desc permet de fixer les tailles du graphique: \argu{largeur} et \argu{hauteur} (marges incluses) en cm. Si le
1253 paramètre \argu{hauteur} est nul, alors on considère que hauteur=largeur.
1254
1255 Si le paramètre \argu{ratio} est omis, les échelles sur les deux axes sont calculées pour que la figure entre au plus
1256 juste dans le cadre fixé, tout en conservant le ratio courant.
1257
1258 Si \argu{ratio} est égal à $0$ alors les échelles sont calculées de manière à obtenir exactement la taille souhaitée (le
1259 ratio courant n'est donc vraisemblablement pas conservé).
1260
1261 Le repère est orthonormé lorsque le paramètre \argu{ratio} vaut 1.
1262
1263 \Mytextbf{NB}: un appel aux fonctions \textsl{Fenetre} \textsl{Marges} ou à la macro \textsl{view}, modifiera la taille
1264 du graphique. Il est donc préférable de déterminer les marges et la fenêtre graphique \Mytextbf{avant} de fixer la
1265 taille.
1266
1267 La largeur d'un graphique est donnée par la formule:
1268
1269 \centerline{\textsl{(Xmax-Xmin)*Xscale+margeG+margeD}}
1270
1271 et la hauteur est donnée par:
1272
1273 \centerline{\textsl{(Ymax-Ymin)*Yscale+margeH+margeB}}
1274 \end{itemize}
1275
1276 \subsection{suite}
1277
1278 \begin{itemize}
1279 \item \util \textbf[suite()]{suite( <f(x)>, <u0>, <n> )}.
1280 \item \desc représentation graphique de la suite définie par $u_{n+1}=f(u_n)$, de premier terme \argu{u0} et jusqu'au
1281 rang \argu{n}. Cette macro ne représente que les "escaliers".
1282 \end{itemize}
1283
1284
1285 \begin{demo}{Utilisation de la macro suite}{suite}
1286 \begin{texgraph}[name=suite,export=pgf]
1287 view(-0.1,1.1,-0.1,1.1),size(7.5),
1288 Arrows:=1,Axes(0,1/2+i/4),Arrows:=0,
1289 u0:=0.3,nb:=20, Width:=6,
1290 Color:=darkseagreen,
1291 Droite(1,-1,0), Color:=red,
1292 tMin:=0, tMax:=1,
1293 Width:=8, Cartesienne(4*x*(1-x)),
1294 Width:=6, Color:=blue,
1295 Label(0.5+1.05*i,"$u_{n+1}=4u_n(1-u_n)$"),
1296 LabelDot(u0, "$u_0$","S",1),
1297 suite(4*x*(1-x), u0,nb)
1298 \end{texgraph}
1299 \end{demo}
1300
1301
1302
1303 \subsection{tangente}
1304
1305 \begin{itemize}
1306 \item \util \textbf[tangente()]{tangente( <f(x)>, <x0> [, longueur] )}.
1307 \item \desc trace la tangente à la courbe cartésienne $y=f(x)$ au point d'abscisse
1308 \argu{x0}, on trace un segment de la \argu{longueur} indiquée (en cm) ou la droite entière si la longueur est omise.
1309 \end{itemize}
1310
1311
1312 \subsection{tangenteP}
1313
1314 \begin{itemize}
1315 \item \util \textbf[tangenteP()]{tangenteP( <f(t)>, <t0> [,longueur] )}.
1316 \item \desc trace la tangente à la courbe paramétrée par \argu{f(t)} au point de paramètre \argu{t0}, on trace un
1317 segment de la \argu{longueur} indiquée (en cm) ou la droite entière si la longueur est omise.
1318 \end{itemize}
1319
1320 \subsection{view}
1321
1322 \begin{itemize}
1323 \item \util \textbf[view()]{view( <xmin>, <xmax>, <ymin>, <ymax> )} ou \Mytextbf{view( <[xmin+i*ymin, xmax+i*ymax]> )}
1324 \item \desc change la fenêtre graphique courante et conserve l'échelle. Attention: ceci change la taille du graphique,
1325 celle-ci peut-être modifiée avec la macro \Helpref{size}{macsize}.
1326 \item \exem dans un élément graphique utilisateur, la commande \co{[ view(-4, 4,-3, 3), size(12) ]} va fixer la fenêtre
1327 graphique à $[-4,4]\times[-3,3]$, et la taille du graphique à 12cm en conservant le ratio courant. Il est important de
1328 respecter l'ordre (view avant size).
1329 \end{itemize}
1330
1331
1332 \subsection{wedge}
1333
1334 \begin{itemize}
1335 \item \util \textbf[wedge()]{wedge( <B>, <A>, <C>, <r> )}
1336 \item \desc dessine le secteur angulaire défini par l'angle $\widehat{BAC}$ avec un rayon \argu{r}.
1337 \end{itemize}
1338
1339 \subsection{zoom}
1340
1341 \begin{itemize}
1342 \item \util \textbf[zoom()]{zoom( <+/-1> )}
1343 \item \desc permet de faire un zoom arrière/avant.
1344 \end{itemize}

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.