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