f71d136e2e7d697b608dd655fbf723ef37f23fd7
[mp-gdd.git] / doc / mp-gdd-doc.tex
1 \documentclass{article}
2 \usepackage[utf8]{inputenc}
3 \usepackage[charter]{mathdesign}
4 \usepackage[margin=2.5cm]{geometry}
5 \usepackage{xspace}
6 \usepackage{xcolor}
7 \usepackage{multicol}
8 \usepackage{listings}
9 \usepackage{showexpl} % examples
10 \usepackage{mflogo}
11 \usepackage[frenchb]{babel}
12
13
14 \definecolor{hellgelb}{rgb}{1,1,0.85}
15 \definecolor{colKeys}{rgb}{0,0,1}
16 \definecolor{colIdentifier}{rgb}{0,0,0}
17 \definecolor{colComments}{rgb}{1,0,0}
18 \definecolor{colString}{rgb}{0,0.5,0}
19
20
21 \lstset{%
22 language=metapost,%
23 float=hbp,%
24 basicstyle=\ttfamily\small, %
25 identifierstyle=\color{colIdentifier}, %
26 keywordstyle=\color{colKeys}, %
27 stringstyle=\color{colString}, %
28 commentstyle=\color{colComments}, %
29 columns=flexible, %
30 tabsize=4, %
31 frame=single, %
32 extendedchars=true, %
33 showspaces=false, %
34 showstringspaces=false, %
35 numbers=left,
36 numbersep=0.8em,
37 numberstyle=\tiny, %
38 breaklines=true, %
39 breakautoindent=true,
40 captionpos=b,
41 xleftmargin=1em
42 }
43 \lstset{explpreset={pos=t,wide=false,rframe={},preset=\centering}}
44 \lstdefinestyle{syntax}{backgroundcolor=\color{blue!15},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
45 frame=single}
46 \lstdefinestyle{code}{backgroundcolor=\color{red!15},%numbers=left,
47 xleftmargin=0pt,xrightmargin=0pt,
48 frame=single}
49
50
51 \newcommand\mpgdd{\texttt{mpgdd}\xspace}
52 \newcommand\fichier[1]{\texttt{#1}}
53 \newcommand\variable[1]{\texttt{#1}}
54 \newcommand\typeMP[1]{\texttt{#1}}
55 \newcommand\typeGDD[1]{\texttt{#1}}
56 \newcommand\foncGDD[1]{\texttt{#1}}
57
58 \begin{document}
59
60 \section{Introduction}
61
62 \mpgdd est un ensemble d'outils pour la géométrie plane avec \MP. Cet
63 ensemble se compose de plusieurs fichiers :
64
65 \begin{enumerate}
66 \item \fichier{gdd.mp} : c'est le fichier principal, il contient
67 les structures et fonctions générales.
68 \item \fichier{gdd-arc.mp} :
69 contient tout ce qui concerne les arcs de cercles.
70 \item \fichier{gdd-c2d.mp} :
71 contient tout ce qui concerne les courbes du second degré.
72 \item \fichier{gdd-fct.mp} :
73 contient quelques fonctions mathématiques usuelles.
74 \item \fichier{gdd-lbl.mp} :
75 contient les fonctions relatives aux labels.
76 \item \fichier{gdd-plt.mp} :
77 contient des fonctions facilitant la représentation de fonctions
78 mathématiques.
79 \item \fichier{gdd-rep.mp}
80 contient différents outils pour le tracé de figure dans un repère.
81 \item \fichier{gdd-tra.mp}
82 contient les fonction permettant de gérer la transparence (code
83 emprunté à Anthony \bsc{Phan}).
84 \end{enumerate}
85
86 Nous allons, dans la suite, décrire plus en détails chacune de ces
87 fonctions. Il est à noté aussi que certaines fonctions s'appuient sur
88 l'extension \fichier{graph.mp} présent dans toutes les bonnes
89 distributions \TeX.
90
91 \section{Principe général de fonctionnement}
92
93 \mpgdd utilise des tables comme structure principale.
94 Chaque objet est numéroté via le compteur \variable{gddO}, son
95 type\footnote{Les types sont propres à \mpgdd et seront décrit plus
96 tard.} est stocké dans la table \variable{gddT[]} à la place
97 \variable{gddT[gddO]}. Les propriétés des objets sont définies dans, là
98 encore, des tables de type \typeMP{numeric} qui sont
99 \variable{gddA[]}, \variable{gddB[]},\dots,\variable{gddF[]}.
100
101 Par exemple, pour un \typeGDD{Point} (type \mpgdd), la première coordonnée
102 se trouve dans \variable{gddA[]} et la seconde dans \variable{gddB[]}
103 (les autres table ne sont pas utilisées pour un tel objet).
104
105 Il y a deux tables particulières \variable{gddP[]} qui est du type
106 \typeMP{path} et \variable{gddS[]} qui est du type
107 \typeMP{string}. Nous verrons plus tard quelle est leur utilité.
108
109 Bien entendu, lors d'une utilisation classique de \mpgdd, l'appel à
110 toutes ces tables n'est pas chose courante. Les fonctions que nous
111 allons décrire dans la suite de ce documents permettent de ne pas
112 avoir recours trop précisément à cette machinerie.
113
114 \section{Les types}
115
116 On peut, avec \mpgdd, construire plusieurs types
117 d'objets. Rappelons le, tout est \emph{objet} dont le nombre est
118 enregistré dans la variable \variable{gddO}. Le type d'objet, lui, est
119 stocké dans la table \variable{gddT[]}, et les tables \variable{gddA[]}
120 à \variable{gddF[]} contiennent les propriétés des objets.
121
122 Nous allons ici décrire chaque type de l'extension \mpgdd ainsi que
123 leurs propriétés respectives.
124
125 \paragraph{Le type \typeGDD{point}} Ce type correspond au point de
126 l'espace euclidien. Pour être plus clair voici la fonction principale
127 pour créer un tel objet :
128 %
129 \begin{lstlisting}
130 vardef Point(expr a,b) =
131 gddT[incr gddO] = "point";
132 gddA[gddO] = a; gddB[gddO] = b; gddO
133 enddef;
134 \end{lstlisting}
135
136 Cette fonction «retourne» le compteur \variable{gdd0} et crée dans la
137 table de type une entrée \typeGDD{point} et les attributs (coordonnées)
138 correspondants \variable{a} et \variable{b} dans les tables
139 \variable{gddA} et \variable{gddB}.
140
141 Avec un tel type de fonctionnement, la plupart des manipulations se
142 fait sur des \typeMP{numeric}s. En effet, pour déclarer un
143 \typeGDD{point}, il suffit d'écrire
144 \begin{lstlisting}
145 A = point(2,3);
146 \end{lstlisting}
147 \variable{A} prend alors la valeur courante de \variable{gddO}. C'est
148 l'identifiant de du point.
149
150 \paragraph{Le type \typeGDD{vecteur}} Ce type correspond aux vecteurs
151 définis à l'aide de deux points de l'espace euclidien. La fonction
152 créatrice d'un tel objet est celle-ci
153 %
154 \begin{lstlisting}
155 vardef Vecteur(expr a,b) =
156 save n; n = incr gddO;
157 gddT[n] = "vecteur"; gddA[n] = PointImp(a); gddB[n] = PointImp(b); n
158 enddef;
159 \end{lstlisting}
160 Cette fonction a la même architecture que celle correspondante au
161 \typeGDD{point} : elle retourne la valeur courante de \variable{gddO}
162 après incrémentation, puis affecte le type \typeGDD{vecteur} à
163 l'entrée correspondante dans la table \variable{gddT}. Par contre, les
164 entrées des tables \variable{gddA} et \variable{gddB} sont
165 différentes. En effet, on stock ici les identifiants des points
166 formant le vecteur. La fonction \foncGDD{PointImp} s'assure que
167 l'entrée correspond bien à un identifiant de point et non pas une
168 \typeMP{pair} \MP. Elle sera décrite plus en détail ultérieurement.
169
170
171
172 \section{Fonctions générales}
173
174 \subsection{Relatives aux \typeGDD{Point}s}
175
176 \subsection{Un peu de géométrie}
177
178
179
180
181 \end{document}

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.