Documentation : section Objectif plus couleurs
[mp-gdd.git] / doc / mp-gdd-doc.tex
index b9ac1d4..c2c6655 100644 (file)
@@ -3,15 +3,66 @@
 \usepackage[charter]{mathdesign}
 \usepackage[margin=2.5cm]{geometry}
 \usepackage{xspace}
+\usepackage[svgnames]{xcolor}
 \usepackage{multicol}
+\usepackage{listings}
+\usepackage{showexpl} % examples
 \usepackage{mflogo}
 \usepackage[frenchb]{babel}
 
+\renewcommand{\ttdefault}{lmtt}
+
+
+\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{DarkSlateGrey}, %
+  keywordstyle=\color{DarkBlue}\itshape, %
+  stringstyle=\color{Green}, %
+  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,
+  sensitive=true,
+  morekeywords=[7]{Point,Vecteur},
+  keywordstyle=[7]\color{FireBrick},
+  morekeywords=[8]{gddO,gddA,gddB,gddC,gddT},
+  keywordstyle=[8]\color{Sienna},
+  morekeywords=[9]{PointImp},
+  keywordstyle=[9]\color{Olive}
+}
+\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}
@@ -40,21 +92,46 @@ 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
 distributions \TeX.
 
+\section{Objectif}
+
+\mpgdd a été écrit avec le but de proposer des macros \MP{} permettant
+de réaliser une figure de géométrie \emph{en collant} d'assez près
+à une description impérative:
+\begin{quote}\itshape
+Soit \(A\) le point de coordonnées (2,3).\\
+Soit \(B\) le point de coordonnées (4,5).\\
+Trace la droite \((A,B)\).\\
+....
+\end{quote}
+Dans ce cadre, les objets géométriques sont le plus souvent nommés
+(\(A\), \(B\), etc.) ou désignés par leur nature et leurs attributs
+(droite \((A,B)\), etc.). Pour ne pas avoir à dépasser ce mode de
+description, en particulier pour éviter d'avoir à déclarer le
+\emph{type} de ces objets, le choix a été fait de les identifier par
+un \emph{index}\footnote{Le type \typeMP{numeric}, qui est le type par
+défaut dans \MP, ne demande pas de déclaration préalable.} dans des
+tables qui en précisent les caractéristiques.
+
+\textbf{Note} -- À ce jour, l'objectif n'est pas atteint, le
+développement est loin d'être achevé; il est encore nécessaire de
+faire appel à des commandes \MP{} ou à des \emph{macros
+intermédiaires} pour décrire une figure. Cela évoluera sans doute
+avec le temps, le temps de trouver une syntaxe satisfaisante...
+
 \section{Principe général de fonctionnement}
 
-\mpgdd utilise des tables comme stucture principale.
-Chaque objet est numéroté via le compteur \variable{gddO}, son
-type\footnote{Les types son 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à
-encore, des tables de type \typeMP{numeric} qui sont
-\variable{gddA[]}, \variable{gddB[]},\dots,\variable{gddF[]}.
+\mpgdd utilise des tables comme structure principale. Chaque objet est
+numéroté via le compteur \variable{gddO}, son type\footnote{Les types
+sont propres à \mpgdd et seront décrits plus tard.} est stocké dans
+la table \variable{gddT[]} à la place \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[]}.
 
 Par exemple, pour un \typeGDD{Point} (type \mpgdd), la première coordonnée
 se trouve dans \variable{gddA[]} et la seconde dans \variable{gddB[]}
@@ -65,10 +142,68 @@ 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}
 
+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 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}

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.