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=b9ac1d499f8ba6edebca6830811a04f2957c770e;hb=HEAD;hpb=768f786570d4fce5be81aae1de022fbda87b70c0 diff --git a/doc/mp-gdd-doc.tex b/doc/mp-gdd-doc.tex index b9ac1d4..0a2515f 100644 --- a/doc/mp-gdd-doc.tex +++ b/doc/mp-gdd-doc.tex @@ -1,19 +1,98 @@ -\documentclass{article} +\documentclass[a4paper]{article} \usepackage[utf8]{inputenc} \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} +\usepackage{tikz} +\usepackage{url} + +\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} +%% === 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} @@ -21,18 +100,19 @@ 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 +120,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 +170,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}