\usepackage[charter]{mathdesign}
\usepackage[margin=2.5cm]{geometry}
\usepackage{xspace}
+\usepackage{xcolor}
\usepackage{multicol}
+\usepackage{listings}
+\usepackage{showexpl} % examples
\usepackage{mflogo}
\usepackage[frenchb]{babel}
+
+\definecolor{hellgelb}{rgb}{1,1,0.85}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{1,0,0}
+\definecolor{colString}{rgb}{0,0.5,0}
+
+
+\lstset{%
+ language=metapost,%
+ float=hbp,%
+ basicstyle=\ttfamily\small, %
+ identifierstyle=\color{colIdentifier}, %
+ keywordstyle=\color{colKeys}, %
+ stringstyle=\color{colString}, %
+ commentstyle=\color{colComments}, %
+ columns=flexible, %
+ tabsize=4, %
+ frame=single, %
+ extendedchars=true, %
+ showspaces=false, %
+ showstringspaces=false, %
+ numbers=left,
+ numbersep=0.8em,
+ numberstyle=\tiny, %
+ breaklines=true, %
+ breakautoindent=true,
+ captionpos=b,
+ xleftmargin=1em
+}
+\lstset{explpreset={pos=t,wide=false,rframe={},preset=\centering}}
+\lstdefinestyle{syntax}{backgroundcolor=\color{blue!15},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
+ frame=single}
+\lstdefinestyle{code}{backgroundcolor=\color{red!15},%numbers=left,
+ xleftmargin=0pt,xrightmargin=0pt,
+ frame=single}
+
+
\newcommand\mpgdd{\texttt{mpgdd}\xspace}
\newcommand\fichier[1]{\texttt{#1}}
\newcommand\variable[1]{\texttt{#1}}
\newcommand\typeMP[1]{\texttt{#1}}
\newcommand\typeGDD[1]{\texttt{#1}}
+\newcommand\foncGDD[1]{\texttt{#1}}
\begin{document}
ensemble se compose de plusieurs fichiers :
\begin{enumerate}
-\item \fichier{gdd.mp} : c'est le fichier principale, il contient
+\item \fichier{gdd.mp} : c'est le fichier principal, il contient
les structures et fonctions générales.
\item \fichier{gdd-arc.mp} :
contient tout ce qui concerne les arcs de cercles.
\item \fichier{gdd-c2d.mp} :
- contient tout ce qui concerne les courbes du second degré.
+ contient tout ce qui concerne les courbes du second degré.
\item \fichier{gdd-fct.mp} :
contient quelques fonctions mathématiques usuelles.
\item \fichier{gdd-lbl.mp} :
contient les fonctions relatives aux labels.
\item \fichier{gdd-plt.mp} :
- contient des fonctions facilitant la représentation de fonctions mathématiques.
+ contient des fonctions facilitant la représentation de fonctions
+ mathématiques.
\item \fichier{gdd-rep.mp}
contient différents outils pour le tracé de figure dans un repère.
\item \fichier{gdd-tra.mp}
emprunté à Anthony \bsc{Phan}).
\end{enumerate}
-
Nous allons, dans la suite, décrire plus en détails chacune de ces
fonctions. Il est à noté aussi que certaines fonctions s'appuient sur
l'extension \fichier{graph.mp} présent dans toutes les bonnes
\section{Principe général de fonctionnement}
-\mpgdd utilise des tables comme stucture principale.
+\mpgdd utilise des tables comme structure principale.
Chaque objet est numéroté via le compteur \variable{gddO}, son
-type\footnote{Les types son propres à \mpgdd et seront décrit plus
+type\footnote{Les types sont propres à \mpgdd et seront décrit plus
tard.} est stocké dans la table \variable{gddT[]} à la place
-\variable{gddT[gddO]}. Les propriétés des objets sont définis dans, là
+\variable{gddT[gddO]}. Les propriétés des objets sont définies dans, là
encore, des tables de type \typeMP{numeric} qui sont
\variable{gddA[]}, \variable{gddB[]},\dots,\variable{gddF[]}.
\typeMP{string}. Nous verrons plus tard quelle est leur utilité.
Bien entendu, lors d'une utilisation classique de \mpgdd, l'appel à
-toutes ces tables n'est pas chose courante.
+toutes ces tables n'est pas chose courante. Les fonctions que nous
+allons décrire dans la suite de ce documents permettent de ne pas
+avoir recours trop précisément à cette machinerie.
\section{Les types}
+On peut, avec \mpgdd, construire plusieurs types
+d'objets. Rappelons le, tout est \emph{objet} dont le nombre est
+enregistré dans la variable \variable{gddO}. Le type d'objet, lui, est
+stocké dans la table \variable{gddT[]}, et les tables \variable{gddA[]}
+à \variable{gddF[]} contiennent les propriétés des objets.
+
+Nous allons ici décrire chaque type de l'extension \mpgdd ainsi que
+leurs propriétés respectives.
+
+\paragraph{Le type \typeGDD{point}} Ce type correspond au point de
+l'espace euclidien. Pour être plus clair voici la fonction principale
+pour créer un tel objet :
+%
+\begin{lstlisting}
+vardef Point(expr a,b) =
+ gddT[incr gddO] = "point";
+ gddA[gddO] = a; gddB[gddO] = b; gddO
+enddef;
+\end{lstlisting}
+
+Cette fonction «retourne» le compteur \variable{gdd0} et crée dans la
+table de type une entrée \typeGDD{point} et les attributs (coordonnées)
+correspondants \variable{a} et \variable{b} dans les tables
+\variable{gddA} et \variable{gddB}.
+
+Avec un tel type de fonctionnement, la plupart des manipulations se
+fait sur des \typeMP{numeric}s. En effet, pour déclarer un
+\typeGDD{point}, il suffit d'écrire
+\begin{lstlisting}
+A = point(2,3);
+\end{lstlisting}
+\variable{A} prend alors la valeur courante de \variable{gddO}. C'est
+l'identifiant de du point.
+
+\paragraph{Le type \typeGDD{vecteur}} Ce type correspond aux vecteurs
+définis à l'aide de deux points de l'espace euclidien. La fonction
+créatrice d'un tel objet est celle-ci
+%
+\begin{lstlisting}
+vardef Vecteur(expr a,b) =
+ save n; n = incr gddO;
+ gddT[n] = "vecteur"; gddA[n] = PointImp(a); gddB[n] = PointImp(b); n
+enddef;
+\end{lstlisting}
+Cette fonction a la même architecture que celle correspondante au
+\typeGDD{point} : elle retourne la valeur courante de \variable{gddO}
+après incrémentation, puis affecte le type \typeGDD{vecteur} à
+l'entrée correspondante dans la table \variable{gddT}. Par contre, les
+entrées des tables \variable{gddA} et \variable{gddB} sont
+différentes. En effet, on stock ici les identifiants des points
+formant le vecteur. La fonction \foncGDD{PointImp} s'assure que
+l'entrée correspond bien à un identifiant de point et non pas une
+\typeMP{pair} \MP. Elle sera décrite plus en détail ultérieurement.
+
+
+
\section{Fonctions générales}
\subsection{Relatives aux \typeGDD{Point}s}