X-Git-Url: https://melusine.eu.org/syracuse/G/git/?p=mp-gdd.git;a=blobdiff_plain;f=doc%2Fmp-gdd-doc.tex;h=0a2515faa919514a8b96739f08cf1b3732be8535;hp=1116a145ad9db9fdf6ae0c40806f07a0e2528a41;hb=HEAD;hpb=6639f7110576d52cbf6516ef3036bd769bb4cb46 diff --git a/doc/mp-gdd-doc.tex b/doc/mp-gdd-doc.tex index 1116a14..0a2515f 100644 --- a/doc/mp-gdd-doc.tex +++ b/doc/mp-gdd-doc.tex @@ -1,14 +1,18 @@ -\documentclass{article} +\documentclass[a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[charter]{mathdesign} \usepackage[margin=2.5cm]{geometry} \usepackage{xspace} -\usepackage{xcolor} +\usepackage[svgnames]{xcolor} \usepackage{multicol} \usepackage{listings} \usepackage{showexpl} % examples \usepackage{mflogo} \usepackage[frenchb]{babel} +\usepackage{tikz} +\usepackage{url} + +\renewcommand{\ttdefault}{lmtt} \definecolor{hellgelb}{rgb}{1,1,0.85} @@ -22,9 +26,9 @@ language=metapost,% float=hbp,% basicstyle=\ttfamily\small, % - identifierstyle=\color{colIdentifier}, % - keywordstyle=\color{colKeys}, % - stringstyle=\color{colString}, % + identifierstyle=\color{DarkSlateGrey}, % + keywordstyle=\color{DarkBlue}\itshape, % + stringstyle=\color{Green}, % commentstyle=\color{colComments}, % columns=flexible, % tabsize=4, % @@ -32,13 +36,20 @@ extendedchars=true, % showspaces=false, % showstringspaces=false, % - % numbers=left, - % numbersep=0.8em, - % numberstyle=\tiny, % + numbers=left, + numbersep=0.8em, + numberstyle=\tiny, % breaklines=true, % breakautoindent=true, captionpos=b, - xleftmargin=1em + 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, @@ -53,8 +64,35 @@ \newcommand\variable[1]{\texttt{#1}} \newcommand\typeMP[1]{\texttt{#1}} \newcommand\typeGDD[1]{\texttt{#1}} +\newcommand\foncGDD[1]{\texttt{#1}} \begin{document} +%% === Page de garde =================================================== +\thispagestyle{empty} +\begin{tikzpicture}[remember picture, overlay] + \node[below right, shift={(-4pt,4pt)}] at (current page.north west) {% + \includegraphics{fond.pdf}% + }; +\end{tikzpicture}% + +\noindent +\includegraphics{mp-gdd}\\ +{\large Paquet \MP{} pour des figures de géométrie plane}\\[1cm] +\parbox{0.6\textwidth}{ +\includegraphics[scale=0.86]{figure.pdf} +}\hfill +\parbox{0.4\textwidth}{\Large\raggedleft + \textbf{Contributeurs}\\ + Maxime \textsc{Chupin}\\ + Jean-Michel \textsc{Sarlat} +} +\vfill +\begin{center} +Version 0.1 du 25 septembre 2011\\ +\url{http://melusine.eu.org/syracuse/G/mp-gdd/} +\end{center} +%% == Page de garde ==================================================== +\newpage \section{Introduction} @@ -87,15 +125,41 @@ 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 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 - 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[]}. +\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[]} @@ -106,7 +170,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} @@ -119,7 +185,7 @@ 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 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 : % @@ -130,7 +196,41 @@ vardef Point(expr a,b) = enddef; \end{lstlisting} -\LTXinputExample[graphic=../exemples/cercles/cercles1-1.pdf,pos=r]{../exemples/cercles/cercles1.mp} +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}