Type vecteur documenté
[mp-gdd.git] / doc / mp-gdd-doc.tex
index daac74d..f71d136 100644 (file)
@@ -3,16 +3,57 @@
 \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}
@@ -41,7 +83,6 @@ ensemble se compose de plusieurs fichiers :
   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
@@ -49,11 +90,11 @@ distributions \TeX.
 
 \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[]}.
 
@@ -66,7 +107,9 @@ Il y a deux tables particulières \variable{gddP[]} qui est du type
 \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}
 
@@ -79,10 +122,10 @@ stocké dans la table \variable{gddT[]}, et les tables \variable{gddA[]}
 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 est correspond au point de
+\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";
@@ -90,6 +133,40 @@ vardef Point(expr a,b) =
 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}

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.