Page de garde pour la documentation (essai)
[mp-gdd.git] / doc / mp-gdd-doc.tex
1 \documentclass[a4paper]{article}
2 \usepackage[utf8]{inputenc}
3 \usepackage[charter]{mathdesign}
4 \usepackage[margin=2.5cm]{geometry}
5 \usepackage{xspace}
6 \usepackage[svgnames]{xcolor}
7 \usepackage{multicol}
8 \usepackage{listings}
9 \usepackage{showexpl} % examples
10 \usepackage{mflogo}
11 \usepackage[frenchb]{babel}
12 \usepackage{tikz}
13 \usepackage{url}
14
15 \renewcommand{\ttdefault}{lmtt}
16
17
18 \definecolor{hellgelb}{rgb}{1,1,0.85}
19 \definecolor{colKeys}{rgb}{0,0,1}
20 \definecolor{colIdentifier}{rgb}{0,0,0}
21 \definecolor{colComments}{rgb}{1,0,0}
22 \definecolor{colString}{rgb}{0,0.5,0}
23
24
25 \lstset{%
26 language=metapost,%
27 float=hbp,%
28 basicstyle=\ttfamily\small, %
29 identifierstyle=\color{DarkSlateGrey}, %
30 keywordstyle=\color{DarkBlue}\itshape, %
31 stringstyle=\color{Green}, %
32 commentstyle=\color{colComments}, %
33 columns=flexible, %
34 tabsize=4, %
35 frame=single, %
36 extendedchars=true, %
37 showspaces=false, %
38 showstringspaces=false, %
39 numbers=left,
40 numbersep=0.8em,
41 numberstyle=\tiny, %
42 breaklines=true, %
43 breakautoindent=true,
44 captionpos=b,
45 xleftmargin=1em,
46 sensitive=true,
47 morekeywords=[7]{Point,Vecteur},
48 keywordstyle=[7]\color{FireBrick},
49 morekeywords=[8]{gddO,gddA,gddB,gddC,gddT},
50 keywordstyle=[8]\color{Sienna},
51 morekeywords=[9]{PointImp},
52 keywordstyle=[9]\color{Olive}
53 }
54 \lstset{explpreset={pos=t,wide=false,rframe={},preset=\centering}}
55 \lstdefinestyle{syntax}{backgroundcolor=\color{blue!15},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
56 frame=single}
57 \lstdefinestyle{code}{backgroundcolor=\color{red!15},%numbers=left,
58 xleftmargin=0pt,xrightmargin=0pt,
59 frame=single}
60
61
62 \newcommand\mpgdd{\texttt{mpgdd}\xspace}
63 \newcommand\fichier[1]{\texttt{#1}}
64 \newcommand\variable[1]{\texttt{#1}}
65 \newcommand\typeMP[1]{\texttt{#1}}
66 \newcommand\typeGDD[1]{\texttt{#1}}
67 \newcommand\foncGDD[1]{\texttt{#1}}
68
69 \begin{document}
70 %% === Page de garde ===================================================
71 \thispagestyle{empty}
72 \begin{tikzpicture}[remember picture, overlay]
73 \node[below right, shift={(-4pt,4pt)}] at (current page.north west) {%
74 \includegraphics{fond.pdf}%
75 };
76 \end{tikzpicture}%
77
78 \noindent
79 \includegraphics{mp-gdd}\\
80 {\large Paquet \MP{} pour des figures de géométrie plane}\\[1cm]
81 \parbox{0.6\textwidth}{
82 \includegraphics[scale=0.86]{figure.pdf}
83 }\hfill
84 \parbox{0.4\textwidth}{\Large\raggedleft
85 \textbf{Contributeurs}\\
86 Maxime \textsc{Chupin}\\
87 Jean-Michel \textsc{Sarlat}
88 }
89 \vfill
90 \begin{center}
91 Version 0.1 du 25 septembre 2011\\
92 \url{http://melusine.eu.org/syracuse/G/mp-gdd/}
93 \end{center}
94 %% == Page de garde ====================================================
95 \newpage
96
97 \section{Introduction}
98
99 \mpgdd est un ensemble d'outils pour la géométrie plane avec \MP. Cet
100 ensemble se compose de plusieurs fichiers :
101
102 \begin{enumerate}
103 \item \fichier{gdd.mp} : c'est le fichier principal, il contient
104 les structures et fonctions générales.
105 \item \fichier{gdd-arc.mp} :
106 contient tout ce qui concerne les arcs de cercles.
107 \item \fichier{gdd-c2d.mp} :
108 contient tout ce qui concerne les courbes du second degré.
109 \item \fichier{gdd-fct.mp} :
110 contient quelques fonctions mathématiques usuelles.
111 \item \fichier{gdd-lbl.mp} :
112 contient les fonctions relatives aux labels.
113 \item \fichier{gdd-plt.mp} :
114 contient des fonctions facilitant la représentation de fonctions
115 mathématiques.
116 \item \fichier{gdd-rep.mp}
117 contient différents outils pour le tracé de figure dans un repère.
118 \item \fichier{gdd-tra.mp}
119 contient les fonction permettant de gérer la transparence (code
120 emprunté à Anthony \bsc{Phan}).
121 \end{enumerate}
122
123 Nous allons, dans la suite, décrire plus en détails chacune de ces
124 fonctions. Il est à noté aussi que certaines fonctions s'appuient sur
125 l'extension \fichier{graph.mp} présent dans toutes les bonnes
126 distributions \TeX.
127
128 \section{Objectif}
129
130 \mpgdd a été écrit avec le but de proposer des macros \MP{} permettant
131 de réaliser une figure de géométrie \emph{en collant} d'assez près
132 à une description impérative:
133 \begin{quote}\itshape
134 Soit \(A\) le point de coordonnées (2,3).\\
135 Soit \(B\) le point de coordonnées (4,5).\\
136 Trace la droite \((A,B)\).\\
137 ....
138 \end{quote}
139 Dans ce cadre, les objets géométriques sont le plus souvent nommés
140 (\(A\), \(B\), etc.) ou désignés par leur nature et leurs attributs
141 (droite \((A,B)\), etc.). Pour ne pas avoir à dépasser ce mode de
142 description, en particulier pour éviter d'avoir à déclarer le
143 \emph{type} de ces objets, le choix a été fait de les identifier par
144 un \emph{index}\footnote{Le type \typeMP{numeric}, qui est le type par
145 défaut dans \MP, ne demande pas de déclaration préalable.} dans des
146 tables qui en précisent les caractéristiques.
147
148 \textbf{Note} -- À ce jour, l'objectif n'est pas atteint, le
149 développement est loin d'être achevé; il est encore nécessaire de
150 faire appel à des commandes \MP{} ou à des \emph{macros
151 intermédiaires} pour décrire une figure. Cela évoluera sans doute
152 avec le temps, le temps de trouver une syntaxe satisfaisante...
153
154 \section{Principe général de fonctionnement}
155
156 \mpgdd utilise des tables comme structure principale. Chaque objet est
157 numéroté via le compteur \variable{gddO}, son type\footnote{Les types
158 sont propres à \mpgdd et seront décrits plus tard.} est stocké dans
159 la table \variable{gddT[]} à la place \variable{gddT[gddO]}. Les
160 propriétés des objets sont définies dans, là encore, des tables de
161 type \typeMP{numeric} qui sont \variable{gddA[]}, \variable{gddB[]},
162 \dots, \variable{gddF[]}.
163
164 Par exemple, pour un \typeGDD{Point} (type \mpgdd), la première coordonnée
165 se trouve dans \variable{gddA[]} et la seconde dans \variable{gddB[]}
166 (les autres table ne sont pas utilisées pour un tel objet).
167
168 Il y a deux tables particulières \variable{gddP[]} qui est du type
169 \typeMP{path} et \variable{gddS[]} qui est du type
170 \typeMP{string}. Nous verrons plus tard quelle est leur utilité.
171
172 Bien entendu, lors d'une utilisation classique de \mpgdd, l'appel à
173 toutes ces tables n'est pas chose courante. Les fonctions que nous
174 allons décrire dans la suite de ce documents permettent de ne pas
175 avoir recours trop précisément à cette machinerie.
176
177 \section{Les types}
178
179 On peut, avec \mpgdd, construire plusieurs types
180 d'objets. Rappelons le, tout est \emph{objet} dont le nombre est
181 enregistré dans la variable \variable{gddO}. Le type d'objet, lui, est
182 stocké dans la table \variable{gddT[]}, et les tables \variable{gddA[]}
183 à \variable{gddF[]} contiennent les propriétés des objets.
184
185 Nous allons ici décrire chaque type de l'extension \mpgdd ainsi que
186 leurs propriétés respectives.
187
188 \paragraph{Le type \typeGDD{Point}} Ce type correspond au point de
189 l'espace euclidien. Pour être plus clair voici la fonction principale
190 pour créer un tel objet :
191 %
192 \begin{lstlisting}
193 vardef Point(expr a,b) =
194 gddT[incr gddO] = "point";
195 gddA[gddO] = a; gddB[gddO] = b; gddO
196 enddef;
197 \end{lstlisting}
198
199 Cette fonction «retourne» le compteur \variable{gdd0} et crée dans la
200 table de type une entrée \typeGDD{point} et les attributs (coordonnées)
201 correspondants \variable{a} et \variable{b} dans les tables
202 \variable{gddA} et \variable{gddB}.
203
204 Avec un tel type de fonctionnement, la plupart des manipulations se
205 fait sur des \typeMP{numeric}s. En effet, pour déclarer un
206 \typeGDD{point}, il suffit d'écrire
207 \begin{lstlisting}
208 A = Point(2,3);
209 \end{lstlisting}
210 \variable{A} prend alors la valeur courante de \variable{gddO}. C'est
211 l'identifiant du point.
212
213 \paragraph{Le type \typeGDD{Vecteur}} Ce type correspond aux vecteurs
214 définis à l'aide de deux points de l'espace euclidien. La fonction
215 créatrice d'un tel objet est celle-ci
216 %
217 \begin{lstlisting}
218 vardef Vecteur(expr a,b) =
219 save n; n = incr gddO;
220 gddT[n] = "vecteur"; gddA[n] = PointImp(a); gddB[n] = PointImp(b); n
221 enddef;
222 \end{lstlisting}
223 Cette fonction a la même architecture que celle correspondante au
224 \typeGDD{point} : elle retourne la valeur courante de \variable{gddO}
225 après incrémentation, puis affecte le type \typeGDD{vecteur} à
226 l'entrée correspondante dans la table \variable{gddT}. Par contre, les
227 entrées des tables \variable{gddA} et \variable{gddB} sont
228 différentes. En effet, on stock ici les identifiants des points
229 formant le vecteur. La fonction \foncGDD{PointImp} s'assure que
230 l'entrée correspond bien à un identifiant de point et non pas une
231 \typeMP{pair} \MP. Elle sera décrite plus en détail ultérieurement.
232
233
234
235 \section{Fonctions générales}
236
237 \subsection{Relatives aux \typeGDD{Point}s}
238
239 \subsection{Un peu de géométrie}
240
241
242
243
244 \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.