Ciblage de Courbe...
authorJean-Michel Sarlat <jm.sarlat@gmail.com>
Wed, 21 Sep 2011 22:12:49 +0000 (00:12 +0200)
committerJean-Michel Sarlat <jm.sarlat@gmail.com>
Wed, 21 Sep 2011 22:12:49 +0000 (00:12 +0200)
docs/texgraph/chap08.html [new file with mode: 0644]
docs/texgraph/chap08.tex [new file with mode: 0644]
docs/texgraph/index.xml
texgraph.php

diff --git a/docs/texgraph/chap08.html b/docs/texgraph/chap08.html
new file mode 100644 (file)
index 0000000..4c3e6b1
--- /dev/null
@@ -0,0 +1,635 @@
+<h1 id="fonctions-et-macros-graphiques">Fonctions et macros graphiques</h1>
+<p>Ces fonctions et macros cr&#233;ent un &#233;l&#233;ment graphique au moment de leur &#233;valuation et renvoient un r&#233;sultat &#233;gal &#224; <em>Nil</em>, elles ne sont utilisables <strong>que lors de la cr&#233;ation d&#8217;un &#233;l&#233;ment graphique &quot;Utilisateur&quot;</strong><sup><a href="#fn1" class="footnoteRef" id="fnref1">1</a></sup>.</p>
+<p>Elles peuvent &#234;tre utilis&#233;es dans des macros, mais elles ne seront &#233;valu&#233;es que si ces macros sont ex&#233;cut&#233;es lors de la cr&#233;ation d&#8217;un &#233;l&#233;ment graphique &quot;Utilisateur&quot;.</p>
+<h2 id="fonctions-graphiques-pr&#233;d&#233;finies">Fonctions graphiques pr&#233;d&#233;finies</h3>
+<p>Notations:</p>
+<p>&lt;argument&gt;: signifie que l&#8217;argument est <strong>obligatoire</strong>.</p>
+<p>[, argument]: signifie que l&#8217;argument est <strong>facultatif</strong>.</p>
+<h3 id="Axes">Axes</h3>
+<ul>
+<li><p><b>Axes( &lt;origine&gt;, &lt;graduationX + i*graduationY&gt; [, position label origine] )</b>.</p></li>
+<li><p><u>Description</u> : dessine les axes, &lt;<em>origine</em>&gt; est l&#8217;affixe du point d&#8217;intersection des axes, &lt;<em>graduationX</em>&gt; est le pas pour les graduations sur l&#8217;axe Ox, et &lt;<em>graduationY</em>&gt; celui de l&#8217;axe Oy, une graduation &#233;gale &#224; z&#233;ro signifie l&#8217;absence de graduation. La longueur des graduations est dans la variable globale <span style="color:red">xyticks</span> que l&#8217;on peut modifier, la distance des labels &#224; l&#8217;extr&#234;mit&#233; des graduations est dans la variable <span style="color:red">xylabelsep</span> qui peut &#233;galement &#234;tre modifi&#233;e.</p>
+<p>Le troisi&#232;me param&#232;tre est facultatif, il permet de pr&#233;ciser la position des labels de l&#8217;origine (&#224; l&#8217;intersection des axes), c&#8217;est un complexe: <span class="math"><em>a</em>&#8197;+&#8197;<em>i</em><em>b</em></span>, la partie r&#233;elle concerne l&#8217;abscisse de l&#8217;origine et l&#8217;autre concerne l&#8217;ordonn&#233;e. Ces deux nombres peuvent prendre trois valeurs:</p>
+<ul>
+<li><p><span class="math">0</span>: le label n&#8217;appara&#238;t pas,</p></li>
+<li><p><span class="math">1</span>: le label est affich&#233; comme celui des autres graduations,</p></li>
+<li><p><span class="math">2</span>: le label est d&#233;cal&#233; pour ne pas chevaucher l&#8217;autre axe (valeur par d&#233;faut).</p></li>
+</ul></li>
+<li><p>On peut modifier dans les <em>Attributs</em>: le style de ligne, l&#8217;&#233;paisseur, la couleur et la taille des labels.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,4,-5,5),Marges(0.5,0,0,0.5), size(7.5), Width:=2, Color:=lightgray, Grille(-5-5*i,(1+i)/2), Width:=4, Color:=gray, Grille(-5-5*i,(1+i)), Color:=black, Arrows:=1, Axes(-5-5*i,1+i,1+i),Arrows:=0, LabelAxe(x,-pi-5*i,&quot;<span class="math">&#8197;-&#8197;&#960;</span>&quot;,2-i,1), LabelAxe(x,pi-5*i,&quot;<span class="math">&#960;</span>&quot;,2+i,1), SaveAttr(), FillStyle:=full, FillColor:=lightblue, FillOpacity:=0.5, domaine2(3*sin(x)^3, -5,-pi,pi), RestoreAttr(), Color:=red, Arrows:=0, Width:=8, Cartesienne( 3*sin(x)^3 )</p>
+</blockquote>
+</blockquote>
+<h3 id="poly-bezier">(Poly-)Bezier</h3>
+<ul>
+<li><p><b>Bezier( &lt;liste de points&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine une succession de courbes de {Bezier} (avec &#233;ventuellement des segments de droite). Il y a plusieurs possibilit&#233;s pour la liste de points:</p>
+<ol>
+<li><p>une liste de trois points <span class="math">[<em>A</em>,&#8198;<em>C</em>,&#8198;<em>B</em>]</span>, il s&#8217;agit alors d&#8217;une courbe de Bezier d&#8217;origine &lt;<em>A</em>&gt; et d&#8217;extr&#233;mit&#233; &lt;<em>B</em>&gt; avec un point de contr&#244;le &lt;<em>C</em>&gt;, c&#8217;est la courbe param&#233;tr&#233;e par:</p>
+<p><br /><span class="math">(1&#8197;-&#8197;<em>t</em>)<sup>2</sup><em>A</em>&#8197;+&#8197;2<em>t</em>(1&#8197;-&#8197;<em>t</em>)<em>C</em>&#8197;+&#8197;<em>t</em><sup>2</sup><em>B</em></span><br /></p></li>
+<li><p>une liste de 4 points ou plus: [A1, C1, C2, A2, C3, C4, A3...]: il s&#8217;agit alors d&#8217;une succession de courbes de Bezier &#224; 2 points de contr&#244;les, la premi&#232;re va de A1 &#224; A2, elle est contr&#244;l&#233;e par C1, C2 (param&#233;tr&#233;e par <span class="math">(1&#8197;-&#8197;<em>t</em>)<sup>3</sup><em>t</em><em>A</em>1&#8197;+&#8197;3(1&#8197;-&#8197;<em>t</em>)<sup>2</sup><em>t</em><em>C</em>1]&#8197;+&#8197;3(1&#8197;-&#8197;<em>t</em>)<em>t</em><sup>2</sup><em>C</em>2&#8197;+&#8197;<em>t</em><sup>3</sup><em>A</em>2</span>), la deuxi&#232;me va de A2 &#224; A3 et est contr&#244;l&#233;e par C3,C4 ...etc. Une exception toutefois, on peut remplacer les deux points de contr&#244;le par la constante <em>jump</em>, dans ce cas on saute directement de A1 &#224; A2 en tra&#231;ant un segment de droite.</p></li>
+</ol></li>
+<li><p>Le nombre de points calcul&#233;s (par courbe) est modifiable dans les <em>Attributs</em> (variable <span style="color:red">NbPoints</span>).</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-4,4,-4,5),Marges(0,0,0,0), size(7.5), Width:=8, A:=-3+4*i, B:=3+i, C:=3-3*i, D:=-3-3*i, C1:=4.5*i,C2:=-2*i, C3:=2-i, C4:=-2, FillStyle:=full, FillColor:=lightblue,Color:=red, Bezier(A,C1,C2,B,jump,C,C3,C4,D,jump,A), FillStyle:=none, DotStyle:=cross, DotScale:=2,Color:=black, LabelDot(A,&quot;<span class="math"><em>A</em></span>&quot;,&quot;N&quot;,1), LabelDot(B,&quot;<span class="math"><em>B</em></span>&quot;,&quot;E&quot;,1), LabelDot(C,&quot;<span class="math"><em>C</em></span>&quot;,&quot;SE&quot;,1), LabelDot(D,&quot;<span class="math"><em>D</em></span>&quot;,&quot;SO&quot;,1), LabelDot(C1,&quot;<span class="math"><em>C</em><sub>1</sub></span>&quot;,&quot;E&quot;,1), LabelDot(C2,&quot;<span class="math"><em>C</em><sub>2</sub></span>&quot;,&quot;SO&quot;,1), LabelDot(C3,&quot;<span class="math"><em>C</em><sub>3</sub></span>&quot;,&quot;N&quot;,1), LabelDot(C4,&quot;<span class="math"><em>C</em><sub>4</sub></span>&quot;,&quot;N&quot;,1), LineStyle:=userdash, DashPattern:=[5,2,0.5,2], Width:=6, LineCap:=round, Ligne([A,C1,C2,B,jump,C,C3,C4,D],0)</p>
+</blockquote>
+</blockquote>
+<h3 id="Cartesienne">Cartesienne</h3>
+<ul>
+<li><p><b>Cartesienne( &lt;f(x)&gt; [, n, 1] )</b>.</p></li>
+<li><p><u>Description</u> : trace la courbe cart&#233;sienne d&#8217;&#233;quation <span class="math"><em>y</em>&#8196;=&#8196;<em>f</em>(<em>x</em>)</span>. Le param&#232;tre optionnel &lt;<em>n</em>&gt; est un entier (&#233;gal &#224; 5 par d&#233;faut) qui permet de faire varier le pas de la mani&#232;re suivante: lorsque la distance entre deux points cons&#233;cutifs est sup&#233;rieur &#224; un certain seuil alors on calcule un point interm&#233;diaire [par dichotomie], ceci peut &#234;tre r&#233;p&#233;t&#233; n fois. Si au bout de n it&#233;rations la distance entre deux points cons&#233;cutifs est toujours sup&#233;rieure au seuil, et si la valeur optionnelle <span class="math">1</span> est pr&#233;sente, alors une discontinuit&#233; (<em>jump</em>) est ins&#233;r&#233;e dans la liste des points.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-2,2,-0.1,2),Marges(0.5,0.5,0.5,0.5), size(7.5), tMin:=-2, tMax:=2, Color:=darkgray, Width:=8, LineStyle:=dotted, Grille(0,0.5*(1+i)), Color:=black, LineStyle:=solid,Axes(0,1+i,1), NbPoints:=100, Width:=8, Color:=darkseagreen, Cartesienne(x*Ent(1/x),5,1)</p>
+</blockquote>
+</blockquote>
+<h3 id="Courbe">Courbe</h3>
+<ul>
+<li><p><b>Courbe( &lt;f(t)&gt; [, n, 1] )</b>.</p></li>
+<li><p><u>Description</u> : trace la courbe param&#233;tr&#233;e par &lt;<em>f(t)</em>&gt; o&#249; <span class="math"><em>f</em></span> est &#224; valeurs complexes.</p>
+<p>Le param&#232;tre optionnel &lt;<em>n</em>&gt; est un entier (&#233;gal &#224; 5 par d&#233;faut) qui permet de faire varier le pas de la mani&#232;re suivante: lorsque la distance entre deux points cons&#233;cutifs est sup&#233;rieur &#224; un certain seuil alors on calcule un point interm&#233;diaire (par dichotomie), ceci peut &#234;tre r&#233;p&#233;t&#233; <span class="math"><em>n</em></span> fois. Si au bout de <span class="math"><em>n</em></span> it&#233;rations la distance entre deux points cons&#233;cutifs est toujours sup&#233;rieure au seuil, et si la valeur optionnelle <span class="math">1</span> est pr&#233;sente, alors une discontinuit&#233; (<em>jump</em>) est ins&#233;r&#233;e dans la liste des points.</p></li>
+</ul>
+<h3 id="Droite">Droite</h3>
+<ul>
+<li><p><b>Droite( &lt;A&gt;, &lt;B&gt; [, C] )</b>.</p></li>
+<li><p><u>Description</u> : trace la droite <span class="math">(<em>A</em><em>B</em>)</span> lorsque le troisi&#232;me argument &lt;<em>C</em>&gt; est omis, sinon c&#8217;est la droite d&#8217;&#233;quation cart&#233;sienne &lt;<em>A</em>&gt;x+&lt;<em>B</em>&gt;y=&lt;<em>C</em>&gt;.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-5,5),Marges(0,0,0,0), size(7.5), F:=sqrt(7), F&#8217;:=-F, {foyers} Width:=1, Color:=darkgray, for t from -pi to pi step 0.1 do M:=4*cos(t)+3*i*sin(t), Vn:=(M-F)/abs(M-F)+(M-F&#8217;)/abs(M-F&#8217;), Droite(M,M+Vn),{normale &#224; l&#8217;ellipse} od, Width:=8, Color:=red, Ellipse(0,4,3), LabelDot(F,&quot;<span class="math"><em>F</em></span>&quot;,&quot;S&quot;,1), LabelDot(F&#8217;,&quot;<span class="math"><em>F</em>&#697;</span>&quot;,&quot;S&quot;,1)</p>
+</blockquote>
+</blockquote>
+<h3 id="Ellipse">Ellipse</h3>
+<ul>
+<li><p><b>Ellipse( &lt;A&gt;, &lt;Rx&gt;, &lt;Ry&gt; [, inclinaison] )</b>.</p></li>
+<li><p><u>Description</u> : trace une ellipse de centre &lt;<em>A</em>&gt; de rayons &lt;<em>Rx</em>&gt; et &lt;<em>Ry</em>&gt; sur les axes respectifs <span class="math"><em>O</em><em>x</em></span> et <span class="math"><em>O</em><em>y</em></span>. Le dernier param&#232;tre &lt;<em>inclinaison</em>&gt; est un angle en degr&#233;s (nul par d&#233;faut) qui indique l&#8217;inclinaison de l&#8217;ellipse par rapport &#224; l&#8217;horizontale.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5.25,5.25,-5.25,5.25), Marges(0,0,0,0), size(7.5), background(full,blue), Width:=4, Color:=white, inclin:=[0,35,-35], for z in inclin do Ellipse(0,5,2,z) od, Width:=2*mm, Ellipse(0,1.5,4.5), Label(-0.1, &quot;{6cm} {3.5cm} {R&#160;T&#160;F}&quot;)</p>
+</blockquote>
+</blockquote>
+<h3 id="EllipticArc">EllipticArc</h3>
+<ul>
+<li><p><b>EllipticArc( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;Rx&gt;, &lt;Ry&gt; [, sens] )</b>.</p></li>
+<li><p><u>Description</u> : trace un arc d&#8217;ellipse dont les axes sont <span class="math"><em>O</em><em>x</em></span> et <span class="math"><em>O</em><em>y</em></span> et le centre &lt;<em>A</em>&gt;, le rayon sur <span class="math"><em>O</em><em>x</em></span> est &lt;<em>Rx</em>&gt;, et celui sur <span class="math"><em>O</em><em>y</em></span> est &lt;<em>Ry</em>&gt;. L&#8217;arc est trac&#233; partant de la droite <span class="math">(<em>A</em><em>B</em>)</span> jusqu&#8217;&#224; la droite <span class="math">(<em>A</em><em>C</em>)</span>, l&#8217;argument facultatif &lt;<em>sens</em>&gt; indique: le sens trigonom&#233;trique si sa valeur est <span class="math">1</span> (valeur par d&#233;faut), le sens contraire si sa valeur est <span class="math">&#8197;-&#8197;1</span>.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-2.25,3.75,-2,5),Marges(0,0,0,0),size(7.5), A:=0, B:=3+i, C:=2+4*i, DotScale:=2, Width:=8, Ligne([B,A,C],0), Color:=red, LabelDot(A,&quot;<span class="math"><em>A</em></span>&quot;,&quot;S&quot;,1), LabelDot(B,&quot;<span class="math"><em>B</em></span>&quot;,&quot;N&quot;,1), LabelDot(C,&quot;<span class="math"><em>C</em></span>&quot;,&quot;SE&quot;,1), Arrows:=1, Color:=blue, EllipticArc(B,A,C,2,1,-1), EllipticArc(B,A,C,2,3,1)</p>
+</blockquote>
+</blockquote>
+<p>Remarque: pour un arc de cercle, il suffit de prendre &lt;<em>Rx</em>&gt; et &lt;<em>Ry</em>&gt; &#233;gaux. Mais le plus simple est d&#8217;utiliser la macro <a href="#Arc">Arc</a> qui remplace la commande <strong>Arc</strong> de l&#8217;ancienne version.</p>
+<h3 id="EquaDif">EquaDif</h3>
+<ul>
+<li><p><b>EquaDif( &lt;f(t,x,y)&gt;, &lt;t0&gt;, &lt;x0 + i*y0&gt; [, mode] )</b>.</p></li>
+<li><p><u>Description</u> : trace une solution approch&#233;e de l&#8217;&#233;quation diff&#233;rentielle: <span class="math"><em>x</em>&#697;(<em>t</em>)&#8197;+&#8197;<em>i</em><em>y</em>&#697;(<em>t</em>)&#8196;=&#8196;<em>f</em>(<em>t</em>,&#8198;<em>x</em>,&#8198;<em>y</em>)</span> avec la condition initiale <span class="math"><em>x</em>(<em>t</em>0)&#8196;=&#8196;<em>x</em>0</span> et <span class="math"><em>y</em>(<em>t</em>0)&#8196;=&#8196;<em>y</em>0</span>. Le dernier param&#232;tre est facultatif et peut valoir 0, 1 ou 2:</p>
+<ul>
+<li><p>&lt;<em>mode</em>&gt;=0: la courbe repr&#233;sente les points de coordonn&#233;es <span class="math">(<em>x</em>(<em>t</em>),&#8198;<em>y</em>(<em>t</em>))</span>, c&#8217;est la valeur par d&#233;faut.</p></li>
+<li><p>&lt;<em>mode</em>&gt;=1: la courbe repr&#233;sente les points de coordonn&#233;es <span class="math">(<em>t</em>,&#8198;<em>x</em>(<em>t</em>))</span>.</p></li>
+<li><p>&lt;<em>mode</em>&gt;=2: la courbe repr&#233;sente les points de coordonn&#233;es <span class="math">(<em>t</em>,&#8198;<em>y</em>(<em>t</em>))</span>.</p></li>
+</ul>
+<p>C&#8217;est la m&#233;thode de {Runge-Kutta} d&#8217;ordre 4 qui est utilis&#233;e.</p></li>
+<li><p><u>Exemple(s)</u> :  l&#8217;&#233;quation <span class="math"><em>x</em>&#697;&#697;&#8197;-&#8197;<em>x</em>&#697;&#8197;-&#8197;<em>t</em><em>x</em>&#8196;=&#8196;sin(<em>t</em>)</span> avec la condition initiale <span class="math"><em>x</em>(0)&#8196;=&#8196;&#8197;-&#8197;1</span> et <span class="math"><em>x</em>&#697;(0)&#8196;=&#8196;1&#8197;/&#8197;2</span>, se met sous la forme: <br /><span class="math">$\begin{pmatrix}
+X'\\Y'\end{pmatrix}=\begin{pmatrix} 0&amp;1\\t&amp;1\end{pmatrix}\begin{pmatrix}X\\Y\end{pmatrix}+
+\begin{pmatrix}0\\\sin(t)\end{pmatrix}$</span><br /> en posant <span class="math"><em>X</em>&#8196;=&#8196;<em>x</em></span> et <span class="math"><em>Y</em>&#8196;=&#8196;<em>x</em>&#697;</span>:</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-10.5,2.5,-1.5,4.5),Marges(0,0,0,0), size(7.5,0), Arrows:=1, Width:=4, Axes(0,1+i), Arrows:=0, LabelAxe(y,4.25*i,&quot;<span class="math"><em>x</em></span>&quot;), LabelAxe(x,2,&quot;<span class="math"><em>t</em></span>&quot;,2), Width:=8, Color:=red, tMin:=-10, tMax:=2, EquaDif(y+i*(t*x+y+sin(t)),0,-1+i/2, 1), Color:=black, LabelStyle:=stacked, Label(-6+2*i, &quot;<span class="math"><em>x</em>&#697;&#697;&#8197;-&#8197;<em>t</em><em>x</em>&#697;&#8197;-&#8197;<em>x</em>&#8196;=&#8196;sin(<em>t</em>)</span><br /> avec <span class="math"><em>x</em>(0)&#8196;=&#8196;&#8197;-&#8197;1</span> et <span class="math">$x'(0)=\frac12$</span>&quot;)</p>
+</blockquote>
+</blockquote>
+<h3 id="Grille">Grille</h3>
+<ul>
+<li><p><b>Grille( &lt;origine&gt;, &lt;graduationX + i*graduationY&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine une grille, &lt;<em>origine</em>&gt; est l&#8217;affixe du point consid&#233;r&#233; comme origine, &lt;<em>graduationX</em>&gt; est le pas des graduations sur l&#8217;axe Ox, et &lt;<em>graduationY</em>&gt; celui de l&#8217;axe Oy, une graduation &#233;gale &#224; z&#233;ro signifie l&#8217;absence de graduation.</p></li>
+<li><p>On peut modifier dans les <em>Attributs</em> le style de ligne, l&#8217;&#233;paisseur et la couleur. La grille de ne fait pas appra&#238;tre de graduations, on peut dessiner des axes par dessus.</p></li>
+</ul>
+<h3 id="Implicit">Implicit</h3>
+<ul>
+<li><p><b>Implicit( &lt;f(x,y)&gt; [, n, m] )</b>.</p></li>
+<li><p><u>Description</u> : trace la courbe implicite d&#8217;&#233;quation <span class="math"><em>f</em>(<em>x</em>,&#8198;<em>y</em>)&#8196;=&#8196;0</span>. L&#8217;intervalle des abscisses est subdivis&#233; en &lt;<em>n</em>&gt; parties et l&#8217;intervalle des ordonn&#233;es en &lt;<em>m</em>&gt; parties, par d&#233;faut <span class="math"><em>n</em>&#8196;=&#8196;<em>m</em>&#8196;=&#8196;25</span>. Sur chaque pav&#233; ainsi obtenu on teste s&#8217;il y a un changement de signe, auquel cas on applique une dichotomie sur les bords du pav&#233;.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-5,5),Marges(0,0,0,0), size(7.5), Arrows:=1, Width:=4, Axes(0,1+i), Arrows:=0, Width:=8, Color:=red, Implicit( sin(x*y) )</p>
+</blockquote>
+</blockquote>
+<h3 id="Label">Label</h3>
+<ul>
+<li><p><b>Label( &lt;affixe1&gt;, &lt;texte1&gt;,..., &lt;affixeN&gt;, &lt;texteN&gt; )</b>.</p></li>
+<li><p><u>Description</u> : place la cha&#238;ne de caract&#232;res &lt;<em>texte1</em>&gt; &#224; la position &lt;<em>affixe1</em>&gt; ... etc. Les param&#232;tres &lt;<em>texte1</em>&gt;,..., &lt;<em>texteN</em>&gt; sont donc interpr&#233;t&#233;s comme des <a href="#chaine">cha&#238;nes de caract&#232;res</a>.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-5,5),Marges(0,0,0,0), size(7.5,0), C:=Cube(Origin, M(3,3,0)), S:=Sommets(C), Point3D(S), DrawPoly(C,0), k:=0, for Z in S by 2 do Inc(k,1), Label(Proj3D(Z)+ if k&gt;4 then 0.5*i else -0.5*i fi, [&quot;<span class="math">$S_&quot;,k,&quot;$</span>&quot;]) od</p>
+</blockquote>
+</blockquote>
+<h3 id="Ligne">Ligne</h3>
+<ul>
+<li><p><b>Ligne( &lt;liste&gt;, &lt;ferm&#233;e&gt; [, rayon] )</b>.</p></li>
+<li><p><u>Description</u> : trace la ligne polygonale d&#233;finie par la liste, si le param&#232;tre &lt;<em>ferm&#233;e</em>&gt; vaut 1, la ligne polygonale sera ferm&#233;e, si sa valeur est 0 la ligne est ouverte. Si l&#8217;argument &lt;<em>rayon</em>&gt; est pr&#233;cis&#233; (0 par d&#233;faut), alors les &quot;angles&quot; de la ligne polygonale sont arrondis avec un arc de cercle dont le rayon correspond &#224; l&#8217;argument &lt;<em>rayon</em>&gt;.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>Marges(0,0,0,0), size(7.5), A:=-5-5*i, B:=5*i, C:=5-5*i,niv:=6, Tr:=[A,B,C,jump], {initial} for k from 1 to niv do Tr:=[hom(Tr,A,0.5),hom(Tr,B,0.5), hom(Tr,C,0.5)] od, FillStyle:=full,FillColor:=blue, Ligne(Tr,1)</p>
+</blockquote>
+</blockquote>
+<h3 id="Path">Path</h3>
+<ul>
+<li><p><b>Path( &lt;liste&gt; [, ferm&#233; (0/1)]</b></p></li>
+<li><p><u>Description</u> : trace le chemin repr&#233;sent&#233; par &lt;<em>liste</em>&gt; et ferme la derni&#232;re composante de celui-ci si l&#8217;argument optionnel vaut <span class="math">1</span> (sa valeur par d&#233;faut est <span class="math">0</span>). La liste est une succession de points (affixes) et d&#8217;instructions indiquant &#224; quoi correspondent ces points, ces instructions sont:</p>
+<ul>
+<li><p><strong>line</strong>: relie les points par une ligne polygonale,</p></li>
+<li><p><strong>linearc</strong>: relie les points par une ligne polygonale mais les angles sont arrondis par un arc de cercle, la valeur pr&#233;c&#233;dent la commande linearc est interpr&#233;t&#233;e comme le rayon de ces arcs.</p></li>
+<li><p><strong>arc</strong>: dessine un arc de cercle, ce qui n&#233;cessite quatre arguments: 3 points et le rayon, plus &#233;ventuellement un cinqui&#232;me argument: le sens (+/- 1), le sens par d&#233;faut est 1 (sens trigonom&#233;trique).</p></li>
+<li><p><strong>ellipticArc</strong>: dessine un arc d&#8217;ellipse, ce qui n&#233;cessite cinq arguments: 3 points, le rayonX, le rayonY, plus &#233;ventuellement un sixi&#232;me argument: le sens (+/- 1), le sens par d&#233;faut est 1 (sens trigonom&#233;trique), plus &#233;ventuellement un septi&#232;me argument: l&#8217;inclinaison en degr&#233;s du grand axe par rapport &#224; l&#8217;horizontale.</p></li>
+<li><p><strong>curve</strong>: relie les points par une spline cubique naturelle.</p></li>
+<li><p><strong>bezier</strong>: relie le premier et le quatri&#232;me point par une courbe de b&#233;zier (les deuxi&#232;me et troisi&#232;me points sont les points de contr&#244;le).</p></li>
+<li><p><strong>circle</strong>: desine un cercle, ce qui necessite deux arguments: un point et le centre, ou bien trois arguments qui sont trois points du cercle.</p></li>
+<li><p><strong>ellipse</strong>: dessine une ellipse, les arguments sont: un point, le centre, rayon rX, rayon rY, inclinaison du grand axe en degr&#233;s par rapport &#224; l&#8217;horizontale (facultatif).</p></li>
+<li><p><strong>move</strong>: indique un d&#233;placement sans trac&#233;.</p></li>
+<li><p><strong>closepath</strong>: ferme la composante en cours.</p></li>
+</ul>
+<p>Par convention, le premier point du tron&#231;on num&#233;ro n+1 est le dernier point du tron&#231;on num&#233;ro n.</p></li>
+<li><p><u>Exemple(s)</u> : </p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-4,6),Marges(0,0,0,0),size(7.5), Axes(2*i,1+i),Eofill:=1, FillStyle:=full,FillOpacity:=0.9, FillColor:= blue, Width:=8, Path([-4,i,circle, -3+2*i,move,-3,-2,line, 0,2,2,-1,arc, 3,3+3*i,0.5,linearc, 1,-1+5*i,-3+2*i,bezier, closepath, ])</p>
+</blockquote>
+</blockquote>
+<h3 id="Point">Point</h3>
+<ul>
+<li><p><b>Point( &lt;A1&gt;, ..., &lt;An&gt; )</b>.</p></li>
+<li><p><u>Description</u> : repr&#233;sente le nuage de points &lt;<em>A1</em>&gt; ... &lt;<em>An</em>&gt;.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(2.75,4,0,1), Marges(0.75,0.5,0.5,0.5),size(7.5), Axes(Xmin+i*Ymin,0.25+0.2*i,1+i), pas:=0.001, Color:=red, DotScale:=0.1, Point( for r from Xmin to Xmax step pas do u:=0.5, for k from 1 to 25 do u:=r*u*(1-u) od, for k from 1 to 25 do u:=r*u*(1-u), r+i*u od od)</p>
+</blockquote>
+</blockquote>
+<h3 id="Polaire">Polaire</h3>
+<ul>
+<li><p><b>Polaire( &lt;r(t)&gt; [, n, 0/1] )</b>.</p></li>
+<li><p><u>Description</u> : trace la courbe polaire d&#8217;&#233;quation <span class="math">&#961;&#8196;=&#8196;<em>r</em>(<em>t</em>)</span>, &lt;<em>expression</em>&gt;. Le param&#232;tre optionnel &lt;<em>n</em>&gt; est un entier (&#233;gal &#224; 5 par d&#233;faut) qui permet de faire varier le pas de la mani&#232;re suivante: lorsque la distance entre deux points cons&#233;cutifs est sup&#233;rieur &#224; un certain seuil alors on calcule un point interm&#233;diaire (par dichotomie), ceci peut &#234;tre r&#233;p&#233;t&#233; <span class="math"><em>n</em></span> fois. Si au bout de <span class="math"><em>n</em></span> it&#233;rations la distance entre deux points cons&#233;cutifs est toujours sup&#233;rieure au seuil, et si la valeur optionnelle <span class="math">1</span> est pr&#233;sente, alors une discontinuit&#233; (<em>jump</em>) est ins&#233;r&#233;e dans la liste des points.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-3,2,-2,3),Marges(0.25,0.25,0.25,0.25), size(7.5),Width:=4, Axes(0,1+i),NbPoints:=250,tMin:=-25,tMax:=25, courbe:=Get(Polaire((t+1)/(t-1))), ptDoubles:= courbe InterL courbe, Width:=8, Color:= blue, Ligne(courbe,0), DotStyle:=dotcircle, DotScale:=2, Point(ptDoubles), Label(1+2*i,&quot;<span class="math">$r(t)=\dfrac{t+1}{t-1}$</span>&quot;)</p>
+</blockquote>
+</blockquote>
+<h3 id="Spline">Spline</h3>
+<ul>
+<li><p><b>Spline( &lt;V0&gt;, &lt;A0&gt;,..., &lt;An&gt;, &lt;Vn&gt; )</b>.</p></li>
+<li><p><u>Description</u> : trace la spline cubique passant par les points &lt;<em>A0</em>&gt; jusqu&#8217;&#224; &lt;<em>An</em>&gt;. &lt;<em>V0</em>&gt; et &lt;<em>Vn</em>&gt; d&#233;signent les vecteurs vitesses aux extr&#233;mit&#233;s [contraintes], si l&#8217;un d&#8217;eux est nul alors l&#8217;extr&#233;mit&#233; correspondante est consid&#233;r&#233;e comme libre (sans contrainte).</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-5,5),Marges(0.25,0.25,0.25,0.25), size(7.5),Width:=4,Axes(0,1+i), A:= -4-3*i, B:=-2+2*i, C:=1-3*i, D:=4+3*i, LabelDot(A,&quot;<span class="math"><em>A</em></span>&quot;,&quot;S&quot;,1),LabelDot(B,&quot;<span class="math"><em>B</em></span>&quot;,&quot;N&quot;,1), LabelDot(C,&quot;<span class="math"><em>C</em></span>&quot;,&quot;S&quot;,1),LabelDot(D,&quot;<span class="math"><em>D</em></span>&quot;,&quot;O&quot;,1), Width:=8,Color:=red, Spline(0,A,B,C,D,0), Ligne([-4.5+4.5*i,-4+4.5*i],0), LabelStyle:=left, Label(-3.5+4.5*i,&quot;libre&quot;), Color:=blue,Spline(5,A,B,C,D,5*i), Ligne([-4.5+3.5*i,-4+3.5*i],0), Label(-3.5+3.5*i,&quot;contrainte&quot;), Width:=4, Arrows:=1, Ligne([A,A+2,jump,D,D+2*i],0)</p>
+</blockquote>
+</blockquote>
+<h2 id="commandes-de-dessin-bitmap">Commandes de dessin bitmap</h3>
+<p>La version propose quelques commandes de base pour faire du dessin bitmap. Ce dessin bitmap peut &#234;tre enregistr&#233; (au format <em>bmp</em>) mais il n&#8217;est pas pris en compte par les autres exports du logiciel. Ces commandes ne sont fonctionnelles qu&#8217;avec la version GUI de TeXgraph. Chaque pixel est rep&#233;r&#233; son affixe <span class="math"><em>x</em>&#8197;+&#8197;<em>i</em><em>y</em></span> o&#249; <span class="math"><em>x</em></span> et <span class="math"><em>y</em></span> sont deux entiers, l&#8217;origine est en haut &#224; gauche de la zone de dessin <strong>marges exclues</strong>, l&#8217;axe <span class="math"><em>O</em><em>x</em></span> est dirig&#233; vers la droite et l&#8217;axe <span class="math"><em>O</em><em>y</em></span> vers le bas.</p>
+<h3 id="DelBitmap">DelBitmap</h3>
+<ul>
+<li><p><b>DelBitmap()</b>.</p></li>
+<li><p><u>Description</u> : d&#233;truit le bitmap en cours.</p></li>
+</ul>
+<h3 id="MaxPixels">MaxPixels</h3>
+<ul>
+<li><p><b>MaxPixels()</b>.</p></li>
+<li><p><u>Description</u> : renvoie la taille de la zone graphique en pixels sous la forme: <span style="font-style:italic">maxX+i*maxY</span>, ainsi pour les coordonn&#233;es des pixels (coordonn&#233;es enti&#232;res), l&#8217;intervalle des abscisses est <span style="font-style:italic">[0 .. maxX]</span> et celui des ordonn&#233;es <span style="font-style:italic">[0 .. maxY]</span>. Chaque pixel est rep&#233;r&#233; par des coordonn&#233;es enti&#232;res, donc chaque pixel a une affixe <span class="math"><em>a</em>&#8197;+&#8197;<em>i</em><em>b</em></span> avec <span class="math"><em>a</em></span> dans <span style="font-style:italic">[0 .. maxX]</span> et <span class="math"><em>b</em></span> dans <span style="font-style:italic">[0 .. maxY]</span>. L&#8217;origine &#233;tant le coin sup&#233;rieur gauche de la zone graphique <strong>marges exclues</strong>.</p></li>
+</ul>
+<h3 id="NewBitmap">NewBitmap</h3>
+<ul>
+<li><p><b>NewBitmap( [fond] )</b>.</p></li>
+<li><p><u>Description</u> : permet de cr&#233;er un nouveau bitmap (vide). Par d&#233;faut la couleur du fond est le blanc.</p></li>
+</ul>
+<h3 id="Pixel">Pixel</h3>
+<ul>
+<li><p><b>Pixel( &lt;liste&gt; )</b>.</p></li>
+<li><p><u>Description</u> : permet de d&#8217;allumer une &lt;<em>liste</em>&gt; de pixels. Cette liste est de la forme: <span style="font-style:italic">[affixe, couleur, affixe, couleur, ...]</span>. Les affixes des pixels sont de la forme <span class="math"><em>a</em>&#8197;+&#8197;<em>i</em><em>b</em></span> avec <span class="math"><em>a</em></span> et <span class="math"><em>b</em></span> des entiers positifs ou nuls, l&#8217;origine &#233;tant le coin sup&#233;rieur gauche de la zone graphique <strong>marges exclues</strong>.</p></li>
+</ul>
+<h3 id="Pixel2Scr">Pixel2Scr</h3>
+<ul>
+<li><p><b>Pixel2Scr( &lt;affixe&gt; )</b>.</p></li>
+<li><p><u>Description</u> : permet de convertir l&#8217;&lt;<em>affixe</em>&gt; d&#8217;un pixel (coordonn&#233;es enti&#232;res) en affixe dans le rep&#232;re de l&#8217;utilisateur &#224; l&#8217;&#233;cran.</p></li>
+</ul>
+<h3 id="Scr2Pixel">Scr2Pixel</h3>
+<ul>
+<li><p><b>Scr2Pixel( &lt;affixe&gt; )</b>.</p></li>
+<li><p><u>Description</u> : permet de convertir l&#8217;&lt;<em>affixe</em>&gt; d&#8217;un point dans le rep&#232;re de l&#8217;utilisateur &#224; l&#8217;&#233;cran en coordonn&#233;es enti&#232;res (affixe du pixel correspondant au point).</p></li>
+<li><p><u>Exemple(s)</u> :  un ensemble de Julia, la commande est &#224; placer dans un &#233;l&#233;ment graphique utilisateur. L&#8217;image <em>png</em> a &#233;t&#233; obtenue &#224; partir du bouton <em>snapshot</em> de l&#8217;interface graphique en prenant l&#8217;export <em>bmp</em> puis une conversion en <em>png</em>:</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-1.5,1.5,-1,1),Marges(0,0,0,0),size(7.5), NewBitmap(), T:=100, m:=MaxPixels(), c:=-0.181-0.667*i, for x from 0 to Re(m) do Pixel( for y from 0 to Im(m) do N:=0, z:=Pixel2Scr(x+i*y), repeat z:=z^2+c, Inc(N,1) until (N=T) Or (abs(z)&gt;2) od, x+i*y, MixColor(darkred,1-N/T,yellow,N/T) od ) od</p>
+</blockquote>
+</blockquote>
+<h2 id="macros-graphiques-de-texgraph.mac">Macros graphiques de TeXgraph.mac</h3>
+<h3 id="angleD">angleD</h3>
+<ul>
+<li><p><b>angleD( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;r&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine l&#8217;angle <span class="math">$\widehat{BAC}$</span> avec un parall&#232;logramme de cot&#233; r.</p></li>
+</ul>
+<h3 id="Arc">Arc</h3>
+<ul>
+<li><p><b>Arc( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;R&gt; [, sens] )</b>.</p></li>
+<li><p><u>Description</u> : trace un arc de cercle de centre &lt;<em>A</em>&gt; et de rayon &lt;<em>R</em>&gt;. L&#8217;arc est trac&#233; partant de la droite <span class="math">(<em>A</em><em>B</em>)</span> jusqu&#8217;&#224; la droite <span class="math">(<em>A</em><em>C</em>)</span>, l&#8217;argument facultatif &lt;<em>sens</em>&gt; indique: le sens trigonom&#233;trique si sa valeur est <span class="math">1</span> (valeur par d&#233;faut), le sens contraire si valeur est <span class="math">&#8197;-&#8197;1</span>.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-2.25,3.75,-2,5),Marges(0,0,0,0),size(7.5), A:=0, B:=3+i, C:=2+4*i, DotScale:=2, Width:=8, Ligne([B,A,C],0), Color:=red, LabelDot(A,&quot;<span class="math"><em>A</em></span>&quot;,&quot;S&quot;,1), LabelDot(B,&quot;<span class="math"><em>B</em></span>&quot;,&quot;N&quot;,1), LabelDot(C,&quot;<span class="math"><em>C</em></span>&quot;,&quot;SE&quot;,1), Arrows:=1, Color:=blue, Arc(B,A,C,1,-1), Arc(B,A,C,2,1)</p>
+</blockquote>
+</blockquote>
+<h3 id="arcBezier">arcBezier</h3>
+<ul>
+<li><p><b>arcBezier( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;r&gt; [,sens] )</b>.</p></li>
+<li><p><u>Description</u> : a le m&#234;me effet que la macro graphique <span style="font-style:italic">Arc</span> mais l&#8217;arc est dessin&#233; avec des courbes de Bezier.</p></li>
+</ul>
+<h3 id="axes-1">axes</h3>
+<ul>
+<li><p><b>axes( &lt;[origine, etendueX, etendueY]&gt;, &lt;gradX+i*gradY&gt; [, subdivX+i*subdivY, posOriginX+i*posOriginY, num, &quot;texte&quot;, den, firstnum] )</b>.</p></li>
+<li><p><u>Description</u> : pour tracer et graduer les axes passant par &lt;<em>origine</em>&gt; (affixe), elle s&#8217;utilise comme la commande <a href="#Axes">Axes</a> et utilise donc les variables <em>xylabelpos</em> et <em>xyticks</em>. Par d&#233;faut les axes occupent toute la fen&#234;tre si les param&#232;tres optionnels &lt;<em>etendueX</em>&gt; et &lt;<em>etendueY</em>&gt; sont omis. Le param&#232;tre &lt;<em>etendueX</em>&gt; repr&#233;sente sous forme complexe l&#8217;intervalle des abcisses: <code>xmin+i*xmax</code>, de m&#234;me pour les ordonn&#233;es avec le param&#232;tre &lt;<em>etendueY</em>&gt;, les axes sont alors limit&#233;s &#224; ces intervalles. Remarque: pour pr&#233;ciser une valeur de &lt;<em>etendueY</em>&gt; sans pr&#233;ciser de valeur pour &lt;<em>etendueX</em>&gt;, il suffit de mettre <em>jump</em> &#224; la place de &lt;<em>etendueX</em>&gt; (et non pas <em>Nil</em>!).</p></li>
+<li><p>Le param&#232;tre optionnel &lt;<em>subdivX+i*subdivY</em>&gt; indique le nombre de subdivisions par unit&#233; sur chaque axe (0 par d&#233;faut).</p></li>
+<li><p>Le param&#232;tre optionnel &lt;<em>posOriginX+i*posOriginY</em>&gt; permet de positionner le label de l&#8217;origine:</p>
+<ul>
+<li><p>&lt;<em>posOriginX</em>&gt;=0: pas de label &#224; l&#8217;origine (idem pour &lt;<em>posOriginY</em>&gt;=0),</p></li>
+<li><p>&lt;<em>posOriginX</em>&gt;=1: label normal &#224; l&#8217;origine (idem pour &lt;<em>posOriginY</em>&gt;=1),,</p></li>
+<li><p>&lt;<em>posOriginX</em>&gt;=2: label d&#233;cal&#233; &#224; droite de l&#8217;origine et en haut pour &lt;<em>posOriginY</em>&gt;=2 (valeurs par d&#233;faut),</p></li>
+<li><p>&lt;<em>posOriginX</em>&gt;=-2 label d&#233;cal&#233; &#224; gauche de l&#8217;origine et en bas pour &lt;<em>posOriginY</em>&gt;=-2.</p></li>
+</ul></li>
+<li><p>Sur les 2 axes, chaque label est multipli&#233; par la fraction &lt;<em>num/den</em>&gt; (1 par d&#233;faut), ajout&#233; &#224; &lt;<em>firstnum/den</em>&gt; (l&#8217;origine par d&#233;faut) et accompagn&#233; du &lt;<em>&quot;texte&quot;</em>&gt; au num&#233;rateur. Pour que le s&#233;parateur d&#233;cimal soit la virgule &#224; la place du point, il suffit de mettre la variable <span style="font-style:italic;color:red">usecomma</span> &#224; la valeur <span class="math">1</span>. Cette macro est &#233;galement sensible aux variables <span style="font-style:italic;color:red">dollar</span> (pour ajouter ou non des $ autour des labels des graduations), et <span style="font-style:italic;color:red">nbdeci</span> qui fixe le nombre de d&#233;cimales affich&#233;es.</p></li>
+<li><p><u>Exemple(s)</u> :  pour avoir des axes gradu&#233;s en <span class="math">&#960;&#8197;/&#8197;2</span> en <span class="math">&#960;&#8197;/&#8197;2</span>: <span style="color:red">axes(0, pi*(1+i)/2, 1+i, 2+2*i, 1, &quot;&#92;pi&quot;, 2, 0)</span>. Contrairement &#224; la commande Axes, cette macro est sensible aux modifications de la matrice courante.</p></li>
+</ul>
+<h3 id="axeX">axeX</h3>
+<ul>
+<li><p><b>axeX( &lt;[origine, posOrigine, etendue]&gt;, &lt;Xpas&gt; [, Subdiv, labelPos , num, &quot;&quot;texte&quot;&quot;, den, firstnum] )</b>.</p></li>
+<li><p><u>Description</u> : pour tracer et graduer un axe des abscisses passant par &lt;<em>origine</em>&gt; et avec un pas de &lt;<em>Xpas</em>&gt;. Le param&#232;tre &lt;<em>etendue</em>&gt; repr&#233;sente sous forme complexe l&#8217;intervalle des abscisses <span style="font-style:italic">xmin+i*xmax</span>, si celui-ci est omis, alors le trac&#233; occupe la fen&#234;tre. Remarque: pour pr&#233;ciser une valeur de &lt;<em>etendue</em>&gt; sans pr&#233;ciser de valeur pour &lt;<em>posOrigine</em>&gt;, il suffit de mettre <em>jump</em> &#224; la place de &lt;<em>posOrigine</em>&gt; (et non pas <em>Nil</em>!).</p></li>
+<li><p>&lt;<em>Subdiv</em>&gt; est le nombre de subdivisions par unit&#233;, chaque abscisse est multipli&#233;e par la fraction &lt;<em>num/den</em>&gt; (1 par d&#233;faut), ajout&#233;e &#224; &lt;<em>firstnum/den</em>&gt; (l&#8217;origine par d&#233;faut) et accompagn&#233;e du &lt;<em>&quot;texte&quot;</em>&gt; au num&#233;rateur. Pour que le s&#233;parateur d&#233;cimal soit la virgule &#224; la place du point, il suffit de mettre la variable <span style="font-style:italic;color:red">usecomma</span> &#224; la valeur <span class="math">1</span>. Cette macro est &#233;galement sensible aux variables <span style="font-style:italic;color:red">dollar</span> (pour ajouter ou non des $ autour des labels des graduations), et <span style="font-style:italic;color:red">nbdeci</span> qui fixe le nombre de d&#233;cimales affich&#233;es.</p></li>
+<li><p>Les param&#232;tres optionnels &lt;<em>posOrigine</em>&gt; et &lt;<em>labelpos</em>&gt; permettent de positionner les labels:</p>
+<ul>
+<li><p>&lt;<em>posOrigine</em>&gt;=0: pas de label &#224; l&#8217;origine,</p></li>
+<li><p>&lt;<em>posOrigine</em>&gt;=1: label normal &#224; l&#8217;origine,</p></li>
+<li><p>&lt;<em>posOrigine</em>&gt;=2: label d&#233;cal&#233; &#224; droite &#224; l&#8217;origine (valeur par d&#233;faut),</p></li>
+<li><p>&lt;<em>posOrigine</em>&gt;=-2 label d&#233;cal&#233; &#224; gauche &#224; l&#8217;origine,</p></li>
+<li><p>&lt;<em>labelPos</em>&gt;=0 : pas de label du tout,</p></li>
+<li><p>&lt;<em>Re(labelpos)</em>&gt;=top: labels au-dessus,</p></li>
+<li><p>Re(&lt;<em>labelPos</em>&gt;)=bottom : labels en-dessous (valeur par d&#233;faut),</p></li>
+<li><p>Im(&lt;<em>Im(labelPos</em>&gt;)=1: labels orthogonaux &#224; l&#8217;axe.</p></li>
+</ul></li>
+</ul>
+<h3 id="axeY">axeY</h3>
+<ul>
+<li><p><b>axeY(&lt;[origine, posOrigine, etendue]&gt;, &lt;Ypas&gt; [, Subdiv, labelPos , num, &quot;&quot;texte&quot;&quot;, den, firstnum] )</b>.</p></li>
+<li><p><u>Description</u> : pour tracer et graduer un axe des abscisses passant par &lt;<em>origine</em>&gt; et avec un pas de &lt;<em>Ypas</em>&gt;. Le param&#232;tre &lt;<em>etendue</em>&gt; repr&#233;sente sous forme complexe l&#8217;intervalle des ordonn&#233;es <span style="font-style:italic">ymin+i*ymax</span>, si celui-ci est omis, alors le trac&#233; occupe la fen&#234;tre. Remarque: pour pr&#233;ciser une valeur de &lt;<em>etendue</em>&gt; sans pr&#233;ciser de valeur pour &lt;<em>posOrigine</em>&gt;, il suffit de mettre <em>jump</em> &#224; la place de &lt;<em>posOrigine</em>&gt; (et non pas <em>Nil</em>!).</p></li>
+<li><p>&lt;<em>Subdiv</em>&gt; est le nombre de subdivisions par unit&#233;, chaque ordonn&#233;e est multipli&#233;e par la fraction &lt;<em>num/den</em>&gt; (1 par d&#233;faut), ajout&#233;e &#224; &lt;<em>firstnum/den</em>&gt; (l&#8217;origine par d&#233;faut) et accompagn&#233;e du &lt;<em>&quot;texte&quot;</em>&gt; au num&#233;rateur. Pour que le s&#233;parateur d&#233;cimal soit la virgule &#224; la place du point, il suffit de mettre la variable <span style="font-style:italic;color:red">usecomma</span> &#224; la valeur <span class="math">1</span>. Cette macro est &#233;galement sensible aux variables <span style="font-style:italic;color:red">dollar</span> (pour ajouter ou non des $ autour des labels des graduations), et <span style="font-style:italic;color:red">nbdeci</span> qui fixe le nombre de d&#233;cimales affich&#233;es.</p></li>
+<li><p>Les param&#232;tres optionnels &lt;<em>posOrigine</em>&gt; et &lt;<em>labelpos</em>&gt; permettent de positionner les labels:</p>
+<ul>
+<li><p>&lt;<em>posOrigine</em>&gt;=0: pas de label &#224; l&#8217;origine,</p></li>
+<li><p>&lt;<em>posOrigine</em>&gt;=1: label normal &#224; l&#8217;origine,</p></li>
+<li><p>&lt;<em>posOrigine</em>&gt;=2: label d&#233;cal&#233; vers le haut &#224; l&#8217;origine (valeur par d&#233;faut),</p></li>
+<li><p>&lt;<em>posOrigine</em>&gt;=-2 label d&#233;cal&#233; vers le bas &#224; l&#8217;origine,</p></li>
+<li><p>&lt;<em>labelPos</em>&gt;=0 : pas de label du tout,</p></li>
+<li><p>&lt;<em>Re(labelpos)</em>&gt;=left: labels &#224; gauche de l&#8217;axe (valeur par d&#233;faut),</p></li>
+<li><p>Re(&lt;<em>labelPos</em>&gt;=right : labels &#224; droite de l&#8217;axe,</p></li>
+<li><p>Im(&lt;<em>labelPos</em>&gt;)=1: labels orthogonaux &#224; l&#8217;axe.</p></li>
+</ul></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-5,5),size(7.5), LabelSize:=footnotesize, //graphique du haut SaveWin(), view(-5,5,0.25,5),Width:=6, Arrows:=1, SetMatrix([2.5*i,2/pi,2*i]), axeX(0,pi/2,Nil,Nil,1,&quot;&quot;,2), axeY(0,1), Arrows:=0, Color:=red, Width:=8, tMin:=-2*pi, tMax:=2*pi, Cartesienne(sin(x)), Label(pi*1.65+i,&quot;<span class="math"><em>f</em>(<em>x</em>)&#8196;=&#8196;sin(<em>x</em>)</span>&quot;),RestoreWin(), //graphique du bas SaveWin(), Color:=black, view(-5,5,-5,-0.25), SetMatrix([-5.5*i,2,i]), Width:=6, Arrows:=1, usecomma:=1, axeX([i,0],0.5), axeY([i,0],1,Nil,Nil,1,&quot;a&quot;), Arrows:=0, Color:=blue, Width:=8, Cartesienne(x^2+1), Label(1+4.75*i,&quot;<span class="math"><em>g</em>(<em>x</em>)&#8196;=&#8196;<em>x</em><sup>2</sup>&#8197;+&#8197;<em>a</em></span>&quot;), RestoreWin()</p>
+</blockquote>
+</blockquote>
+<h3 id="background">background</h3>
+<ul>
+<li><p><b>background( &lt;fillstyle&gt;, &lt;fillcolor&gt; )</b>.</p></li>
+<li><p><u>Description</u> : permet de remplir le fond de la fen&#234;tre graphique avec le style et la couleur demand&#233;e. Cette macro met &#224; jour la variable <span style="font-style:italic;color:red">backcolor</span>.</p></li>
+</ul>
+<h3 id="bbox">bbox</h3>
+<ul>
+<li><p><b>bbox()</b>.</p></li>
+<li><p><u>Description</u> : permet d&#8217;ajuster la fen&#234;tre &#224; la &quot;bounding box&quot; autour du dessin courant. Cette macro est destin&#233;e &#224; &#234;tre utilis&#233;e dans la ligne de commande en bas de la fen&#234;tre principale, et non pas dans un &#233;l&#233;ment graphique.</p></li>
+</ul>
+<h3 id="centerView">centerView</h3>
+<ul>
+<li><p><b>centerView( &lt;affixe&gt; )</b>.</p></li>
+<li><p><u>Description</u> : permet de centrer la fen&#234;tre graphique sur le point repr&#233;sent&#233; par &lt;<em>affixe</em>&gt;, sans changer les dimensions courantes du graphique. Cette macro est plut&#244;t destin&#233;e &#224; &#234;tre utilis&#233;e dans la ligne de commande en bas de la fen&#234;tre principale.</p></li>
+</ul>
+<h3 id="Cercle">Cercle</h3>
+<ul>
+<li><p><b>Cercle( &lt;A&gt;, &lt;r&gt; [, B] )</b>.</p></li>
+<li><p><u>Description</u> : trace un cercle de centre &lt;<em>A</em>&gt; et de rayon &lt;<em>r</em>&gt; lorsque le troisi&#232;me param&#232;tre est omis, sinon c&#8217;est le cercle d&#233;fini par les trois points &lt;<em>A</em>&gt;, &lt;<em>r</em>&gt; et &lt;<em>B</em>&gt;.</p>
+<p>Pour les macros <span style="font-style:italic">Arc</span> et <span style="font-style:italic">Cercle</span>, on peut s&#8217;attendre &#224; des surprises dans le r&#233;sultat final si le rep&#232;re n&#8217;est pas orthonorm&#233;! Le rep&#232;re est orthonorm&#233; lorsque les variables <span style="font-style:italic;color:red">Xscale</span> et <span style="font-style:italic;color:red">Yscale</span> sont &#233;gales, voir option <a href="#param">Param&#232;tres/Fen&#234;tre</a>.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-1,3),Marges(0,0,0,0), size(7.5), Seg(-5,5), for t in [-4,-1.85,0,1.85,3] do M:=t-sin(t)+i*(1-cos(t)), I:=t+i, DotStyle:=cross, Point(I), DotStyle:=bigdot, Point(M), Cercle(I,1), Seg(M,I), Arrows:=1, Arc(M,I,t,0.5,t), Arrows:=0, LineStyle:=dashed, Seg(I,t), LineStyle:=solid od, Width:=8,Color:=red, Courbe( t-sin(t)+i*(1-cos(t)))</p>
+</blockquote>
+</blockquote>
+<h3 id="Clip">Clip</h3>
+<ul>
+<li><p><b>Clip( &lt;liste&gt; )</b>.</p></li>
+<li><p><u>Description</u> : permet de clipper les &#233;l&#233;ments graphiques d&#233;j&#224; dessin&#233;s avec la &lt;<em>liste</em>&gt; qui doit &#234;tre une courbe ferm&#233;e et simple. La macro peint l&#8217;ext&#233;rieur de la courbe repr&#233;sent&#233;e par la &lt;<em>liste</em>&gt;.</p></li>
+</ul>
+<h3 id="Dbissec">Dbissec</h3>
+<ul>
+<li><p><b>Dbissec( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;1 ou 2&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine la bissectrice de l&#8217;angle <span class="math">$\widehat{BAC}$</span>, int&#233;rieure si le dernier param&#232;tre vaut <span class="math">1</span> et ext&#233;rieure pour la valeur <span class="math">2</span>.</p></li>
+</ul>
+<h3 id="Dcarre">Dcarre</h3>
+<ul>
+<li><p><b>Dcarre( &lt;A&gt;, &lt;B&gt;, &lt;+/-1&gt; [, rayon] )</b>.</p></li>
+<li><p><u>Description</u> : dessine de carr&#233; de sommets cons&#233;cutifs &lt;<em>A</em>&gt; et &lt;<em>B</em>&gt; dans le sens direct si le troisi&#232;me param&#232;tre vaut <span class="math">1</span> (indirect pour <span class="math">&#8197;-&#8197;1</span>). Si le param&#232;tre &lt;<em>rayon</em>&gt; est pr&#233;sent, alors les &#248;g coins&#160;de la figure seront arrondis par un arc de cercle ayant le rayon mentionn&#233;.</p></li>
+</ul>
+<h3 id="Ddroite">Ddroite</h3>
+<ul>
+<li><p><b>Ddroite( &lt;A&gt;, &lt;B&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine la demi-droite <span class="math">[<em>A</em>,&#8198;<em>B</em>)</span>.</p></li>
+</ul>
+<h3 id="Dmed">Dmed</h3>
+<ul>
+<li><p><b>Dmed( &lt;A&gt;, &lt;B&gt; [, angle droit(0/1)] )</b>.</p></li>
+<li><p><u>Description</u> : dessine la m&#233;diatrice du segment <span class="math">[<em>A</em>,&#8198;<em>B</em>]</span>. Si le troisi&#232;me param&#232;tre vaut <span class="math">1</span> (<span class="math">0</span> par d&#233;faut) alors un angle droit est dessin&#233;.</p></li>
+</ul>
+<h3 id="domaine1">domaine1</h3>
+<ul>
+<li><p><b>domaine1( &lt;f(x)&gt; [, a, b] )</b>.</p></li>
+<li><p><u>Description</u> : dessine la partie du plan comprise entre la courbe Cf, l&#8217;axe <span class="math"><em>O</em><em>x</em></span> et les droites <span class="math"><em>x</em>&#8196;=&#8196;<em>a</em></span>, <span class="math"><em>x</em>&#8196;=&#8196;<em>b</em></span> si a et b sont pr&#233;cis&#233;s, sinon <span class="math"><em>x</em>&#8196;=&#8196;</span><span style="font-style:italic">tMin</span> et <span class="math"><em>x</em>&#8196;=&#8196;</span><span style="font-style:italic">tMax</span>.</p></li>
+</ul>
+<h3 id="domaine2">domaine2</h3>
+<ul>
+<li><p><b>domaine2( &lt;f(x)&gt;, &lt;g(x)&gt; [, a, b] )</b>.</p></li>
+<li><p><u>Description</u> : dessine la partie du plan comprise entre les courbes Cf, Cg et les droites <span class="math"><em>x</em>&#8196;=&#8196;<em>a</em></span>, <span class="math"><em>x</em>&#8196;=&#8196;<em>b</em></span> si a et b sont pr&#233;cis&#233;s, sinon <span class="math"><em>x</em>&#8196;=&#8196;</span><span style="font-style:italic">tMin</span> et <span class="math"><em>x</em>&#8196;=&#8196;</span><span style="font-style:italic">tMax</span>.</p></li>
+</ul>
+<h3 id="domaine3">domaine3</h3>
+<ul>
+<li><p><b>domaine3( &lt;f(x)&gt;, &lt;g(x)&gt; )</b>.</p></li>
+<li><p><u>Description</u> : d&#233;limite la partie du plan comprise entre les courbes Cf et Cg avec <span class="math"><em>x</em></span> dans l&#8217;intervalle <span style="font-style:italic">[tMin,tMax]</span>, en recherchant les points d&#8217;intersection.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-4,5),size(7.5),tMin:=-5, Axes(-5,1+i,2+2*i), tMax:=-1, Cartesienne(sin(x)), tMax:=5, Cartesienne(2*cos(x)),tMin:=-3,tMax:=3, Cartesienne(x^2), A:=-4.5+(Ymin+1.75)*i, FillStyle:=full, FillOpacity:=0.5,FillColor:=green, LabelStyle:=left, LabelSize:=footnotesize, Dcarre(A+0.25*(-1+i), A+0.25*(1+i), -1), Label(A+0.4,&quot;domaine2 sur <span class="math">[&#8197;-&#8197;4 ;&#8198; &#8197;-&#8197;1.&#8198;5]</span> &quot;), Inc(A,-0.75*i), FillColor:=blue, Dcarre(A+0.25*(-1+i), A+0.25*(1+i),-1), Label(A+0.4,&quot;domaine3 entre <span class="math">2cos(<em>x</em>)</span> et <span class="math"><em>x</em><sup>2</sup></span> &quot;), Inc(A,-0.75*i), FillColor:=red, Dcarre(A+0.25*(-1+i), A+0.25*(1+i),-1), Label(A+0.4,&quot;domaine1 sur <span class="math">[1.&#8198;1 ;&#8198; 4]</span>&quot;), FillColor:=red, domaine1(2*cos(x), 1.1, 4), FillColor:=green, domaine2(2*cos(x), sin(x),-4,-1.5), FillColor:=blue, domaine3(2*cos(x),x^2), Arrows:=2, tangente(2*cos(x),0.5,1.5)</p>
+</blockquote>
+</blockquote>
+<h3 id="Dparallel">Dparallel</h3>
+<ul>
+<li><p><b>Dparallel( &lt;[A, B]&gt; , &lt;C&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine la parall&#232;le &#224; la droite &lt;<em>[A,B]</em>&gt; passant par &lt;<em>C</em>&gt;.</p></li>
+</ul>
+<h3 id="Dparallelo">Dparallelo</h3>
+<ul>
+<li><p><b>Dparallelo( &lt;A&gt;, &lt;B&gt; , &lt;C&gt; [, rayon] )</b>.</p></li>
+<li><p><u>Description</u> : dessine le parall&#232;logramme de sommets cons&#233;cutifs &lt;<em>A</em>&gt;, &lt;<em>B</em>&gt; et &lt;<em>C</em>&gt;. Si le param&#232;tre &lt;<em>rayon</em>&gt; est pr&#233;sent, alors les &#248;g coins&#160;de la figure seront arrondis par un arc de cercle ayant le rayon mentionn&#233;.</p></li>
+</ul>
+<h3 id="Dperp">Dperp</h3>
+<ul>
+<li><p><b>Dperp( &lt;[A, B]&gt; , &lt;C&gt; [, angle droit(0/1)] )</b>.</p></li>
+<li><p><u>Description</u> : dessine la perpendiculaire &#224; la droite &lt;<em>[A,B]</em>&gt; passant par &lt;<em>C</em>&gt;. Si le troisi&#232;me param&#232;tre vaut <span class="math">1</span> (<span class="math">0</span> par d&#233;faut) alors un angle droit est dessin&#233;.</p></li>
+</ul>
+<h3 id="Dpolyreg">Dpolyreg</h3>
+<ul>
+<li><p><b>Dpolyreg( &lt;centre&gt; , &lt;sommet&gt;, &lt;nombre de c&#244;t&#233;s&gt; [, rayon] )</b>.</p></li>
+<li><p><u>Description</u> : dessine le polyg&#244;ne r&#233;gulier d&#233;fini par le &lt;<em>centre</em>&gt;, un &lt;<em>sommet</em>&gt; et le &lt;<em>nb de c&#244;t&#233;s</em>&gt;. Si le param&#232;tre &lt;<em>rayon</em>&gt; est pr&#233;sent, alors les &#248;g coins&#160;de la figure seront arrondis par un arc de cercle ayant le rayon mentionn&#233;.</p></li>
+</ul>
+<p><div style="text-align:center">ou</div></p>
+<ul>
+<li><p><b>Dpolyreg( &lt;sommet1&gt;, &lt;sommet2&gt;, &lt;nombre de cot&#233;s +sens*i&gt; [, rayon] )</b>.</p></li>
+<li><p><u>Description</u> : dessine le polyg&#244;ne r&#233;gulier d&#233;fini par deux sommets cons&#233;cutifs &lt;<em>sommet1</em>&gt; et &lt;<em>sommet2</em>&gt;, le &lt;<em>nb de c&#244;t&#233;s</em>&gt;, et le &lt;<em>sens</em>&gt; (<span class="math">1</span> pour direct et <span class="math">&#8197;-&#8197;1</span> pour indirect). Si le param&#232;tre &lt;<em>rayon</em>&gt; est pr&#233;sent, alors les &#248;g coins&#160;de la figure seront arrondis par un arc de cercle ayant le rayon mentionn&#233;.</p></li>
+</ul>
+<h3 id="DpqGoneReg">DpqGoneReg</h3>
+<ul>
+<li><p><b>DpqGoneReg( &lt;centre&gt; , &lt;sommet&gt;, &lt;[p,q]&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine le &lt;<em>p/q</em>&gt;-g&#244;ne r&#233;gulier d&#233;fini par le &lt;<em>centre</em>&gt; et un &lt;<em>sommet</em>&gt;.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-6,6),Marges(0,0,0,0),size(7.5), FillStyle:=full, FillColor:=lightpink, Color:=blue, Width:=8, DpqGoneReg(-2.5+2.5*i,-2.5+0.25*i, [7,3]), Label(-2.5+5*i,&quot;[7,3]&quot;), DpqGoneReg(2.5+2.5*i,2.5+0.25*i, [7,2]), Label(2.5+5*i,&quot;[7,2]&quot;), DpqGoneReg(-2.5-2.5*i,-2.5-0.25*i, [7,1]), Label(-2.5-5*i,&quot;[7,1]&quot;), DpqGoneReg(2.5-2.5*i,2.5-0.25*i, [6,2]), Label(2.5-5*i,&quot;[6,2]&quot;)</p>
+</blockquote>
+</blockquote>
+<h3 id="drawSet">drawSet</h3>
+<ul>
+<li><p><b>drawSet( &lt;ensemble&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine un ensemble produit par les macros <a href="#capB">capB</a>, <a href="#cupB">cupB</a> ou <a href="#setminusB">setminusB</a>.</p></li>
+</ul>
+<h3 id="Drectangle">Drectangle</h3>
+<ul>
+<li><p><b>Drectangle( &lt;A&gt;, &lt;B&gt; , &lt;C&gt; [, rayon] )</b>.</p></li>
+<li><p><u>Description</u> : dessine le rectangle de sommets cons&#233;cutifs &lt;<em>A</em>&gt;, &lt;<em>B</em>&gt;, le c&#244;t&#233; oppos&#233; passant par &lt;<em>C</em>&gt;. Si le param&#232;tre &lt;<em>rayon</em>&gt; est pr&#233;sent, alors les &#248;g coins&#160;de la figure seront arrondis par un arc de cercle ayant le rayon mentionn&#233;.</p></li>
+</ul>
+<h3 id="ellipticarc-1">ellipticArc</h3>
+<ul>
+<li><p><b>ellipticArc( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;RX&gt;, &lt;RY&gt;, &lt;sens(+/-1)&gt; [, inclinaison] )</b>.</p></li>
+<li><p><u>Description</u> : dessine un arc d&#8217;ellipse de centre &lt;<em>A</em>&gt;, allant de &lt;<em>B</em>&gt; &#224; &lt;<em>C</em>&gt; de rayons &lt;<em>RX</em>&gt; et &lt;<em>RY</em>&gt;, l&#8217;axe portant le rayon &lt;<em>RX</em>&gt; ayant une certaine &lt;<em>inclinaison</em>&gt; par rapport &#224; l&#8217;horizontale, celle-ci est en degr&#233;s et vaut 0 par d&#233;faut, le param&#232;tre &lt;<em>sens</em>&gt; indique le sens de rotation, 1 pour le sens trigonom&#233;trique.</p></li>
+</ul>
+<h3 id="flecher">flecher</h3>
+<ul>
+<li><p><b>flecher( &lt;liste&gt;, &lt;pos1, ..., posN&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine des fl&#232;ches le long de la ligne polygonale &lt;<em>liste</em>&gt;, la position de chaque fl&#232;che (pos1, ...) est un nombre entre <span class="math">0</span> et <span class="math">1</span> (<span class="math">0</span> pour d&#233;but de la ligne et <span class="math">1</span> pour fin de ligne), les fl&#232;ches sont dessin&#233;es dans le sens de parcourt de la ligne, pour inverser une fl&#232;che on ajoute +i &#224; la position.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">flecher(Get(Cercle(0,3)), [0,0.5] )</span></p></li>
+</ul>
+<h3 id="GradDroite">GradDroite</h3>
+<ul>
+<li><p><b>GradDroite( &lt;[A, origine + i*posOrigine, etendue]&gt;, &lt;[u, unit]&gt;, &lt;hautDiv&gt;, &lt;subdiv&gt; [, poslab, orientation, num, &quot;&quot;texte&quot;&quot;, den, firstnum] )</b></p></li>
+<li><p><u>Description</u> : gradue la droite passant par &lt;<em>A</em>&gt; et dirig&#233;e par le vecteur &lt;<em>u</em>&gt; (celui-ci n&#8217;est pas forc&#233;ment unitaire), &lt;<em>hautdiv</em>&gt; est la hauteur des graduations en cm, &lt;<em>subdiv</em>&gt; est le nombre de subdivisions par unit&#233;.</p>
+<p>Param&#232;tres optionnels:</p>
+<ul>
+<li><p>&lt;<em>origin</em>&gt;: indique la graduation de l&#8217;origine &lt;<em>A</em>&gt; (0 par d&#233;faut),</p></li>
+<li><p>&lt;<em>posOrigin</em>&gt;: indique la position du label &#224; l&#8217;origine &lt;<em>A</em>&gt;, plusieurs cas:</p>
+<ul>
+<li><p>&lt;<em>posOrigin</em>&gt;=0: pas de label &#224; l&#8217;origine,</p></li>
+<li><p>&lt;<em>posOrigin</em>&gt;=1: label normal &#224; l&#8217;origine (comme les autres)</p></li>
+<li><p>&lt;<em>posOrigin</em>&gt;=2: label &#224; l&#8217;origine d&#233;cal&#233; dans le sens du vecteur &lt;<em>u</em>&gt; (valeur par d&#233;faut),</p></li>
+<li><p>&lt;<em>posOrigin</em>&gt;=-2: label &#224; l&#8217;origine d&#233;cal&#233; dans le sens oppos&#233; du vecteur &lt;<em>u</em>&gt;.</p></li>
+</ul></li>
+<li><p>&lt;<em>etendue</em>&gt;: repr&#233;sente l&#8217;intervalle des graduations sous forme complexe: <span style="font-style:italic">min+i*max</span>, le trac&#233; de l&#8217;axe sera limit&#233; &#224; cet intervalle. Si ce param&#232;tre est omis, le trac&#233; occupera la fen&#234;tre.</p></li>
+<li><p>&lt;<em>unit</em>&gt;: indique le pas des graduations sur l&#8217;axe (1 par d&#233;faut), cette valeur doit &#234;tre positive.</p></li>
+<li><p>&lt;<em>poslab</em>&gt; indique la position des labels par rapport &#224; l&#8217;axe, ce param&#232;tre prend les valeurs <span style="color:red">top</span> ou <span style="color:red">bottom</span>,</p></li>
+<li><p>&lt;<em>orientation</em>&gt;: orientation des labels, la valeur <span class="math"><em>i</em></span> signifie que les labels sont orthogonaux &#224; l&#8217;axe, sinon l&#8217;orientation repr&#233;sente le <span style="font-style:italic;color:red">LabelStyle</span> (left, right, top, ...),</p></li>
+<li><p>chaque graduation est multipli&#233;e par la fraction &lt;<em>num/den</em>&gt; (1 par d&#233;faut), ajout&#233;e &#224; &lt;<em>firstnum/den</em>&gt; (l&#8217;origine par d&#233;faut) et accompagn&#233;e du &lt;<em>&quot;texte&quot;</em>&gt; au num&#233;rateur. Pour avoir une virgule comme sp&#233;rateur d&#233;cimal au lieu du point, il faut mettre la variable <span style="font-style:italic;color:red">usecomma</span> &#224; la valeur <span class="math">1</span>. Cette macro est &#233;galement sensible aux variables <span style="font-style:italic;color:red">dollar</span> (pour ajouter ou non des $ autour des labels des graduations), et <span style="font-style:italic;color:red">nbdeci</span> qui fixe le nombre de d&#233;cimales affich&#233;es. Le nombre maximal de graduations est fix&#233; par la variable <span style="font-style:italic;color:red">maxGrad</span> qui vaut <span class="math">100</span> par d&#233;faut.</p></li>
+</ul></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">GradDroite([0,1+2*i],[1,0.5], xyticks, 1, bottom, i)</span>: signifie que la graduation de l&#8217;origine sera 1 avec un label d&#233;cal&#233; &#224; droite, les graduations iront de 0.5 en 0.5, les labels seront sous l&#8217;axe et orthogonaux &#224; l&#8217;axe.</p></li>
+</ul>
+<h3 id="LabelArc">LabelArc</h3>
+<ul>
+<li><p><b>LabelArc( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;R&gt;, &lt;sens&gt;, &lt;&quot;texte&quot;&gt;, [, options] )</b>.</p></li>
+<li><p><u>Description</u> : cette macro dessine un arc de cercle de centre &lt;<em>A</em>&gt;, de rayon &lt;<em>R</em>&gt; partant de la droite <span class="math">(<em>A</em><em>B</em>)</span> jusqu&#8217;&#224; la droite <span class="math">(<em>A</em><em>C</em>)</span>, l&#8217;argument facultatif &lt;<em>sens</em>&gt; indique: le sens trigonom&#233;trique si sa valeur est 1 (valeur par d&#233;faut), le sens contraire si valeur est -1. La macro ajoute &#233;galement le &lt;<em>&quot;texte&quot;</em>&gt;. Le param&#232;tre &lt;<em>options</em>&gt; est une liste (facultative) de la forme <span style="font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]</span>, les options sont:</p>
+<ul>
+<li><p><span style="color:blue">labelpos := &lt; inside/outside &gt;</span>: positionnement du label (outside par defaut)),</p></li>
+<li><p><span style="color:blue">labelsep := &lt; distance en cm &gt;</span>: distance du label &#224; l&#8217;arc (0.25cm par d&#233;faut).</p></li>
+<li><p><span style="color:blue">rotation := &lt; nombre &gt;</span>: angle en degr&#233;s que fait le label par rapport &#224; l&#8217;horizontale (<span class="math">0</span> par d&#233;faut).</p></li>
+</ul>
+<p>Il est possible dans la liste des options, de modifier des attributs comme <span style="font-style:italic;color:red">Color</span> par exemple.</p></li>
+</ul>
+<h3 id="LabelAxe">LabelAxe</h3>
+<ul>
+<li><p><b>LabelAxe( &lt;x ou y&gt;, &lt;affixe&gt;, &lt;label&gt; [, [labelPos,d&#233;calage en cm], mark(0/1)] )</b>.</p></li>
+<li><p><u>Description</u> : permet d&#8217;ajouter un label sur un des axes &lt;<em>x ou y</em>&gt;, &lt;<em>affixe</em>&gt; d&#233;signe l&#8217;affixe du point o&#249; se fait l&#8217;ajout, &lt;<em>label</em>&gt; contient le texte &#224; ajouter. Param&#232;tres optionnels, &lt;<em>[labelPos, d&#233;calage en cm]</em>&gt; et &lt;<em>mark</em>&gt;:</p>
+<ul>
+<li><p>Re(&lt;<em>labelpos</em>&gt;)=1 signifie en dessous pour Ox et &#224; droite pour Oy (par d&#233;faut pour Ox),</p></li>
+<li><p>Re(&lt;<em>labelpos</em>&gt;)=2 signifie au dessus pour Ox et &#224; gauche pour Oy (par d&#233;faut pour Oy),</p></li>
+<li><p>Im(&lt;<em>labelpos</em>&gt;)=-1 signifie un d&#233;calage sur la gauche pour Ox, vers le bas pour Oy, si le d&#233;calage n&#8217;est pas pr&#233;cis&#233;, il vaut 0.25 cm par d&#233;faut,</p></li>
+<li><p>Im(&lt;<em>labelpos</em>&gt;)=1 signifie un d&#233;calage sur la droite pour Ox, vers le haut pour Oy, si le d&#233;calage n&#8217;est pas pr&#233;cis&#233;, il vaut 0.25 cm par d&#233;faut,</p></li>
+<li><p>Im(&lt;<em>labelpos</em>&gt;)=0 signifie pas de d&#233;calage (valeur par d&#233;faut),</p></li>
+<li><p>&lt;<em>mark</em>&gt;: indique si le point doit &#234;tre marqu&#233; (dans le dotsyle courant).</p></li>
+</ul></li>
+</ul>
+<h3 id="LabelDot">LabelDot</h3>
+<ul>
+<li><p><b>LabelDot( &lt;affixe&gt;, &lt;&quot;texte&quot;&gt;, &lt;orientation&gt; [, DrawDot, distance] )</b>.</p></li>
+<li><p><u>Description</u> : cette macro affiche un texte &#224; cot&#233; du point &lt;<em>affixe</em>&gt;. L&#8217;orientation peut &#234;tre &quot;N&quot; pour nord, &quot;NE&quot; pour nord-est ...etc, ou bien une liste de la forme [longueur, direction] o&#249; direction est un complexe, dans ce deuxi&#232;me cas, le param&#232;tre optionnel &lt;<em>distance</em>&gt; est ignor&#233;. Le point est &#233;galement affich&#233; lorsque &lt;<em>DrawDot</em>&gt; vaut <span class="math">1</span> (0 par d&#233;faut) et on peut red&#233;finir la &lt;<em>distance</em>&gt; en cm entre le point et le texte (0.25cm par d&#233;faut).</p></li>
+</ul>
+<h3 id="LabelSeg">LabelSeg</h3>
+<ul>
+<li><p><b>LabelSeg( &lt;A&gt;, &lt;B&gt;, &lt;&quot;texte&quot;&gt;, [, options] )</b>.</p></li>
+<li><p><u>Description</u> : cette macro dessine le segment d&#233;fini par &lt;<em>A</em>&gt; et &lt;<em>B</em>&gt;, et ajoute le &lt;<em>&quot;texte&quot;</em>&gt;. Le param&#232;tre &lt;<em>options</em>&gt; est une liste (facultative) de la forme <span style="font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]</span>, les options sont:</p>
+<ul>
+<li><p><span style="color:blue">labelpos := &lt; center/top/bottom &gt;</span>: positionnement du label (center par d&#233;faut),</p></li>
+<li><p><span style="color:blue">labelsep := &lt; distance en cm &gt;</span>: distance du label au segment lorsque labelpos vaut top ou bottom (0.25cm par d&#233;faut).</p></li>
+<li><p><span style="color:blue">rotation := &lt; nombre &gt;</span>: angle en degr&#233;s que fait le label par rapport &#224; l&#8217;horizontale (par d&#233;faut le label est parall&#232;le au segment).</p></li>
+</ul>
+<p>Il est possible dans la liste des options, de modifier des attributs comme <span style="font-style:italic;color:red">Color</span> par exemple.</p></li>
+</ul>
+<h3 id="markangle">markangle</h3>
+<ul>
+<li><p><b>markangle( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;r&gt;, &lt;n&gt;, &lt;espacement&gt;, &lt;longueur&gt; )</b>.</p></li>
+<li><p><u>Description</u> : m&#234;me chose que <a href="#markseg">markseg</a> mais pour marquer un arc de cercle.</p></li>
+</ul>
+<h3 id="markseg">markseg</h3>
+<ul>
+<li><p><b>markseg( &lt;A&gt;, &lt;B&gt;, &lt;n&gt;, &lt;espacement&gt;, &lt;longueur&gt; [, angle] )</b>.</p></li>
+<li><p><u>Description</u> : marque le segment <span class="math">[<em>A</em>,&#8198;<em>B</em>]</span> avec &lt;<em>n</em>&gt; petits segments, l&#8217;&lt;<em>espacement</em>&gt; est en unit&#233; graphique, et la &lt;<em>longueur</em>&gt; en cm. Le param&#232;tre optionnel &lt;<em>angle</em>&gt; permet de d&#233;finir en degr&#233; l&#8217;angle que feront les marques par rapport &#224; la droite <span class="math">(<em>A</em><em>B</em>)</span> (45 degr&#233;s par d&#233;faut).</p></li>
+</ul>
+<h3 id="periodic">periodic</h3>
+<ul>
+<li><p><b>periodic( &lt;f(x)&gt;, &lt;a&gt;, &lt;b&gt; [, divisions, discontinuit&#233;s] )</b>.</p></li>
+<li><p><u>Description</u> : trace la courbe de la fonction p&#233;riodique d&#233;finie par <span class="math"><em>y</em>&#8196;=&#8196;<em>f</em>(<em>x</em>)</span> sur la p&#233;riode <span class="math">[<em>a</em>;&#8198;<em>b</em>]</span>, puis translate le motif pour couvrir l&#8217;intervalle [tMin; tMax]. Les deux param&#232;tres optionnels sont identiques &#224; ceux des courbes param&#233;tr&#233;es (nombre de divisions et discontinuit&#233;s).</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-5,5), size(7.5), Axes(0,1+i), Width:=8, Color:=red, periodic(if t&gt;0 then 4 else 2 fi,-1,1,5,1), Color:=blue, periodic(2*abs(t)-1,-1,1), Color:=magenta, periodic(sin(t)-3,-pi/2,pi/2)</p>
+</blockquote>
+</blockquote>
+<h3 id="Rarc">Rarc</h3>
+<ul>
+<li><p><b>Rarc( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;R&gt;, &lt;sens&gt; )</b>.</p></li>
+<li><p><u>Description</u> : comme la macro <a href="#Arc">Arc</a> sauf que l&#8217;arc de cercle est rond m&#234;me si le rep&#232;re n&#8217;est pas orthonorm&#233;, le rayon &lt;<em>R</em>&gt; est en centim&#232;tres.</p></li>
+</ul>
+<h3 id="Rcercle">Rcercle</h3>
+<ul>
+<li><p><b>Rcercle( &lt;A&gt;, &lt;R&gt; )</b> ou <strong>Rcercle( &lt;A&gt;, &lt;B&gt;, &lt;C&gt; )</strong>.</p></li>
+<li><p><u>Description</u> : dessine un cercle rond m&#234;me si le rep&#232;re n&#8217;est pas orthonorm&#233;. Dans la premi&#232;re forme, le rayon &lt;<em>R</em>&gt; est en centim&#232;tres.</p></li>
+</ul>
+<h3 id="Rellipse">Rellipse</h3>
+<ul>
+<li><p><b>Rellipse( &lt;O&gt;, &lt;RX&gt;, &lt;RY&gt; [, inclinaison] )</b>.</p></li>
+<li><p><u>Description</u> : comme la commande <a href="#Ellipse">Ellipse</a> sauf que celle-ci est insensible au rep&#232;re &#233;cran, les rayons sont en centim&#232;tres.</p></li>
+</ul>
+<h3 id="RellipticArc">RellipticArc</h3>
+<ul>
+<li><p><b>RellipticArc( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;RX&gt;, &lt;RY&gt;, &lt;sens(+/-1)&gt; [, inclinaison] )</b>.</p></li>
+<li><p><u>Description</u> : comme la macro <a href="#ellipticArc">ellipticArc</a> sauf que celle-ci est insensible au rep&#232;re &#233;cran, les rayons sont en centim&#232;tres.</p></li>
+</ul>
+<h3 id="RestoreWin">RestoreWin</h3>
+<ul>
+<li><p><b>RestoreWin()</b>.</p></li>
+<li><p><u>Description</u> : restaure la fen&#234;tre graphique ainsi que la matrice 2D enregistr&#233;es lors du dernier appel &#224; la macro <a href="#SaveWin">SaveWin</a>.</p></li>
+</ul>
+<h3 id="SaveWin">SaveWin</h3>
+<ul>
+<li><p><b>SaveWin()</b>.</p></li>
+<li><p><u>Description</u> : enregistre la fen&#234;tre graphique ainsi que la matrice 2D courantes, sur une pile. Cette macro va de paire avec la macro <a href="#RestoreWin">RestoreWin</a>.</p></li>
+<li><p><u>Exemple(s)</u> :  plusieurs graphiques sur un seul: voir <a href="#axeXY">cet exemple</a>.</p></li>
+</ul>
+<h3 id="Seg">Seg</h3>
+<ul>
+<li><p><b>Seg( &lt;A&gt;, &lt;B&gt; )</b>.</p></li>
+<li><p><u>Description</u> : dessine le segment <span class="math">[<em>A</em>,&#8198;<em>B</em>]</span>.</p></li>
+</ul>
+<h3 id="set">set</h3>
+<ul>
+<li><p><b>set( &lt;nom&gt;, &lt;affixe centre&gt; [, options] )</b>.</p></li>
+<li><p><u>Description</u> : dessine un ensemble en forme de patato&#239;de, &lt;<em>affixe centre</em>&gt; d&#233;signe le centre de cet ensemble, et le param&#232;tre &lt;<em>nom</em>&gt; est une cha&#238;ne contenant le nom de cet ensemble. Le param&#232;tre &lt;<em>options</em>&gt; est une liste (facultative) de la forme <span style="font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]</span>, les options sont:</p>
+<ul>
+<li><p><span style="color:blue">scale := &lt; entier positif &gt;</span>: repr&#233;sente l&#8217;&#233;chelle (1 par d&#233;faut),</p></li>
+<li><p><span style="color:blue">rotation := &lt; angle en degr&#233;s &gt;</span>: permettant d&#8217;incliner le dessin (0 degr&#233; par d&#233;faut),</p></li>
+<li><p><span style="color:blue">labels := &lt; 0/1 &gt;</span>: pour afficher ou non le nom de l&#8217;ensemble.</p></li>
+<li><p><span style="color:blue">labelsep := &lt; distance en cm &gt;</span>: distance du label au bord de l&#8217;ensemble (0.45cm par d&#233;faut)</p></li>
+</ul>
+<p>Il est possible dans la liste des options, de modifier des attributs comme <span style="color:red">LabelStyle</span> par exemple.</p></li>
+<li><p>La macro renvoie en r&#233;sultat la liste des points de la courbe dessinant l&#8217;ensemble.</p></li>
+</ul>
+<h3 id="setB">setB</h3>
+<ul>
+<li><p><b>setB( &lt;nom&gt;, &lt;affixe centre&gt; [, options] )</b>.</p></li>
+<li><p><u>Description</u> : dessine un ensemble en forme de patato&#239;de &#224; l&#8217;aide de courbes de B&#233;zier, &lt;<em>affixe centre</em>&gt; d&#233;signe le centre de cet ensemble, et le param&#232;tre &lt;<em>nom</em>&gt; est une cha&#238;ne contenant le nom de cet ensemble. Le param&#232;tre &lt;<em>options</em>&gt; est une liste (facultative) de la forme <span style="font-style:italic">[ option1:= valeur1, ..., optionN:=valeurN ]</span>, les options sont:</p>
+<ul>
+<li><p><span style="color:blue">scale := &lt; entier positif &gt;</span>: repr&#233;sente l&#8217;&#233;chelle (1 par d&#233;faut),</p></li>
+<li><p><span style="color:blue">rotation := &lt; angle en degr&#233;s &gt;</span>: permettant d&#8217;incliner le dessin (0 degr&#233; par d&#233;faut),</p></li>
+<li><p><span style="color:blue">labels := &lt; 0/1 &gt;</span>: pour afficher ou non le nom de l&#8217;ensemble.</p></li>
+<li><p><span style="color:blue">labelsep := &lt; distance en cm &gt;</span>: distance du label au bord de l&#8217;ensemble (0.45cm par d&#233;faut)</p></li>
+</ul>
+<p>Il est possible dans la liste des options, de modifier des attributs comme <span style="color:red">LabelStyle</span> par exemple.</p></li>
+<li><p>La macro renvoie en r&#233;sultat la liste des points de contr&#244;le de la courbe repr&#233;sentant l&#8217;ensemble. Cette liste peut-&#234;tre utilis&#233;e ensuite pour d&#233;terminer une intersection (voir <a href="#capB">capB</a>), une r&#233;union (voir <a href="#capB">capB</a>) ou une diff&#233;rence (voir <a href="#setminusB">setminusB</a>).</p></li>
+</ul>
+<h3 id="size">size</h3>
+<ul>
+<li><p><b>size( &lt;largeur + i*hauteur&gt; [, ratio(Xscale/Yscale)] )</b></p></li>
+<li><p><u>Description</u> : permet de fixer les tailles du graphique: &lt;<em>largeur</em>&gt; et &lt;<em>hauteur</em>&gt; (marges incluses) en cm. Si le param&#232;tre &lt;<em>hauteur</em>&gt; est nul, alors on consid&#232;re que hauteur=largeur.</p>
+<p>Si le param&#232;tre &lt;<em>ratio</em>&gt; est omis, les &#233;chelles sur les deux axes sont calcul&#233;es pour que la figure entre au plus juste dans le cadre fix&#233;, tout en conservant le ratio courant.</p>
+<p>Si &lt;<em>ratio</em>&gt; est &#233;gal &#224; <span class="math">0</span> alors les &#233;chelles sont calcul&#233;es de mani&#232;re &#224; obtenir exactement la taille souhait&#233;e (le ratio courant n&#8217;est donc vraisemblablement pas conserv&#233;).</p>
+<p>Le rep&#232;re est orthonorm&#233; lorsque le param&#232;tre &lt;<em>ratio</em>&gt; vaut 1.</p>
+<p><strong>NB</strong>: un appel aux fonctions <span style="font-style:italic">Fenetre</span> <span style="font-style:italic">Marges</span> ou &#224; la macro <span style="font-style:italic">view</span>, modifiera la taille du graphique. Il est donc pr&#233;f&#233;rable de d&#233;terminer les marges et la fen&#234;tre graphique <strong>avant</strong> de fixer la taille.</p>
+<p>La largeur d&#8217;un graphique est donn&#233;e par la formule:</p>
+<p><div style="text-align:center"><span style="font-style:italic">(Xmax-Xmin)*Xscale+margeG+margeD</span></div></p>
+<p>et la hauteur est donn&#233;e par:</p>
+<p><div style="text-align:center"><span style="font-style:italic">(Ymax-Ymin)*Yscale+margeH+margeB</span></div></p></li>
+</ul>
+<h3 id="suite">suite</h3>
+<ul>
+<li><p><b>suite( &lt;f(x)&gt;, &lt;u0&gt;, &lt;n&gt; )</b>.</p></li>
+<li><p><u>Description</u> : repr&#233;sentation graphique de la suite d&#233;finie par <span class="math"><em>u</em><sub><em>n</em>&#8197;+&#8197;1</sub>&#8196;=&#8196;<em>f</em>(<em>u</em><sub><em>n</em></sub>)</span>, de premier terme &lt;<em>u0</em>&gt; et jusqu&#8217;au rang &lt;<em>n</em>&gt;. Cette macro ne repr&#233;sente que les &quot;escaliers&quot;.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-0.1,1.1,-0.1,1.1),size(7.5), Arrows:=1,Axes(0,1/2+i/4),Arrows:=0, u0:=0.3,nb:=20, Width:=6, Color:=darkseagreen, Droite(1,-1,0), Color:=red, tMin:=0, tMax:=1, Width:=8, Cartesienne(4*x*(1-x)), Width:=6, Color:=blue, Label(0.5+1.05*i,&quot;<span class="math"><em>u</em><sub><em>n</em>&#8197;+&#8197;1</sub>&#8196;=&#8196;4<em>u</em><sub><em>n</em></sub>(1&#8197;-&#8197;<em>u</em><sub><em>n</em></sub>)</span>&quot;), LabelDot(u0, &quot;<span class="math"><em>u</em><sub>0</sub></span>&quot;,&quot;S&quot;,1), suite(4*x*(1-x), u0,nb)</p>
+</blockquote>
+</blockquote>
+<h3 id="tangente">tangente</h3>
+<ul>
+<li><p><b>tangente( &lt;f(x)&gt;, &lt;x0&gt; [, longueur] )</b>.</p></li>
+<li><p><u>Description</u> : trace la tangente &#224; la courbe cart&#233;sienne <span class="math"><em>y</em>&#8196;=&#8196;<em>f</em>(<em>x</em>)</span> au point d&#8217;abscisse &lt;<em>x0</em>&gt;, on trace un segment de la &lt;<em>longueur</em>&gt; indiqu&#233;e (en cm) ou la droite enti&#232;re si la longueur est omise.</p></li>
+</ul>
+<h3 id="tangenteP">tangenteP</h3>
+<ul>
+<li><p><b>tangenteP( &lt;f(t)&gt;, &lt;t0&gt; [,longueur] )</b>.</p></li>
+<li><p><u>Description</u> : trace la tangente &#224; la courbe param&#233;tr&#233;e par &lt;<em>f(t)</em>&gt; au point de param&#232;tre &lt;<em>t0</em>&gt;, on trace un segment de la &lt;<em>longueur</em>&gt; indiqu&#233;e (en cm) ou la droite enti&#232;re si la longueur est omise.</p></li>
+</ul>
+<h3 id="view">view</h3>
+<ul>
+<li><p><b>view( &lt;xmin&gt;, &lt;xmax&gt;, &lt;ymin&gt;, &lt;ymax&gt; )</b> ou <strong>view( &lt;[xmin+i*ymin, xmax+i*ymax]&gt; )</strong></p></li>
+<li><p><u>Description</u> : change la fen&#234;tre graphique courante et conserve l&#8217;&#233;chelle. Attention: ceci change la taille du graphique, celle-ci peut-&#234;tre modifi&#233;e avec la macro <a href="#size">size</a>.</p></li>
+<li><p><u>Exemple(s)</u> :  dans un &#233;l&#233;ment graphique utilisateur, la commande <span style="color:red">[ view(-4, 4,-3, 3), size(12) ]</span> va fixer la fen&#234;tre graphique &#224; <span class="math">[&#8197;-&#8197;4,&#8198;4]&#8197;&#215;&#8197;[&#8197;-&#8197;3,&#8198;3]</span>, et la taille du graphique &#224; 12cm en conservant le ratio courant. Il est important de respecter l&#8217;ordre (view avant size).</p></li>
+</ul>
+<h3 id="wedge">wedge</h3>
+<ul>
+<li><p><b>wedge( &lt;B&gt;, &lt;A&gt;, &lt;C&gt;, &lt;r&gt; )</b></p></li>
+<li><p><u>Description</u> : dessine le secteur angulaire d&#233;fini par l&#8217;angle <span class="math">$\widehat{BAC}$</span> avec un rayon &lt;<em>r</em>&gt;.</p></li>
+</ul>
+<h3 id="zoom">zoom</h3>
+<ul>
+<li><p><b>zoom( &lt;+/-1&gt; )</b></p></li>
+<li><p><u>Description</u> : permet de faire un zoom arri&#232;re/avant.</p></li>
+</ul>
+<div class="footnotes">
+<hr />
+<ol>
+<li id="fn1"><p>Option <span style="font-style:italic">El&#233;ment graphique/Cr&#233;er/Utilisateur</span> du menu. <a href="#fnref1" class="footnoteBackLink" title="Jump back to footnote 1">&#8617;</a></p></li>
+</ol>
+</div>
diff --git a/docs/texgraph/chap08.tex b/docs/texgraph/chap08.tex
new file mode 100644 (file)
index 0000000..7bf27d0
--- /dev/null
@@ -0,0 +1,1344 @@
+\chapter{Fonctions et macros graphiques}\label{cmdFoncGraph}
+
+
+Ces fonctions et macros créent un élément graphique au moment de leur évaluation et renvoient un résultat égal à \Nil,
+elles ne sont utilisables \Mytextbf{que lors de la création d'un élément graphique "Utilisateur"}\footnote{Option
+\textsl{Elément graphique/Créer/Utilisateur} du menu.}.
+
+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
+création d'un élément graphique "Utilisateur".
+
+
+\section{Fonctions graphiques prédéfinies}
+
+Notations:
+
+<argument>: signifie que l'argument est \Mytextbf{obligatoire}.
+
+[, argument]: signifie que l'argument est \Mytextbf{facultatif}.
+
+
+\subsection{Axes}\label{cmdAxes}
+
+\begin{itemize}
+\item \util  \textbf[Axes()]{Axes( <origine>, <graduationX + i*graduationY> [, position label origine] )}.
+
+\item \desc  dessine les axes, \argu{origine} est l'affixe du point d'intersection des axes, \argu{graduationX} est le
+pas  pour les graduations sur l'axe Ox, et \argu{graduationY} celui de l'axe Oy, une graduation égale à zéro signifie
+l'absence de graduation. La longueur des graduations est dans la variable globale \co{xyticks} que l'on peut modifier,
+la distance des labels à l'extrêmité des graduations est dans la variable \co{xylabelsep} qui peut également être
+modifiée. 
+
+Le troisième paramètre est facultatif, il permet de préciser la position des labels de l'origine (à l'intersection des
+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
+deux nombres peuvent prendre trois valeurs:
+
+\begin{itemize}
+ \item $0$: le label n'apparaît pas,
+ \item $1$: le label est affiché comme celui des autres graduations,
+ \item $2$: le label est décalé pour ne pas chevaucher l'autre axe (valeur par défaut).
+\end{itemize}
+
+\item On peut modifier dans les \textit{Attributs}: le style de ligne, l'épaisseur, la couleur et la taille des labels.
+\end{itemize}
+
+\begin{demo}{Commande Axes}{Axes}
+\begin{texgraph}[name=Axes,export=pgf]
+view(-5,4,-5,5),Marges(0.5,0,0,0.5),
+size(7.5), Width:=2,
+Color:=lightgray, Grille(-5-5*i,(1+i)/2),
+Width:=4,
+Color:=gray, Grille(-5-5*i,(1+i)),
+Color:=black, Arrows:=1,
+Axes(-5-5*i,1+i,1+i),Arrows:=0,
+LabelAxe(x,-pi-5*i,"$-\pi$",2-i,1),
+LabelAxe(x,pi-5*i,"$\pi$",2+i,1),
+SaveAttr(),
+FillStyle:=full, FillColor:=lightblue,
+FillOpacity:=0.5,
+domaine2(3*sin(x)^3, -5,-pi,pi),
+RestoreAttr(),
+Color:=red, Arrows:=0, Width:=8,
+Cartesienne( 3*sin(x)^3 )
+\end{texgraph}
+\end{demo}
+
+
+\subsection{(Poly-)Bezier}\label{cmdBezier}
+
+\begin{itemize}
+\item \util  \textbf[Bezier()]{Bezier( <liste de points> )}.
+
+\item \desc  dessine une succession de courbes de \textsc{Bezier} (avec éventuellement des segments de droite).
+Il y a plusieurs possibilités pour la liste de points:
+       \begin{enumerate}
+       \item une liste de trois points $[A,C,B]$, il s'agit alors d'une courbe de Bezier d'origine \argu{A} et
+d'extrémité \argu{B} avec un point de contrôle \argu{C}, c'est la courbe paramétrée par:
+
+\[(1-t)^2A+2t(1-t)C+t^2B\]
+
+       \item une liste de 4 points ou plus: [A1, C1, C2, A2, C3, C4, A3...]: il s'agit alors d'une succession de
+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
+$(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
+toutefois, on peut remplacer les deux points de contrôle par la constante \jump, dans ce cas on saute directement de A1
+à A2 en traçant un segment de droite.
+       \end{enumerate}
+\item Le nombre de points calculés (par courbe) est modifiable dans les \textit{Attributs} (variable \co{NbPoints}).
+\end{itemize}
+
+\begin{demo}{Commande Bezier}{Bezier}
+\begin{texgraph}[name=Bezier,export=pgf]
+view(-4,4,-4,5),Marges(0,0,0,0),
+size(7.5), Width:=8,
+A:=-3+4*i, B:=3+i, C:=3-3*i, D:=-3-3*i,
+C1:=4.5*i,C2:=-2*i, C3:=2-i, C4:=-2,
+FillStyle:=full, FillColor:=lightblue,Color:=red,
+Bezier(A,C1,C2,B,jump,C,C3,C4,D,jump,A),
+FillStyle:=none, DotStyle:=cross,
+DotScale:=2,Color:=black,
+LabelDot(A,"$A$","N",1),
+LabelDot(B,"$B$","E",1),
+LabelDot(C,"$C$","SE",1),
+LabelDot(D,"$D$","SO",1),
+LabelDot(C1,"$C_1$","E",1),
+LabelDot(C2,"$C_2$","SO",1),
+LabelDot(C3,"$C_3$","N",1),
+LabelDot(C4,"$C_4$","N",1),
+LineStyle:=userdash,
+DashPattern:=[5,2,0.5,2], Width:=6,
+LineCap:=round,
+Ligne([A,C1,C2,B,jump,C,C3,C4,D],0) 
+\end{texgraph}
+\end{demo}
+
+\subsection{Cartesienne}\label{cmdCartesienne}
+
+\begin{itemize}
+\item \util  \textbf[Cartesienne()]{Cartesienne( <f(x)> [, n, 1] )}.
+
+\item \desc trace la courbe cartésienne d'équation $y=f(x)$. 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 suivante: lorsque la distance entre deux points consécutifs est
+supérieur à un certain seuil alors on calcule un point intermédiaire [par dichotomie], ceci peut ê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 seuil, et si la valeur
+optionnelle $1$ est présente, alors une discontinuité (\jump) est insérée dans la liste des points.
+\end{itemize}
+
+
+\begin{demo}{Courbe avec discontinuités}{Cartesienne}
+\begin{texgraph}[name=Cartesienne,export=pgf]
+view(-2,2,-0.1,2),Marges(0.5,0.5,0.5,0.5),
+size(7.5), tMin:=-2, tMax:=2,
+Color:=darkgray, Width:=8,
+LineStyle:=dotted, Grille(0,0.5*(1+i)),
+Color:=black, LineStyle:=solid,Axes(0,1+i,1),
+NbPoints:=100, Width:=8, Color:=darkseagreen,
+Cartesienne(x*Ent(1/x),5,1)
+\end{texgraph}
+\end{demo}
+
+\subsection{Courbe}\label{cmdCourbe}
+
+\begin{itemize}
+\item \util  \textbf[Courbe()]{Courbe( <f(t)> [, n, 1] )}.
+
+\item \desc trace la courbe paramétrée par \argu{f(t)} où $f$ est à valeurs complexes.
+
+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
+suivante:
+lorsque la distance entre deux points consécutifs est supérieur à un certain seuil  alors on calcule un point
+intermédiaire (par dichotomie), ceci peut ê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 seuil, et si la valeur optionnelle $1$ est présente, alors une
+discontinuité (\jump) est insérée dans la liste des points.
+\end{itemize}
+
+\subsection{Droite}\label{cmdDroite}
+
+\begin{itemize}
+\item \util  \textbf[Droite()]{Droite( <A>, <B> [, C] )}.
+
+\item \desc  trace la droite $(AB)$ lorsque le troisième argument \argu{C} est omis, sinon c'est la droite d'équation
+cartésienne \argu{A}x+\argu{B}y=\argu{C}.
+\end{itemize}
+
+
+\begin{demo}{Développée d'une ellipse}{Droite}
+\begin{texgraph}[name=Droite,export=pgf]
+view(-5,5,-5,5),Marges(0,0,0,0),
+size(7.5),
+F:=sqrt(7), F':=-F, {foyers}
+Width:=1, Color:=darkgray,
+for t from -pi to pi step 0.1 do
+ M:=4*cos(t)+3*i*sin(t),
+ Vn:=(M-F)/abs(M-F)+(M-F')/abs(M-F'),
+ Droite(M,M+Vn),{normale à l'ellipse}
+od,
+Width:=8, Color:=red,
+Ellipse(0,4,3),
+LabelDot(F,"$F$","S",1),
+LabelDot(F',"$F'$","S",1)
+\end{texgraph}
+\end{demo}
+
+\subsection{Ellipse}\label{cmdEllipse}
+
+\begin{itemize}
+\item \util  \textbf[Ellipse()]{Ellipse( <A>, <Rx>, <Ry> [, inclinaison] )}.
+
+\item \desc trace une ellipse de centre \argu{A} de rayons \argu{Rx} et \argu{Ry} sur les axes respectifs $Ox$ et $Oy$.
+Le dernier paramètre \argu{inclinaison} est un angle en degrés (nul par défaut) qui indique l'inclinaison de l'ellipse
+par rapport à l'horizontale.
+\end{itemize}
+
+\begin{demo}{Ellipses}{Ellipse}
+\begin{texgraph}[name=ellipse,export=pgf]
+view(-5.25,5.25,-5.25,5.25),
+Marges(0,0,0,0), size(7.5),
+background(full,blue), 
+Width:=4, Color:=white,
+inclin:=[0,35,-35],
+for z in inclin do
+ Ellipse(0,5,2,z)
+od,
+Width:=2*mm, Ellipse(0,1.5,4.5),
+Label(-0.1,
+  "\resizebox{6cm}{3.5cm}{R\ T\ F}")
+\end{texgraph}
+\end{demo}
+
+\subsection{EllipticArc}\label{cmdEllipticArc}
+
+\begin{itemize}
+\item \util  \textbf[EllipticArc()]{EllipticArc( <B>, <A>, <C>, <Rx>, <Ry> [, sens] )}.
+
+\item \desc  trace un arc d'ellipse dont les axes sont $Ox$ et $Oy$ et le centre \argu{A}, 
+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
+droite $(AC)$, l'argument facultatif \argu{sens} indique: le sens trigonométrique si sa valeur est $1$ (valeur par
+défaut), le sens contraire si sa valeur est $-1$. 
+\end{itemize}
+
+\begin{demo}{Commande EllipticArc}{EllipticArc}
+\begin{texgraph}[name=Arc,export=pgf]
+view(-2.25,3.75,-2,5),Marges(0,0,0,0),size(7.5),
+A:=0, B:=3+i, C:=2+4*i,
+DotScale:=2, Width:=8,
+Ligne([B,A,C],0), Color:=red,
+LabelDot(A,"$A$","S",1),
+LabelDot(B,"$B$","N",1),
+LabelDot(C,"$C$","SE",1),
+Arrows:=1, Color:=blue,
+EllipticArc(B,A,C,2,1,-1),
+EllipticArc(B,A,C,2,3,1)
+\end{texgraph}
+\end{demo}
+
+Remarque: pour un arc de cercle, il suffit de prendre \argu{Rx} et \argu{Ry} égaux. Mais le plus simple est d'utiliser
+la macro \Helpref{Arc}{macArc} qui remplace la commande \Mytextbf{Arc} de l'ancienne version.
+
+
+\subsection{EquaDif}\label{cmdEquadif}
+
+\begin{itemize}
+\item \util  \textbf[EquaDif()]{EquaDif( <f(t,x,y)>, <t0>, <x0 + i*y0> [, mode] )}.
+
+\item \desc  trace une solution approchée de l'équation différentielle: $x'(t)+iy'(t)=f(t,x,y)$ avec la condition
+initiale $x(t0)=x0$ et $y(t0)=y0$. Le dernier paramètre est facultatif et peut valoir 0, 1 ou 2:
+       \begin{itemize}
+       \item \argu{mode}=0: la courbe représente les points de coordonnées $(x(t),y(t))$, c'est la valeur par défaut.
+       \item \argu{mode}=1: la courbe représente les points de coordonnées $(t,x(t))$.
+       \item \argu{mode}=2: la courbe représente les points de coordonnées $(t,y(t))$.
+       \end{itemize}
+C'est la méthode de \textsc{Runge-Kutta} d'ordre 4 qui est utilisée.
+\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
+forme:
+\[\begin{pmatrix}
+X'\\Y'\end{pmatrix}=\begin{pmatrix} 0&1\\t&1\end{pmatrix}\begin{pmatrix}X\\Y\end{pmatrix}+
+\begin{pmatrix}0\\\sin(t)\end{pmatrix}\] en posant $X=x$ et $Y=x'$:
+\end{itemize}
+
+
+\begin{demo}{\'Equation différentielle}{EquaDif}
+\begin{texgraph}[name=EquaDif,export=pgf]
+view(-10.5,2.5,-1.5,4.5),Marges(0,0,0,0),
+size(7.5,0), Arrows:=1, Width:=4,
+Axes(0,1+i), Arrows:=0,
+LabelAxe(y,4.25*i,"$x$"),
+LabelAxe(x,2,"$t$",2),
+Width:=8, Color:=red, tMin:=-10, tMax:=2,
+EquaDif(y+i*(t*x+y+sin(t)),0,-1+i/2, 1),
+Color:=black, LabelStyle:=stacked,
+Label(-6+2*i,
+ "$x''-tx'-x=\sin(t)$\\
+avec $x(0)=-1$ et $x'(0)=\frac12$")
+\end{texgraph}
+\end{demo}
+
+
+\subsection{Grille}\label{cmdGrille}
+
+\begin{itemize}
+\item \util  \textbf[Grille()]{Grille( <origine>, <graduationX + i*graduationY> )}.
+
+\item \desc  dessine une grille, \argu{origine} est l'affixe du point considéré comme origine, \argu{graduationX} est le
+pas des graduations sur l'axe Ox, et \argu{graduationY} celui de l'axe Oy, une graduation égale à zéro signifie
+l'absence de graduation.
+\item On peut modifier dans les \textit{Attributs} le style de ligne, l'épaisseur et la couleur. La grille de ne fait
+pas appraître de graduations, on peut dessiner des axes par dessus.
+\end{itemize}
+
+\subsection{Implicit}\label{cmdImplicit}
+
+\begin{itemize}
+\item \util  \textbf[Implicit()]{Implicit( <f(x,y)> [, n, m] )}.
+\item \desc  trace la courbe implicite d'équation $f(x,y)=0$. L'intervalle des abscisses est subdivisé en \argu{n}
+parties et l'intervalle des ordonnées en \argu{m} parties, par défaut $n=m=25$. Sur chaque pavé ainsi obtenu on teste
+s'il y a un changement de signe, auquel cas on applique une dichotomie sur les bords du pavé.
+\end{itemize}
+
+
+\begin{demo}{\'Equation $\sin(xy)=0$}{Implicit}
+\begin{texgraph}[name=Implicit,export=pgf]
+view(-5,5,-5,5),Marges(0,0,0,0),
+size(7.5), Arrows:=1, Width:=4,
+Axes(0,1+i), Arrows:=0,
+Width:=8, Color:=red,
+Implicit( sin(x*y) )
+\end{texgraph}
+\end{demo}
+
+\subsection{Label}\label{cmdLabel}
+
+\begin{itemize}
+\item \util  \textbf[Label()]{Label( <affixe1>, <texte1>,..., <affixeN>, <texteN> )}.
+
+\item \desc  place la chaîne de caractères \argu{texte1} à la position \argu{affixe1} ... etc. Les paramètres
+\argu{texte1},..., \argu{texteN} sont donc interprétés comme des \Helpref{chaînes de caractères}{chaine}.
+\end{itemize}
+
+
+\begin{demo}{Nommer des points}{Label}
+\begin{texgraph}[name=Label,export=pgf,
+              preload="PolyedresII.mac"]
+view(-5,5,-5,5),Marges(0,0,0,0),
+size(7.5,0),
+C:=Cube(Origin, M(3,3,0)),
+S:=Sommets(C), Point3D(S),
+DrawPoly(C,0), k:=0,
+for Z in S by 2 do
+ Inc(k,1),
+ Label(Proj3D(Z)+
+  if k>4 then 0.5*i else -0.5*i fi,
+     ["$S_",k,"$"])
+od 
+\end{texgraph}
+\end{demo}
+
+\subsection{Ligne}\label{cmdLigne}
+
+\begin{itemize}
+\item \util   \textbf[Ligne()]{Ligne( <liste>, <fermée> [, rayon] )}.
+
+\item \desc  trace la ligne polygonale définie par la liste, si le paramètre \argu{fermée} vaut 1, la ligne polygonale
+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
+"angles" de la ligne polygonale sont arrondis avec un arc de cercle dont le rayon correspond à l'argument \argu{rayon}.
+\end{itemize}
+
+\begin{demo}{Triangle de \textsc{Sierpinski}}{Ligne}
+\begin{texgraph}[name=Ligne,export=pgf]
+Marges(0,0,0,0), size(7.5),
+A:=-5-5*i, B:=5*i, C:=5-5*i,niv:=6,
+Tr:=[A,B,C,jump], {initial}
+for k from 1 to niv do
+ Tr:=[hom(Tr,A,0.5),hom(Tr,B,0.5),
+      hom(Tr,C,0.5)]
+od,
+FillStyle:=full,FillColor:=blue,
+Ligne(Tr,1) 
+\end{texgraph}
+\end{demo}
+
+\subsection{Path}\label{cmdPath}
+
+\begin{itemize}
+\item \util   \textbf[Path()]{Path( <liste> [, fermé (0/1)]}
+
+\item \desc trace le chemin représenté par \argu{liste} et ferme la dernière composante de celui-ci si l'argument
+optionnel vaut $1$ (sa valeur par défaut est $0$). La liste est une succession de points (affixes) et d'instructions
+indiquant à quoi correspondent ces points, ces instructions sont: 
+
+\begin{itemize}
+ \item \textbf{line}: relie les points par une ligne polygonale,
+
+ \item  \textbf{linearc}: relie les points par une ligne polygonale mais les angles sont arrondis par un arc de cercle,
+la valeur précédent la commande linearc est interprétée comme le rayon de ces arcs.
+
+ \item \textbf{arc}: dessine un arc de cercle, ce qui nécessite quatre arguments: 3 points et le rayon, plus
+éventuellement un cinquième argument: le sens (+/- 1), le sens par défaut est 1 (sens trigonométrique).
+
+ \item \textbf{ellipticArc}: dessine un arc d'ellipse, ce qui nécessite cinq arguments: 3 points, le rayonX, le rayonY,
+plus éventuellement un sixième argument: le sens (+/- 1), le sens par défaut est 1 (sens trigonométrique), plus
+éventuellement un septième argument: l'inclinaison en degrés du grand axe par rapport à l'horizontale.
+
+ \item \textbf{curve}: relie les points par une spline cubique naturelle.
+
+ \item \textbf{bezier}: relie le premier et le quatrième point par une courbe de bézier (les deuxième et troisième
+points sont les points de contrôle).
+
+ \item \textbf{circle}: desine un cercle, ce qui necessite deux arguments: un point et le centre, ou bien trois
+arguments qui sont trois points du cercle.
+
+ \item \textbf{ellipse}: dessine une ellipse, les arguments sont: un point, le centre, rayon rX, rayon rY, inclinaison
+du grand axe en degrés  par rapport à l'horizontale (facultatif).
+
+ \item \textbf{move}: indique un déplacement sans tracé.
+
+ \item \textbf{closepath}: ferme la composante en cours.
+\end{itemize}
+
+Par convention, le premier point du tronçon numéro n+1 est le dernier point du tronçon numéro n.
+
+\item \exem
+\end{itemize}
+
+\begin{demo}{Commande Path et Eofill}{Path}
+\begin{texgraph}[name=Path,export=pgf]
+view(-5,5,-4,6),Marges(0,0,0,0),size(7.5),
+Axes(2*i,1+i),Eofill:=1,
+FillStyle:=full,FillOpacity:=0.9,
+FillColor:= blue, Width:=8,
+Path([-4,i,circle,
+      -3+2*i,move,-3,-2,line,
+      0,2,2,-1,arc,
+      3,3+3*i,0.5,linearc,
+      1,-1+5*i,-3+2*i,bezier,
+      closepath,
+      ]) 
+\end{texgraph}
+\end{demo}
+
+
+\subsection{Point}\label{cmdPoint}
+
+\begin{itemize}
+\item \util  \textbf[Point()]{Point( <A1>, ..., <An> )}.
+
+\item \desc  représente le nuage de points \argu{A1} ... \argu{An}.
+\end{itemize}
+
+\pngtrue
+\begin{demo}{Diagramme de bifurcation de la suite $u_{n+1}=ru_n(1-u_n)$}{Point}
+\begin{texgraph}[name=Point,export=eps]
+view(2.75,4,0,1),
+Marges(0.75,0.5,0.5,0.5),size(7.5),
+Axes(Xmin+i*Ymin,0.25+0.2*i,1+i),
+pas:=0.001, Color:=red,
+DotScale:=0.1,
+Point(
+ for r from Xmin to Xmax step pas do
+  u:=0.5,
+  for k from 1 to 25 do u:=r*u*(1-u) od,
+  for k from 1 to 25 do u:=r*u*(1-u), r+i*u od
+ od)
+\end{texgraph}
+\end{demo}
+\pngfalse
+
+\subsection{Polaire}\label{cmdPolaire}
+
+\begin{itemize}
+\item \util  \textbf[Polaire()]{Polaire( <r(t)> [, n, 0/1] )}.
+
+\item \desc trace la courbe polaire d'équation $\rho=r(t)$, \argu{expression}. 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 suivante: lorsque la distance entre deux
+points consécutifs est supérieur à un certain seuil alors on calcule un point intermédiaire (par dichotomie), ceci peut
+ê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
+seuil, et si la valeur optionnelle $1$ est présente, alors une discontinuité (\jump) est insérée dans la liste des
+points.
+\end{itemize}
+
+
+\begin{demo}{Courbe polaire et points doubles}{Polaire}
+\begin{texgraph}[name=Polaire,export=pgf]
+view(-3,2,-2,3),Marges(0.25,0.25,0.25,0.25),
+size(7.5),Width:=4,
+Axes(0,1+i),NbPoints:=250,tMin:=-25,tMax:=25,
+courbe:=Get(Polaire((t+1)/(t-1))),
+ptDoubles:= courbe InterL courbe,
+Width:=8, Color:= blue, Ligne(courbe,0),
+DotStyle:=dotcircle, DotScale:=2,
+Point(ptDoubles),
+Label(1+2*i,"$r(t)=\dfrac{t+1}{t-1}$")
+\end{texgraph}
+\end{demo}
+
+
+\subsection{Spline}\label{cmdSpline}
+
+\begin{itemize}
+\item \util  \textbf[Spline()]{Spline( <V0>, <A0>,..., <An>, <Vn> )}.
+\item \desc trace la spline cubique passant par les points \argu{A0} jusqu'à \argu{An}. \argu{V0} et \argu{Vn} désignent
+les vecteurs vitesses aux extrémités [contraintes], si l'un d'eux est nul alors l'extrémité correspondante est
+considérée comme libre (sans contrainte).
+\end{itemize}
+
+
+\begin{demo}{Commande Spline}{Spline}
+\begin{texgraph}[name=Spline,export=pgf]
+view(-5,5,-5,5),Marges(0.25,0.25,0.25,0.25),
+size(7.5),Width:=4,Axes(0,1+i),
+A:= -4-3*i, B:=-2+2*i, C:=1-3*i, D:=4+3*i,
+LabelDot(A,"$A$","S",1),LabelDot(B,"$B$","N",1),
+LabelDot(C,"$C$","S",1),LabelDot(D,"$D$","O",1),
+Width:=8,Color:=red, Spline(0,A,B,C,D,0),
+Ligne([-4.5+4.5*i,-4+4.5*i],0), LabelStyle:=left,
+Label(-3.5+4.5*i,"libre"),
+Color:=blue,Spline(5,A,B,C,D,5*i),
+Ligne([-4.5+3.5*i,-4+3.5*i],0),
+Label(-3.5+3.5*i,"contrainte"),
+Width:=4,
+Arrows:=1, Ligne([A,A+2,jump,D,D+2*i],0)
+\end{texgraph}
+\end{demo}
+
+
+\section{Commandes de dessin bitmap}
+
+La version \version propose quelques commandes de base pour faire du dessin bitmap. Ce dessin bitmap peut être
+enregistré (au format \textit{bmp}) mais il n'est pas pris en compte par les autres exports du logiciel. Ces commandes
+ne sont fonctionnelles qu'avec la version GUI de TeXgraph. Chaque pixel est repéré son affixe $x+iy$ où $x$ et $y$ sont
+deux entiers, l'origine est en haut à gauche de la zone de dessin \Mytextbf{marges exclues}, l'axe $Ox$ est dirigé vers
+la droite et l'axe $Oy$ vers le bas.
+
+\subsection{DelBitmap}\label{cmdDelBitmap}
+
+\begin{itemize}
+\item \util  \textbf[DelBitmap()]{DelBitmap()}.
+\item \desc détruit le bitmap en cours.
+\end{itemize}
+
+\subsection{MaxPixels}\label{cmdMaxPixels}
+
+\begin{itemize}
+\item \util  \textbf[MaxPixels()]{MaxPixels()}.
+\item \desc renvoie la taille de la zone graphique en pixels sous la forme: \textsl{maxX+i*maxY}, ainsi pour les
+coordonnées des pixels (coordonnées entières), l'intervalle des abscisses est \textsl{[0 .. maxX]} et celui des
+ordonnées \textsl{[0 .. maxY]}. Chaque pixel est repéré par des coordonnées entières, donc chaque pixel a une affixe
+$a+ib$ avec $a$ dans \textsl{[0 .. maxX]} et $b$ dans \textsl{[0 .. maxY]}. L'origine étant le coin supérieur gauche de
+la zone graphique \Mytextbf{marges exclues}.
+\end{itemize}
+
+\subsection{NewBitmap}\label{cmdNewBitmap}
+
+\begin{itemize}
+\item \util  \textbf[NewBitmap()]{NewBitmap( [fond] )}.
+\item \desc  permet de créer un nouveau bitmap (vide). Par défaut la couleur du fond est le blanc.
+\end{itemize}
+
+\subsection{Pixel}\label{cmdPixel}
+
+\begin{itemize}
+\item \util  \textbf[Pixel()]{Pixel( <liste> )}.
+\item \desc  permet de d'allumer une \argu{liste} de pixels. Cette liste est de la forme: \textsl{[affixe, couleur,
+affixe, couleur, ...]}. Les affixes des pixels sont de la forme $a+ib$ avec $a$ et $b$ des entiers positifs ou nuls,
+l'origine étant le coin supérieur gauche de la zone graphique \Mytextbf{marges exclues}.
+\end{itemize}
+
+\subsection{Pixel2Scr}\label{cmdPixel2Scr}
+
+\begin{itemize}
+\item \util  \textbf[Pixel2Scr()]{Pixel2Scr( <affixe> )}.
+\item \desc  permet de convertir l'\argu{affixe} d'un pixel (coordonnées entières) en affixe dans le repère de
+l'utilisateur à l'écran.
+\end{itemize}
+
+\subsection{Scr2Pixel}\label{cmdScr2Pixel}
+
+\begin{itemize}
+\item \util  \textbf[Scr2Pixel()]{Scr2Pixel( <affixe> )}.
+\item \desc  permet de convertir l'\argu{affixe} d'un point dans le repère de l'utilisateur à l'écran en coordonnées
+entières (affixe du pixel correspondant au point).
+\item \exem un ensemble de Julia, la commande est à placer dans un élément graphique utilisateur. L'image \textit{png} a
+été obtenue à partir du bouton \textit{snapshot} de l'interface graphique en prenant l'export \textit{bmp} puis une
+conversion en \textit{png}:
+\end{itemize}
+
+\pngtrue
+\begin{demo}{Un ensemble de Julia}{julia}
+\begin{texgraph}[name=julia,export=none]
+view(-1.5,1.5,-1,1),Marges(0,0,0,0),size(7.5),
+ NewBitmap(),
+  T:=100, m:=MaxPixels(), c:=-0.181-0.667*i,
+   for x from 0 to Re(m) do
+    Pixel(
+     for y from 0 to Im(m) do
+         N:=0, z:=Pixel2Scr(x+i*y),
+         repeat
+              z:=z^2+c, Inc(N,1)
+         until (N=T) Or (abs(z)>2) od,
+         x+i*y, MixColor(darkred,1-N/T,yellow,N/T)
+    od )
+  od
+\end{texgraph}
+\end{demo}
+\pngfalse
+
+
+\section{Macros graphiques de TeXgraph.mac}
+
+\subsection{angleD}
+
+\begin{itemize}
+\item \util \textbf[angleD()]{angleD( <B>, <A>, <C>, <r> )}.
+\item \desc  dessine l'angle $\widehat{BAC}$ avec un parallèlogramme de coté r.
+\end{itemize}
+
+\subsection{Arc}\label{macArc}
+
+\begin{itemize}
+\item \util  \textbf[Arc()]{Arc( <B>, <A>, <C>, <R> [, sens] )}.
+
+\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)$
+jusqu'à la droite $(AC)$, l'argument facultatif \argu{sens} indique: le sens trigonométrique si sa valeur est $1$
+(valeur par défaut), le sens contraire si valeur est $-1$. 
+\end{itemize}
+
+\begin{demo}{Commande Arc}{Arc}
+\begin{texgraph}[name=Arc,export=pgf]
+view(-2.25,3.75,-2,5),Marges(0,0,0,0),size(7.5),
+A:=0, B:=3+i, C:=2+4*i,
+DotScale:=2, Width:=8,
+Ligne([B,A,C],0), Color:=red,
+LabelDot(A,"$A$","S",1),
+LabelDot(B,"$B$","N",1),
+LabelDot(C,"$C$","SE",1),
+Arrows:=1, Color:=blue,
+Arc(B,A,C,1,-1),
+Arc(B,A,C,2,1)
+\end{texgraph}
+\end{demo}
+
+\subsection{arcBezier}
+
+\begin{itemize}
+\item \util \textbf[arcBezier()]{arcBezier( <B>, <A>, <C>, <r> [,sens] )}.
+\item \desc a le même effet que la macro graphique \textsl{Arc} mais l'arc est dessiné avec des courbes de Bezier.
+\end{itemize}
+
+
+\subsection{axes}
+
+\begin{itemize}
+\item \util \textbf[axes()]{axes( <[origine, etendueX, etendueY]>, <gradX+i*gradY> [, subdivX+i*subdivY,
+posOriginX+i*posOriginY, num, "texte", den, firstnum] )}.
+\item \desc pour tracer et graduer les axes passant par \argu{origine} (affixe), elle s'utilise comme la commande
+\Helpref{Axes}{cmdAxes} et utilise donc les variables \textit{xylabelpos} et \textit{xyticks}. Par défaut les axes
+occupent toute la fenêtre si les paramètres optionnels \argu{etendueX} et \argu{etendueY} sont omis. Le paramètre
+\argu{etendueX} représente sous forme complexe l'intervalle des abcisses: \verb|xmin+i*xmax|, de même pour les ordonnées
+avec le paramètre \argu{etendueY}, les axes sont alors limités à ces intervalles. Remarque: pour préciser une valeur de
+\argu{etendueY} sans préciser de valeur pour \argu{etendueX}, il suffit de mettre \jump à la place de \argu{etendueX}
+(et non pas \Nil!).
+
+\item Le paramètre optionnel \argu{subdivX+i*subdivY} indique le nombre de subdivisions par unité sur chaque axe (0 par
+défaut).
+
+\item Le paramètre optionnel \argu{posOriginX+i*posOriginY} permet de positionner le label de l'origine:
+
+       \begin{itemize}
+       \item \argu{posOriginX}=0: pas de label à l'origine (idem pour \argu{posOriginY}=0),
+       \item \argu{posOriginX}=1: label normal à l'origine (idem pour \argu{posOriginY}=1),,
+       \item \argu{posOriginX}=2: label décalé à droite de l'origine   et en haut pour \argu{posOriginY}=2 (valeurs par
+défaut),
+       \item \argu{posOriginX}=-2 label décalé à gauche de l'origine et en bas pour \argu{posOriginY}=-2.
+       \end{itemize}
+
+\item Sur les 2 axes, chaque label est multiplié par la fraction \argu{num/den} (1 par défaut), ajouté à
+\argu{firstnum/den} (l'origine par défaut) et accompagné du \argu{"texte"} au numérateur. Pour que le séparateur décimal
+soit la virgule à la place du point, il suffit de mettre la variable \var{usecomma} à la valeur $1$. Cette macro est
+également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et 
+\var{nbdeci} qui fixe le nombre de décimales affichées.
+
+\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)}.
+Contrairement à la commande Axes, cette macro est sensible aux modifications de la matrice courante.
+\end{itemize}
+
+\subsection{axeX}
+
+\begin{itemize}
+\item \util \textbf[axeX()]{axeX( <[origine, posOrigine, etendue]>, <Xpas>  [, Subdiv, labelPos , num, ""texte"", den,
+firstnum] )}.
+
+\item \desc pour tracer et graduer un axe des abscisses passant par \argu{origine} et avec un pas de \argu{Xpas}. Le
+paramètre \argu{etendue} représente sous forme complexe l'intervalle des abscisses \textsl{xmin+i*xmax}, si celui-ci est
+omis, alors le tracé occupe la fenêtre. Remarque: pour préciser une valeur de \argu{etendue} sans préciser de valeur
+pour \argu{posOrigine}, il suffit de mettre \jump à la place de \argu{posOrigine} (et non pas \Nil!).
+
+\item \argu{Subdiv} est le nombre de subdivisions par unité, chaque abscisse est multipliée par la fraction
+\argu{num/den} (1 par défaut), ajoutée à \argu{firstnum/den} (l'origine par défaut) et accompagnée du \argu{"texte"} au
+numérateur. Pour que le séparateur décimal soit la virgule à la place du point, il suffit de mettre la variable
+\var{usecomma} à la valeur $1$.  Cette macro est
+également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et 
+\var{nbdeci} qui fixe le nombre de décimales affichées.
+
+\item Les paramètres optionnels \argu{posOrigine} et \argu{labelpos} permettent de positionner les labels:
+
+       \begin{itemize}
+       \item \argu{posOrigine}=0: pas de label à l'origine,
+       \item \argu{posOrigine}=1: label normal à l'origine,
+       \item \argu{posOrigine}=2: label décalé à droite à l'origine (valeur par défaut),
+       \item \argu{posOrigine}=-2 label décalé à gauche à l'origine,
+       \item \argu{labelPos}=0 : pas de label du tout,
+       \item \argu{Re(labelpos)}=top: labels au-dessus,
+       \item Re(\argu{labelPos})=bottom : labels en-dessous (valeur par défaut),
+       \item Im(\argu{Im(labelPos})=1: labels orthogonaux à l'axe.
+       \end{itemize}
+\end{itemize}
+
+\subsection{axeY}
+
+\begin{itemize}
+\item \util \textbf[axeY()]{axeY(<[origine, posOrigine, etendue]>, <Ypas>  [, Subdiv, labelPos , num, ""texte"", den,
+firstnum] )}.
+
+\item \desc pour tracer et graduer un axe des abscisses passant par \argu{origine} et avec un pas de \argu{Ypas}. Le
+paramètre \argu{etendue} représente sous forme complexe l'intervalle des ordonnées \textsl{ymin+i*ymax}, si celui-ci est
+omis, alors le tracé occupe la fenêtre. Remarque: pour préciser une valeur de \argu{etendue} sans préciser de valeur
+pour \argu{posOrigine}, il suffit de mettre \jump à la place de \argu{posOrigine} (et non pas \Nil!).
+
+\item \argu{Subdiv} est le nombre de subdivisions par unité, chaque ordonnée est multipliée par la fraction
+\argu{num/den} (1 par défaut), ajoutée à \argu{firstnum/den} (l'origine par défaut) et accompagnée du \argu{"texte"} au
+numérateur. Pour que le séparateur décimal soit la virgule à la place du point, il suffit de mettre la variable
+\var{usecomma} à la valeur $1$. Cette macro est
+également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et 
+\var{nbdeci} qui fixe le nombre de décimales affichées.
+
+\item Les paramètres optionnels \argu{posOrigine} et \argu{labelpos} permettent de positionner les labels:
+
+       \begin{itemize}
+       \item \argu{posOrigine}=0: pas de label à l'origine,
+       \item \argu{posOrigine}=1: label normal à l'origine,
+       \item \argu{posOrigine}=2: label décalé vers le haut à l'origine (valeur par défaut),
+       \item \argu{posOrigine}=-2 label décalé vers le bas à l'origine,
+       \item \argu{labelPos}=0 : pas de label du tout,
+       \item \argu{Re(labelpos)}=left: labels à gauche de l'axe (valeur par défaut),
+       \item Re(\argu{labelPos}=right : labels à droite de l'axe,
+       \item Im(\argu{labelPos})=1: labels orthogonaux à l'axe.
+       \end{itemize}
+\end{itemize}
+
+
+\begin{demo}{Utilisation de axeX, axeY}{axeXY}
+\begin{texgraph}[name=axeXY,export=pgf]
+view(-5,5,-5,5),size(7.5),
+LabelSize:=footnotesize,
+//graphique du haut
+SaveWin(),
+view(-5,5,0.25,5),Width:=6, Arrows:=1,
+SetMatrix([2.5*i,2/pi,2*i]),
+axeX(0,pi/2,Nil,Nil,1,"\pi",2), axeY(0,1),
+Arrows:=0, Color:=red, Width:=8,
+tMin:=-2*pi, tMax:=2*pi, Cartesienne(sin(x)),
+Label(pi*1.65+i,"$f(x)=\sin(x)$"),RestoreWin(),
+//graphique du bas
+SaveWin(), Color:=black,
+view(-5,5,-5,-0.25), SetMatrix([-5.5*i,2,i]),
+Width:=6, Arrows:=1, usecomma:=1,
+axeX([i,0],0.5), axeY([i,0],1,Nil,Nil,1,"a"),
+Arrows:=0, Color:=blue, Width:=8,
+Cartesienne(x^2+1),
+Label(1+4.75*i,"$g(x)=x^2+a$"),
+RestoreWin()
+\end{texgraph}
+\end{demo}
+
+
+\subsection{background}\label{macbackground}
+
+\begin{itemize}
+\item \util \textbf[background()]{background( <fillstyle>, <fillcolor> )}.
+\item \desc permet de remplir le fond de la fenêtre graphique avec le style et la couleur demandée. Cette macro met à
+jour la variable \var{backcolor}.
+\end{itemize}
+
+\subsection{bbox}
+
+\begin{itemize}
+\item \util \textbf[bbox()]{bbox()}.
+\item \desc permet d'ajuster la fenêtre à la "bounding box" autour du dessin courant. Cette macro est destinée à être
+utilisée dans la ligne de commande en bas de la fenêtre principale, et non pas dans un élément graphique.
+\end{itemize}
+
+
+\subsection{centerView}
+
+\begin{itemize}
+\item \util \textbf[centerView()]{centerView( <affixe> )}.
+\item \desc permet de centrer la fenêtre graphique sur le point représenté par \argu{affixe}, sans changer les
+dimensions courantes du graphique. Cette macro est plutôt destinée à être utilisée dans la ligne de commande en bas de
+la fenêtre principale.
+\end{itemize}
+
+\subsection{Cercle}\label{cmdCercle}
+
+\begin{itemize}
+\item \util  \textbf[Cercle()]{Cercle( <A>, <r> [, B] )}.
+
+\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
+le cercle défini par les trois points \argu{A}, \argu{r} et \argu{B}.
+
+Pour les macros \textsl{Arc} et \textsl{Cercle}, on peut s'attendre à des surprises dans le résultat final si le
+repère n'est pas orthonormé! Le repère est orthonormé lorsque les variables \var{Xscale} et \var{Yscale} sont égales,
+voir option \Helpref{Paramètres/Fenêtre}{param}.
+\end{itemize}
+
+\begin{demo}{La cycloïde}{cycloide}
+\begin{texgraph}[name=cycloide,export=pgf]
+view(-5,5,-1,3),Marges(0,0,0,0),
+size(7.5), Seg(-5,5),
+for t in [-4,-1.85,0,1.85,3] do
+  M:=t-sin(t)+i*(1-cos(t)),
+  I:=t+i, DotStyle:=cross,
+  Point(I), DotStyle:=bigdot,
+  Point(M), Cercle(I,1), Seg(M,I),
+  Arrows:=1, Arc(M,I,t,0.5,t),
+  Arrows:=0, LineStyle:=dashed,
+  Seg(I,t), LineStyle:=solid
+od,
+Width:=8,Color:=red,
+Courbe( t-sin(t)+i*(1-cos(t)))
+\end{texgraph}
+\end{demo}
+
+\subsection{Clip}
+
+\begin{itemize}
+\item \util \textbf[Clip()]{Clip( <liste> )}.
+\item \desc permet de clipper les éléments graphiques déjà dessinés avec la \argu{liste} qui doit être une courbe fermée
+et simple. La macro peint l'extérieur de la courbe représentée par la \argu{liste}.
+\end{itemize}
+
+\subsection{Dbissec}
+
+\begin{itemize}
+\item \util \textbf[Dbissec()]{Dbissec( <B>, <A>, <C>, <1 ou 2> )}.
+\item \desc dessine la bissectrice de l'angle $\widehat{BAC}$, intérieure si le dernier paramètre vaut $1$ et extérieure
+pour la valeur $2$.
+\end{itemize} 
+
+\subsection{Dcarre}
+
+\begin{itemize}
+\item \util \textbf[Dcarre()]{Dcarre( <A>, <B>, <+/-1> [, rayon]  )}.
+\item \desc dessine de carré de sommets consécutifs \argu{A} et \argu{B} dans le sens direct si le troisième paramètre
+vaut $1$ (indirect pour $-1$). Si le paramètre \argu{rayon} est présent, alors les \og coins\fg\ de la figure seront
+arrondis par un arc de cercle ayant le rayon mentionné.
+\end{itemize} 
+
+
+\subsection{Ddroite}
+
+\begin{itemize}
+\item \util \textbf[Ddroite()]{Ddroite( <A>, <B> )}.
+\item \desc dessine la demi-droite $[A,B)$.
+\end{itemize} 
+
+\subsection{Dmed}
+
+\begin{itemize}
+\item \util \textbf[Dmed()]{Dmed( <A>, <B> [, angle droit(0/1)] )}.
+\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
+droit est dessiné.
+\end{itemize} 
+
+
+\subsection{domaine1}
+
+\begin{itemize}
+\item \util \textbf[domaine1()]{domaine1( <f(x)> [, a, b] )}.
+\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
+précisés, sinon $x=$\textsl{tMin} et $x=$\textsl{tMax}.
+\end{itemize}
+
+
+\subsection{domaine2}
+
+\begin{itemize}
+\item \util \textbf[domaine2()]{domaine2( <f(x)>, <g(x)> [, a, b] )}.
+\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
+précisés, sinon $x=$\textsl{tMin} et $x=$\textsl{tMax}.
+\end{itemize}
+
+
+\subsection{domaine3}
+
+\begin{itemize}
+\item \util \textbf[domaine3()]{domaine3( <f(x)>, <g(x)> )}.
+\item \desc délimite la partie du plan comprise entre les courbes Cf et Cg avec $x$ dans l'intervalle
+\textsl{[tMin,tMax]}, en recherchant les points d'intersection.
+\end{itemize}
+
+\begin{demo}{Exemple avec domaine1, 2 et 3}{domaines}
+\begin{texgraph}[name=domaines,export=pgf]
+view(-5,5,-4,5),size(7.5),tMin:=-5,
+Axes(-5,1+i,2+2*i), tMax:=-1,
+Cartesienne(sin(x)), tMax:=5,
+Cartesienne(2*cos(x)),tMin:=-3,tMax:=3,
+Cartesienne(x^2), A:=-4.5+(Ymin+1.75)*i,
+FillStyle:=full, FillOpacity:=0.5,FillColor:=green,
+LabelStyle:=left, LabelSize:=footnotesize,
+Dcarre(A+0.25*(-1+i), A+0.25*(1+i), -1),
+Label(A+0.4,"domaine2 sur $[-4\,;\, -1.5]$ "),
+Inc(A,-0.75*i), FillColor:=blue,
+Dcarre(A+0.25*(-1+i), A+0.25*(1+i),-1),
+Label(A+0.4,"domaine3 entre $2\cos(x)$ et $x^2$ "),
+Inc(A,-0.75*i), FillColor:=red,
+Dcarre(A+0.25*(-1+i), A+0.25*(1+i),-1),
+Label(A+0.4,"domaine1 sur $[1.1\,;\, 4]$"),
+FillColor:=red, domaine1(2*cos(x), 1.1, 4),
+ FillColor:=green, domaine2(2*cos(x), sin(x),-4,-1.5),
+FillColor:=blue, domaine3(2*cos(x),x^2),
+Arrows:=2, tangente(2*cos(x),0.5,1.5)
+\end{texgraph}
+\end{demo}
+
+\subsection{Dparallel}
+
+\begin{itemize}
+\item \util \textbf[Dparallel()]{Dparallel( <[A, B]> , <C> )}.
+\item \desc dessine la parallèle à la droite \argu{[A,B]} passant par \argu{C}.
+\end{itemize} 
+
+\subsection{Dparallelo}
+
+\begin{itemize}
+\item \util \textbf[Dparallelo()]{Dparallelo( <A>, <B> , <C> [, rayon] )}.
+\item \desc dessine le parallèlogramme de sommets consécutifs \argu{A}, \argu{B} et \argu{C}. Si le paramètre
+\argu{rayon} est présent, alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le rayon
+mentionné.
+\end{itemize} 
+
+
+\subsection{Dperp}
+
+\begin{itemize}
+\item \util \textbf[Dperp()]{Dperp( <[A, B]> , <C> [, angle droit(0/1)] )}.
+\item \desc dessine la perpendiculaire à la droite \argu{[A,B]} passant par \argu{C}. Si le troisième paramètre vaut $1$
+($0$ par défaut) alors un angle droit est dessiné.
+\end{itemize}
+
+\subsection{Dpolyreg}
+
+\begin{itemize}
+\item \util \textbf[Dpolyreg()]{Dpolyreg( <centre> , <sommet>, <nombre de côtés> [, rayon] )}.
+\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
+paramètre \argu{rayon} est présent, alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le
+rayon mentionné.
+\end{itemize}  
+
+\centerline{ou}
+
+\begin{itemize}
+\item \util \textbf[Dpolyreg()]{Dpolyreg( <sommet1>, <sommet2>, <nombre de cotés +sens*i> [, rayon] )}.
+\item \desc dessine le polygône régulier défini par deux sommets consécutifs \argu{sommet1} et \argu{sommet2}, le 
+\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,
+alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le rayon mentionné.
+\end{itemize}
+
+\subsection{DpqGoneReg}\label{macDpqGoneReg}
+
+\begin{itemize}
+\item \util \textbf[DpqGoneReg()]{DpqGoneReg( <centre> , <sommet>, <[p,q]> )}.
+\item \desc dessine le \argu{p/q}-gône régulier défini par le \argu{centre} et un \argu{sommet}.
+\end{itemize} 
+
+\begin{demo}{\textit{DpqGoneReg}: exemple}{pqGoneReg}
+\begin{texgraph}[name=pqGoneReg,export=pgf]
+view(-5,5,-6,6),Marges(0,0,0,0),size(7.5),
+FillStyle:=full, FillColor:=lightpink,
+Color:=blue, Width:=8,
+DpqGoneReg(-2.5+2.5*i,-2.5+0.25*i, [7,3]),
+Label(-2.5+5*i,"[7,3]"),
+DpqGoneReg(2.5+2.5*i,2.5+0.25*i, [7,2]),
+Label(2.5+5*i,"[7,2]"),
+DpqGoneReg(-2.5-2.5*i,-2.5-0.25*i, [7,1]),
+Label(-2.5-5*i,"[7,1]"),
+DpqGoneReg(2.5-2.5*i,2.5-0.25*i, [6,2]),
+Label(2.5-5*i,"[6,2]") 
+\end{texgraph}
+\end{demo}
+
+
+\subsection{drawSet}\label{macdrawSet}
+
+\begin{itemize}
+\item \util \textbf[drawSet()]{drawSet( <ensemble> )}.
+\item \desc dessine un ensemble produit par les macros \Helpref{capB}{maccapB}, \Helpref{cupB}{maccupB} ou
+\Helpref{setminusB}{macsetminusB}.
+\end{itemize} 
+
+\subsection{Drectangle}
+
+\begin{itemize}
+\item \util \textbf[Drectangle()]{Drectangle( <A>, <B> , <C> [, rayon] )}.
+\item \desc dessine le rectangle de sommets consécutifs \argu{A}, \argu{B}, le côté opposé passant par \argu{C}. Si le
+paramètre \argu{rayon} est présent, alors les \og coins\fg\ de la figure seront arrondis par un arc de cercle ayant le
+rayon mentionné.
+\end{itemize} 
+
+
+\subsection{ellipticArc}\label{macellipticArc}
+\begin{itemize}
+\item \util \textbf[ellipticArc()]{ellipticArc( <B>, <A>, <C>, <RX>, <RY>, <sens(+/-1)> [, inclinaison] )}.
+\item \desc dessine un arc d'ellipse de centre \argu{A}, allant de \argu{B} à \argu{C} de rayons \argu{RX} et \argu{RY},
+l'axe portant le rayon \argu{RX} ayant une certaine \argu{inclinaison} par rapport à l'horizontale, celle-ci est en
+degrés et vaut 0 par défaut, le paramètre \argu{sens} indique le sens de rotation, 1 pour le sens trigonométrique.
+\end{itemize}
+
+
+\subsection{flecher}
+
+\begin{itemize}
+\item \util \textbf[flecher()]{flecher( <liste>, <pos1, ..., posN> )}.
+\item \desc dessine des flèches le long de la ligne polygonale \argu{liste}, la position de chaque flèche (pos1, ...)
+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
+sens de parcourt de la ligne, pour inverser une flèche on ajoute +i à la position.
+\item \exem \co{flecher(Get(Cercle(0,3)), [0,0.5] )}
+\end{itemize}
+
+\subsection{GradDroite}\label{macGradDroite}
+
+\begin{itemize}
+\item \util \textbf[GradDroite()]{GradDroite( <[A, origine + i*posOrigine, etendue]>, <[u, unit]>, <hautDiv>, <subdiv>
+[, poslab, orientation, num, ""texte"", den, firstnum] )}
+\item \desc gradue la droite passant par \argu{A} et dirigée par le vecteur \argu{u} (celui-ci n'est pas forcément
+unitaire), \argu{hautdiv} est la hauteur des graduations en cm, \argu{subdiv} est le nombre de subdivisions par unité.
+
+Paramètres optionnels:
+       \begin{itemize}
+       \item \argu{origin}: indique la graduation de l'origine \argu{A} (0 par défaut), 
+       \item \argu{posOrigin}: indique la position du label à l'origine \argu{A}, plusieurs cas: 
+               \begin{itemize}
+               \item \argu{posOrigin}=0: pas de label à l'origine,
+               \item \argu{posOrigin}=1: label normal à l'origine (comme les autres)
+               \item \argu{posOrigin}=2: label à l'origine décalé dans le sens du vecteur \argu{u} (valeur par défaut),
+               \item \argu{posOrigin}=-2: label à l'origine décalé dans le sens opposé du vecteur \argu{u}.
+               \end{itemize}
+
+       \item \argu{etendue}: représente l'intervalle des graduations sous forme complexe: \textsl{min+i*max}, le tracé
+de l'axe sera limité à cet intervalle. Si ce paramètre est omis, le tracé occupera la fenêtre.
+       \item \argu{unit}: indique le pas des graduations sur l'axe (1 par défaut), cette valeur doit être positive.
+       \item \argu{poslab} indique la position des labels par rapport à l'axe, ce paramètre prend les valeurs \co{top}
+ou \co{bottom}, 
+       \item \argu{orientation}: orientation des labels, la valeur $i$ signifie que les labels sont orthogonaux à
+l'axe, sinon l'orientation représente le \var{LabelStyle} (left, right, top, ...),
+       \item  chaque graduation est multipliée par la fraction \argu{num/den} (1 par défaut), ajoutée à
+\argu{firstnum/den} (l'origine par défaut) et accompagnée du \argu{"texte"} au numérateur. Pour avoir une virgule comme
+spérateur décimal au lieu du point, il faut mettre la variable \var{usecomma} à la valeur $1$.  Cette macro est
+également sensible aux variables \var{dollar} (pour ajouter ou non des \$ autour des labels des graduations), et 
+\var{nbdeci} qui fixe le nombre de décimales affichées. Le nombre maximal de
+graduations est fixé par la variable \var{maxGrad} qui vaut $100$ par défaut.
+       \end{itemize}
+
+\item \exem \co{GradDroite([0,1+2*i],[1,0.5], xyticks, 1, bottom, i)}: signifie que la graduation de l'origine sera 1
+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.
+
+\end{itemize}
+
+\subsection{LabelArc}
+
+\begin{itemize}
+\item \util \textbf[LabelArc()]{LabelArc( <B>, <A>, <C>, <R>, <sens>, <"texte">,  [, options] )}.
+\item \desc cette macro dessine un arc de cercle de centre \argu{A}, de rayon \argu{R} partant de la droite $(AB)$
+jusqu'à la droite $(AC)$, l'argument facultatif \argu{sens} indique: le sens trigonométrique si sa valeur est 1 (valeur
+par défaut), le sens contraire si valeur est -1. La macro ajoute également le \argu{"texte"}. Le paramètre
+\argu{options} est une liste (facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les
+options sont:
+
+       \begin{itemize}
+       \item \opt{labelpos}{inside/outside}: positionnement du label (outside par defaut)),
+       \item \opt{labelsep}{distance en cm}: distance du label à l'arc (0.25cm par défaut).
+       \item \opt{rotation}{nombre}: angle en degrés que fait le label par rapport à l'horizontale ($0$ par défaut).
+       \end{itemize}
+Il est possible dans la liste des options, de modifier des attributs comme \var{Color} par exemple.
+\end{itemize}
+
+
+
+\subsection{LabelAxe}
+
+\begin{itemize}
+\item \util \textbf[LabelAxe()]{LabelAxe( <x ou y>, <affixe>, <label> [, [labelPos,décalage en cm], mark(0/1)] )}.
+\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
+l'ajout, \argu{label} contient le texte à ajouter. Paramètres optionnels, \argu{[labelPos, décalage en cm]} et
+\argu{mark}:
+       \begin{itemize}
+       \item Re(\argu{labelpos})=1 signifie en dessous pour Ox et à droite pour Oy (par défaut pour Ox),
+       \item Re(\argu{labelpos})=2 signifie au dessus pour Ox et à gauche pour Oy (par défaut pour Oy),
+       \item Im(\argu{labelpos})=-1 signifie un décalage sur la gauche pour Ox, vers le bas pour Oy, si le décalage
+n'est pas précisé, il vaut 0.25 cm par défaut,
+       \item Im(\argu{labelpos})=1 signifie un décalage sur la droite pour Ox, vers le haut pour Oy, si le décalage
+n'est pas précisé, il vaut 0.25 cm par défaut,
+       \item Im(\argu{labelpos})=0 signifie pas de décalage (valeur  par défaut),
+       \item \argu{mark}: indique si le point doit être marqué (dans le dotsyle courant).
+       \end{itemize}
+\end{itemize}
+
+\subsection{LabelDot}\label{macLabelDot}
+
+\begin{itemize}
+\item \util \textbf[LabelDot()]{LabelDot( <affixe>, <"texte">, <orientation> [, DrawDot, distance] )}.
+\item \desc cette macro affiche un texte à coté du point \argu{affixe}. L'orientation peut être "N" pour nord, "NE" pour
+nord-est ...etc, ou bien une liste de la forme [longueur, direction] où direction est un complexe, dans ce deuxième cas,
+le paramètre optionnel \argu{distance} est ignoré. Le point est également affiché lorsque \argu{DrawDot} vaut $1$ (0 par
+défaut) et on peut redéfinir la \argu{distance} en cm entre le point et le texte (0.25cm par défaut).
+\end{itemize}
+
+\subsection{LabelSeg}
+
+\begin{itemize}
+\item \util \textbf[LabelSeg()]{LabelSeg( <A>, <B>, <"texte">,  [, options] )}.
+\item \desc cette macro dessine le segment défini par \argu{A} et \argu{B}, et ajoute le \argu{"texte"}. Le paramètre
+\argu{options} est une liste (facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les
+options sont:
+       \begin{itemize}
+       \item \opt{labelpos}{center/top/bottom}: positionnement du label (center par défaut),
+       \item \opt{labelsep}{distance en cm}: distance du label au segment lorsque labelpos vaut top ou bottom (0.25cm
+par défaut).
+       \item \opt{rotation}{nombre}: angle en degrés que fait le label par rapport à l'horizontale (par défaut le label
+est parallèle au segment).
+       \end{itemize}
+Il est possible dans la liste des options, de modifier des attributs comme \var{Color} par exemple.
+\end{itemize}
+
+
+\subsection{markangle}
+
+\begin{itemize}
+\item \util \textbf[markangle()]{markangle( <B>, <A>, <C>, <r>, <n>, <espacement>, <longueur> )}.
+\item \desc même chose que \Helpref{markseg}{cmdmarkseg} mais pour marquer un arc de cercle.
+\end{itemize}
+
+
+\subsection{markseg}\label{cmdmarkseg}
+
+\begin{itemize}
+\item \util \textbf[markseg()]{markseg( <A>, <B>, <n>, <espacement>, <longueur> [, angle] )}.
+\item \desc marque le segment $[A,B]$ avec \argu{n} petits segments, l'\argu{espacement} est en unité graphique, et la
+\argu{longueur} en cm. Le paramètre optionnel \argu{angle} permet de définir en degré l'angle que feront les marques par
+rapport à la droite $(AB)$ (45 degrés par défaut).
+\end{itemize}
+
+
+\subsection{periodic}
+
+\begin{itemize}
+\item \util \textbf[periodic()]{periodic( <f(x)>, <a>, <b> [, divisions, discontinuités] )}.
+\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
+motif pour couvrir l'intervalle [tMin; tMax]. Les deux paramètres optionnels sont identiques à ceux des courbes
+paramétrées (nombre de divisions et discontinuités).
+\end{itemize}
+
+\begin{demo}{Fonctions périodiques}{periodic}
+\begin{texgraph}[name=periodic,export=pgf]
+view(-5,5,-5,5), size(7.5),
+Axes(0,1+i), Width:=8,
+Color:=red,
+periodic(if t>0 then 4 else 2 fi,-1,1,5,1),
+Color:=blue,
+periodic(2*abs(t)-1,-1,1),
+Color:=magenta,
+periodic(sin(t)-3,-pi/2,pi/2) 
+\end{texgraph}
+\end{demo}
+
+\subsection{Rarc}
+
+\begin{itemize}
+\item \util \textbf[Rarc()]{Rarc( <B>, <A>, <C>, <R>, <sens> )}.
+\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
+orthonormé, le rayon \argu{R} est en centimètres.
+\end{itemize}
+
+\subsection{Rcercle}
+
+\begin{itemize}
+\item \util \textbf[Rcercle()]{Rcercle( <A>, <R> )} ou \Mytextbf{Rcercle( <A>, <B>, <C> )}.
+\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
+en centimètres.
+\end{itemize}
+
+\subsection{Rellipse}
+
+\begin{itemize}
+\item \util \textbf[Rellipse()]{Rellipse( <O>, <RX>, <RY> [, inclinaison] )}.
+\item \desc comme la commande \Helpref{Ellipse}{cmdEllipse} sauf que celle-ci est insensible au repère écran, les rayons
+sont en centimètres.
+\end{itemize}
+
+\subsection{RellipticArc}
+
+\begin{itemize}
+\item \util \textbf[RellipticArc()]{RellipticArc( <B>, <A>, <C>, <RX>, <RY>, <sens(+/-1)> [, inclinaison] )}.
+\item \desc comme la macro \Helpref{ellipticArc}{macellipticArc} sauf que celle-ci est insensible au repère écran, les
+rayons sont en centimètres.
+\end{itemize}
+
+\subsection{RestoreWin}\label{macRestoreWin}
+
+\begin{itemize}
+\item \util \textbf[RestoreWin()]{RestoreWin()}.
+\item \desc restaure la fenêtre graphique ainsi que la matrice 2D enregistrées lors du dernier appel à la macro
+\Helpref{SaveWin}{macSaveWin}.
+\end{itemize}
+
+\subsection{SaveWin}\label{macSaveWin}
+
+\begin{itemize}
+\item \util \textbf[SaveWin()]{SaveWin()}.
+\item \desc enregistre la fenêtre graphique ainsi que la matrice 2D courantes, sur une pile. Cette macro va de paire
+avec la macro \Helpref{RestoreWin}{macRestoreWin}.
+\item \exem plusieurs graphiques sur un seul: voir \Helpref{cet exemple}{axeXY}.
+\end{itemize}
+
+\subsection{Seg}
+
+\begin{itemize}
+\item \util \textbf[Seg()]{Seg( <A>, <B> )}.
+\item \desc dessine le segment $[A,B]$.
+\end{itemize}
+
+\subsection{set}\label{macset}
+
+\begin{itemize}
+\item \util \textbf[set()]{set( <nom>, <affixe centre> [, options] )}.
+\item \desc dessine un ensemble en forme de patatoïde, \argu{affixe centre} désigne le centre de cet ensemble, et le
+paramètre \argu{nom} est une chaîne contenant le nom de cet ensemble. Le paramètre \argu{options} est une liste
+(facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les options sont:
+
+       \begin{itemize}
+       \item \opt{scale}{entier positif}: représente l'échelle (1 par défaut),
+       \item \opt{rotation}{angle en degrés}: permettant d'incliner le dessin (0 degré par défaut),
+       \item \opt{labels}{0/1}: pour afficher ou non le nom de l'ensemble.
+       \item \opt{labelsep}{distance en cm}: distance du label au bord de l'ensemble (0.45cm par défaut)
+       \end{itemize}
+Il est possible dans la liste des options, de modifier des attributs comme \co{LabelStyle} par exemple.
+\item La macro renvoie en résultat la liste des points de la courbe dessinant l'ensemble.
+\end{itemize}
+
+\subsection{setB}\label{macsetB}
+
+\begin{itemize}
+\item \util \textbf[setB()]{setB( <nom>, <affixe centre> [, options] )}.
+\item \desc dessine un ensemble en forme de patatoïde à l'aide de courbes de Bézier, \argu{affixe centre} désigne le
+centre de cet ensemble, et le paramètre \argu{nom} est une chaîne contenant le nom de cet ensemble. Le paramètre
+\argu{options} est une liste (facultative) de la forme \textsl{[ option1:= valeur1, ..., optionN:=valeurN ]}, les
+options sont:
+
+       \begin{itemize}
+       \item \opt{scale}{entier positif}: représente l'échelle (1 par défaut),
+       \item \opt{rotation}{angle en degrés}: permettant d'incliner le dessin (0 degré par défaut),
+       \item \opt{labels}{0/1}: pour afficher ou non le nom de l'ensemble.
+       \item \opt{labelsep}{distance en cm}: distance du label au bord de l'ensemble (0.45cm par défaut)
+       \end{itemize}
+Il est possible dans la liste des options, de modifier des attributs comme \co{LabelStyle} par exemple.
+\item La macro renvoie en résultat la liste des points de contrôle de la courbe représentant l'ensemble. Cette liste
+peut-être utilisée ensuite pour déterminer une intersection (voir \Helpref{capB}{maccapB}), une réunion (voir
+\Helpref{capB}{maccapB}) ou une différence (voir \Helpref{setminusB}{macsetminusB}).
+\end{itemize}
+
+
+\subsection{size}\label{macsize}
+
+\begin{itemize}
+\item \util \textbf[size()]{size( <largeur + i*hauteur> [, ratio(Xscale/Yscale)] )}
+\item \desc permet de fixer les tailles du graphique: \argu{largeur} et \argu{hauteur} (marges incluses) en cm. Si le
+paramètre \argu{hauteur} est nul, alors on considère que hauteur=largeur.
+
+Si le paramètre \argu{ratio} est omis, les échelles sur les deux axes sont calculées pour que la figure entre au plus
+juste dans le cadre fixé, tout en conservant le ratio courant.
+
+Si \argu{ratio} est égal à $0$ alors les échelles sont calculées de manière à obtenir exactement la taille souhaitée (le
+ratio courant n'est donc vraisemblablement pas conservé).
+
+Le repère est orthonormé lorsque le paramètre \argu{ratio} vaut 1. 
+
+\Mytextbf{NB}: un appel aux fonctions \textsl{Fenetre} \textsl{Marges} ou à la macro \textsl{view}, modifiera la taille
+du graphique. Il est donc préférable de déterminer les marges et la fenêtre graphique \Mytextbf{avant} de fixer la
+taille.
+
+La largeur d'un graphique est donnée par la formule: 
+
+\centerline{\textsl{(Xmax-Xmin)*Xscale+margeG+margeD}}
+
+et la hauteur est donnée par:
+
+\centerline{\textsl{(Ymax-Ymin)*Yscale+margeH+margeB}}
+\end{itemize}
+
+\subsection{suite}
+
+\begin{itemize}
+\item \util \textbf[suite()]{suite( <f(x)>, <u0>, <n> )}.
+\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
+rang \argu{n}. Cette macro ne représente que les "escaliers".
+\end{itemize}
+
+
+\begin{demo}{Utilisation de la macro suite}{suite}
+\begin{texgraph}[name=suite,export=pgf]
+view(-0.1,1.1,-0.1,1.1),size(7.5),
+Arrows:=1,Axes(0,1/2+i/4),Arrows:=0,
+u0:=0.3,nb:=20, Width:=6,
+Color:=darkseagreen,
+Droite(1,-1,0), Color:=red,
+tMin:=0, tMax:=1,
+Width:=8, Cartesienne(4*x*(1-x)),
+Width:=6, Color:=blue,
+Label(0.5+1.05*i,"$u_{n+1}=4u_n(1-u_n)$"),
+LabelDot(u0, "$u_0$","S",1),
+suite(4*x*(1-x), u0,nb)
+\end{texgraph}
+\end{demo}
+
+
+
+\subsection{tangente}
+
+\begin{itemize}
+\item \util \textbf[tangente()]{tangente( <f(x)>, <x0> [, longueur] )}.
+\item \desc trace la tangente à la courbe cartésienne $y=f(x)$ au point d'abscisse 
+\argu{x0}, on trace un segment de la \argu{longueur} indiquée (en cm) ou la droite entière si la longueur est omise.
+\end{itemize}
+
+
+\subsection{tangenteP}
+
+\begin{itemize}
+\item \util \textbf[tangenteP()]{tangenteP( <f(t)>, <t0> [,longueur] )}.
+\item \desc trace la tangente à la courbe paramétrée par \argu{f(t)} au point de paramètre \argu{t0}, on trace un
+segment de la \argu{longueur} indiquée (en cm) ou la droite entière si la longueur est omise.
+\end{itemize}
+
+\subsection{view}
+
+\begin{itemize}
+\item \util \textbf[view()]{view( <xmin>, <xmax>, <ymin>, <ymax> )} ou \Mytextbf{view( <[xmin+i*ymin, xmax+i*ymax]> )}
+\item \desc change la fenêtre graphique courante et conserve l'échelle. Attention: ceci change la taille du graphique,
+celle-ci peut-être modifiée avec la macro \Helpref{size}{macsize}.
+\item \exem dans un élément graphique utilisateur, la commande \co{[ view(-4, 4,-3, 3), size(12) ]} va fixer la fenêtre
+graphique à $[-4,4]\times[-3,3]$, et la taille du graphique à 12cm en conservant le ratio courant. Il est important de
+respecter l'ordre (view avant size).
+\end{itemize}
+
+
+\subsection{wedge}
+
+\begin{itemize}
+\item \util \textbf[wedge()]{wedge( <B>, <A>, <C>, <r> )}
+\item \desc dessine le secteur angulaire défini par l'angle $\widehat{BAC}$ avec un rayon \argu{r}.
+\end{itemize}
+
+\subsection{zoom}
+
+\begin{itemize}
+\item \util \textbf[zoom()]{zoom( <+/-1> )}
+\item \desc permet de faire un zoom arrière/avant.
+\end{itemize}
index 8effa91..8ea9a80 100644 (file)
@@ -4,5 +4,6 @@
   <div id="docu">
     <segment f="chap05.html"/>
     <segment f="chap07.html"/>
+    <segment f="chap08.html"/>
   </div>
 </page>
index 7670d57..347f160 100644 (file)
@@ -266,7 +266,7 @@ $language_data = array (
         2 => '',
         3 => '',
         4 => '',
-        5 => 'http://melusine.eu.org/G/geshi/docs/texgraph/#{FNAME}',
+        5 => 'http://melusine.eu.org/syracuse/G/geshi/docs/texgraph/#{FNAME}',
         6 => '',
         7 => '',
         8 => '',
@@ -275,7 +275,7 @@ $language_data = array (
         11 => '',
         12 => '',
         13 => '',
-        14 => '',
+        14 => 'http://melusine.eu.org/syracuse/G/geshi/docs/texgraph/#{FNAME}',
         15 => '',
         16 => '',
         17 => '',

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.