%%
%% This is file `pst-geometrictools-fr-doc.tex',
%%
%% IMPORTANT NOTICE:
%%
%% Package `pst-geometrictools.tex'
%%
%% Thomas S\"{o}ll
%%
%% This program can redistributed and/or modified under %%
%% the terms of the LaTeX Project Public License              %%
%% Distributed from CTAN archives in directory                %%
%% macros/latex/base/lppl.txt; either version 1.3c of       %%
%% the License, or (at your option) any later version.       %%
%%
%% DESCRIPTION:
%%   `pst-geometrictools' is a PSTricks package to draw a protractor, a ruler, a compass and pencils 
%%
%%


\listfiles

\documentclass[%
11pt,
english,
BCOR10mm,
DIV12,
bibliography=totoc,
parskip=false,
fleqn,
smallheadings,
headexclude,
footexclude,
oneside,
dvipsnames,
svgnames,
x11names,
distiller
]{pst-doc}

\usepackage[autostyle]{csquotes}
\usepackage{biblatex}
%\usepackage[style=dtk]{biblatex}
\addbibresource{pst-geometrictools-doc.bib}
\usepackage[utf8]{inputenc}
\let\pstpersFV\fileversion
\usepackage{pst-geometrictools,pst-node,pst-eucl,pstricks-add}
\usepackage{etex} % increase the number of registers  (otherwise only 256)

\let\belowcaptionskip\abovecaptionskip

\parindent0pt

\psset{arrowlength=2.8,arrowinset=0.1}

\def\bgImage{%
\begin{pspicture}(-7,-3)(7,7)%
\psProtractor[ProScale=0.75]{-5}(-2,2)%
\psRuler[RulerFillCol=Blue!80,RulerScale=0.75]{190}(1,5)
\psPencil[pencilColA=Green,PenScale=0.75]{10}(-2,2)
\psPencil[PenLength=2,pencilColA=red,PenScale=0.75]{-20}(1,5)
\psCompass[PoCScale=1.25,PoCFillCol=Yellow,PoCAngle=0,PoCMineCol=Green]{5}(3.5,-3.5)(7.5,-3.5)
\end{pspicture}
}

\lstset{language=PSTricks,morekeywords={psdot,psIntersectionPoint,psProtractor,psPencil,psRuler,psParallels,psGetAngleABC,pstRightAngle,psline}\footnotesize\ttfamily}

\newpsstyle{Parallelen}{country=G,ProScale=0.5,ProLineCol=cyan,ProFillCol=gray!50,OwnerTxt=Pythagoras,MadeTxt={Geodreieck},RulerFillCol=cyan!40}

\begin{document}

\title{pst-geometrictools v 1.0}
\subtitle{Package de PSTricks pour dessiner un rapporteur, une r\'{e}glette et un crayon}
\author{Thomas \textsc{S\"{o}ll}}
\date{\today}

\maketitle

\tableofcontents
\psset{unit=1cm}


\clearpage


\begin{abstract}
Pour illustrer des notions de g\'{e}om\'{e}trie \'{e}l\'{e}mentaire le package pst-geometrictools dispose des outils suivants :
\begin{itemize}
  \item r\`{e}gle gradu\'{e}e ;
  \item \'{e}querre-rapporteur ;
  \item crayon.
\end{itemize}
Les arguments et options des commandes d\'{e}di\'{e}es permettent de les positionner ainsi que de les personnaliser. Vous remarquerez dans les exemples qui illustrent la documentation le soin tout professionnel qui a \'{e}t\'{e} apport\'{e} au dessin et aux d\'{e}tails des outils. L'utilisation du package pst-eucl de Dominique Rodriguez est vivement conseill\'{e} car ses commandes sont particuli\`{e}rement efficaces pour cr\'{e}er facilement des animations et des illustrations.

\vfill
This program can redistributed and/or modified under the terms of the LaTeX Project Public License Distributed from CTAN archives in directory macros/latex/base/lppl.txt; either version 1.3c of the License, or (at your option) any later version.
\end{abstract}


\clearpage


\section{Comment utiliser les commandes}

\subsection{\textbackslash psProtractor}

\begin{BDef}
\Lcs{psProtractor}\OptArgs\Largb{angle}\Largr{coordonn\'{e}es de l'origine}%
\\
\Lcs{psProtractor}\OptArgs\Largb{angle}\Largr{coordonn\'{e}es de l'origine}\Largr{coordonn\'{e}es du second point}
\end{BDef}


La commande \Lcs{psProtractor} est munie des options  \nxLkeyword{ProScale=}, \nxLkeyword{ProLineCol=}, \nxLkeyword{ProFillCol=}, \nxLkeyword{OwnerTxt=}, \nxLkeyword{MadeTxt=}, \nxLkeyword{PSfontO=}, \nxLkeyword{fontsizeO=},  \nxLkeyword{PSfontM=}, \nxLkeyword{fontsizeM=}, \nxLkeyword{country=} and \nxLkeyword{Ghost=}.

\begin{quote}
\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule
\emph{Nom}           &   \emph{D\'{e}faut} & \emph{action} \\\midrule
\Lkeyword{ProScale}     & 1          & facteur d'\'{e}chelle\\
\Lkeyword{ProFillCol}     & gray!60          & couleur de transparence \\
\Lkeyword{ProLineCol}     & cyan          & couleur de l'arc en demi-cercle\\
\Lkeyword{OwnerTxt}    & T.S.             & Nom du propri\'{e}taire\\
\Lkeyword{MadeTxt}  & Made in NES   & Lieu de fabrication\\
\Lkeyword{PSfontO}  & Symbol   & PSfont pour le nom du propri\'{e}taire\\
\Lkeyword{fontsizeO}  & 10pt   & fontsize pour le nom du propri\'{e}taire\\
\Lkeyword{PSfontM}  &  Times-Roman  & PSfont pour le lieu de fabrication\\
\Lkeyword{fontsizeM}  & 6pt  &  fontsize pour le lieu de fabrication\\
\Lkeyword{country}  & Germany  & options permises : Germany, France\\
\Lkeyword{Ghost}  & false  & true : ne trace pas le rapporteur, mais calcule les n\oe{}uds des sommets\\
\bottomrule
\end{tabularx}
\end{quote}

La commande \Lcs{psProtractor} fournit automatiquement les 3 n\oe{}uds des sommets du rapporteur, ils sont nomm\'{e}s : \texttt{GeodrA}, \texttt{GeodrB}, \texttt{GeodrC}

Ces n\oe{}uds peuvent \^{e}tre tr\`{e}s utiles.

\subsection{\textbackslash psRuler}

\begin{BDef}
\Lcs{psRuler}\OptArgs\Largb{angle}\Largr{coordonn\'{e}es de l'origine}
\\
\Lcs{psRuler}\OptArgs\Largb{angle}\Largr{coordonn\'{e}es de l'origine}\Largr{coordonn\'{e}es du second point}
\end{BDef}

 Cette commande \Lcs{psRuler} est munie des options \nxLkeyword{RulerScale=} et \nxLkeyword{RulerFillCol=}.
\begin{quote}
\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule
\emph{Nom}           &   \emph{D\'{e}faut} & \emph{action} \\\midrule
\Lkeyword{RulerScale}     & 1          & facteur d'\'{e}chelle de la r\`{e}glette\\
\Lkeyword{RulerFillCol}    & gray           & couleur de la r\'{e}glette\\
\bottomrule
\end{tabularx}
\end{quote}



\subsection{\textbackslash psPencil}

\begin{BDef}
\Lcs{psPencil}\OptArgs\Largb{angle}\Largr{coordonn\'{e}es de la pointe du crayon}
\end{BDef}

Cette \Lcs{psPencil} est munie des options \nxLkeyword{PenScale=}, \nxLkeyword{PenLength=}, \nxLkeyword{pencilColA=} and \nxLkeyword{pencilColB=}.

\begin{quote}
\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule
\emph{Nom}           &   \emph{D\'{e}faut} & \emph{action} \\\midrule
\Lkeyword{PenScale}     & 1          & facteur d'\'{e}chelle\\
\Lkeyword{PenLength}    & 5           & longueur du crayon\\
\Lkeyword{pencilColA}  & red   & couleur du corps du crayon\\
\Lkeyword{pencilColB}  & HolzCol   & couleur de la mine\\
\bottomrule
\end{tabularx}
\end{quote}


\subsection{\textbackslash psCompass}

\begin{BDef}
\Lcs{psCompass}\OptArgs\Largb{radius}\Largr{coordonn\'{e}es de l'origine : pointe du compas}
\\
\Lcs{psCompass}\OptArgs\Largb{radius}\Largr{coordonn\'{e}es de l'origine}\Largr{ccoordonn\'{e}es du second point}
\end{BDef}

Cette commande \Lcs{psCompass} poss\`{e}de les options \nxLkeyword{PoCAngle=},  \nxLkeyword{PoCLength}, \nxLkeyword{PoCFillCol=}, \nxLkeyword{PoCMineCol=} and \nxLkeyword{PoCScale=}.

\begin{quote}
\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule
\emph{Nom}           &   \emph{D\'{e}faut} & \emph{action} \\\midrule
\Lkeyword{PoCAngle}     & 0          & angle de rotation\\
\Lkeyword{PoCLength}     & 5          & longueur des bras du compas\\
\Lkeyword{PoCFillCol}    & gray!60           & couleur des bras\\
\Lkeyword{PoCMineCol}  & gray!60   & couleur de la mine\\
\Lkeyword{PoCScale}  & 1   & facteur d'\'{e}chelle \\
\bottomrule
\end{tabularx}
\end{quote}
La commande \Lcs{psCompass} permet de placer le compas :
\begin{itemize}
\item soit par un point et le rayon ;
\item ou par deux points (le rayon est ensuite calcul\'{e} automatiquement).
\end{itemize}

\subsection{\textbackslash psParallels}

\begin{BDef}
\Lcs{psParallels}\OptArgs\Largr{pointA}\Largr{pointB}\Largr{pointC}
\end{BDef}

La commande \Lcs{psParallels} dispose des options \nxLkeyword{Ruler=}, \nxLkeyword{Ppoint=}, \nxLkeyword{pencilColA=} et \nxLkeyword{AddAngle=}.

\begin{quote}
\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule
\emph{Nom}           &   \emph{D\'{e}faut} & \emph{action} \\\midrule
\Lkeyword{Ruler}     & true          & dessine la r\'{e}glette gradu\'{e}e\\
\Lkeyword{Ppoint}    & false           & Si \Lkeyword{Ppoint}=true] : l'origine du rapporteur est plac\'{e}e en C, son hypot\'{e}nuse \'{e}tant parall\'{e}le \`{a} (AB).\\
\Lkeyword{AddAngle}  & 0   & Angle suppl\'{e}mentaire pour inverser le rapporteur (0 or 180)\\
\bottomrule
\end{tabularx}
\end{quote}

Cette commande permet de tracer la parrall\`{e}le passant par le point \texttt{pointC} \`{a} la droite d\'{e}finie par les points \texttt{pointA} and \texttt{pointB}. Le rapporteur et la r`{e}gle sont plac\'{e}s automatiquement.

\begin{LTXexample}[pos=t,width=18cm]
\begin{pspicture}[showgrid](-11,-4)(7,8)%
\pstGeonode[PosAngle=135,linecolor=red](5,5){A}
\pstGeonode[PosAngle=135,linecolor=Green](-8,1){B}
\pstGeonode[PosAngle=-45,linecolor=blue](3,3){C}
\pcline[linecolor=BrickRed,nodesepA=-2,nodesepB=-2](A)(B)%
\psParallels[style=Parallelen,RulerScale=0.75,ProScale=0.75](A)(B)(C)
\pcline[linecolor=BrickRed](GeodrB)(GeodrA)%
\midAB(GeodrB)(GeodrA){M}%
\psPencil[PenLength=5,pencilColA=red,PenScale=0.5]{60}(M)
\end{pspicture}
\end{LTXexample}

Pour une animation, on utilisera la commande \verb+\multido{}{N}{...+ en fixant uniquement le nombre de pas souhait\'{e} pour que l'hypoth\'{e}nuse du rapporteur passe de la position o\`{u} il est tout pr\`{e}s de (AB) et parall\'{e}le \`{a} celle-ci au point C.

\begin{verbatim}
\multido{}{40}{
\begin{pspicture}[showgrid](-11,-4)(7,8)%
\pstGeonode[PosAngle=135,linecolor=red](-2,6){A}
\pstGeonode[PosAngle=135,linecolor=Green](-8,1){B}
\pstGeonode[PosAngle=-45,linecolor=blue](0,3){C}
\pcline[linecolor=BrickRed,nodesepA=-2,nodesepB=-2](A)(B)%
\psParallels[style=Parallelen,RulerScale=0.75,ProScale=0.75](A)(B)(C)
\end{pspicture}
}
\end{verbatim}

Remarque : Si [Ppoint=true] : l'origine du rapporteur est plac\'{e}e en C, son hypot\'{e}nuse \'{e}tant parall\`{e}le \`{a} (AB). La r\`{e}gle n'est plus plac\'{e}e automatiquement \`{a} sa position exacte sous le rapporteur.
Il la placer soi-m\^{e}me.
\section{Exemples de base}

Les outils avec les options par d\'{e}faut.
\begin{LTXexample}[pos=t,width=11cm]
\begin{pspicture}(-6,-8.5)(5,4)
\psProtractor{0}(0,0)
\psRuler{0}(0,0)
\psPencil{-30}(0,0)
\end{pspicture}
\end{LTXexample}



Nous voyons que pour le rapporteur, la r\`{e}gle, et la pointe de la mine du crayon (son origine) sont positionn\'{e}es \`{a} $(0|0)$. L'ajout d'un angle tourne les objets autour de leur origine.

Pour le rapporteur et la r\`{e}gle, il existe deux fa\c{c}ons de les positionner :
\begin{itemize}
\item Un point et un angle, comme :

\Lcs{psProtractor}\OptArgs\Largb{<angle>}\Largr{<point>}

C'est tout \`{a} fait explicite. L'origine est positionn\'{e}e au point et l'outil est tourn\'{e} autour de ce point de l'angle choisi.

\item deux points et un angle suppl\'{e}mentaire, comme:
\Lcs{psProtractor}\OptArgs\Largb{<angle additionnel>}\Largr{<pointA>}\Largr{<pointB>}

 L'origine de l'outil est d\'{e}finie sur pointA. L'hypot\'{e}nuse du rapporteur est align\'{e}e sur la droite joignant pointA et pointB, lorsque l'angle vaut $0$.
\end{itemize}


\begin{LTXexample}[pos=t,width=16cm]
\begin{pspicture}[showgrid](-8,-6.5)(8,2)
\pnode(-2,-1){A}\psdot[linecolor=Green,dotsize=5pt](A)\uput[90](A){A}
\pnode(5,-2){B}\psdot[linecolor=Green,dotsize=5pt](B)\uput[180](B){B}
\psProtractor[ProScale=0.5]{30}(A)
\psProtractor[ProLineCol=Yellow,ProScale=0.5]{90}(B)
\end{pspicture}
\end{LTXexample}

\begin{LTXexample}[pos=t,width=13cm]
\begin{pspicture}[showgrid](-8,-6.5)(5,2)
\pnode(-2,-2){A}\psdot[linecolor=Green,dotsize=5pt](A)\uput[45](A){A}
\pnode(5,-4){B}\psdot[linecolor=Green,dotsize=5pt](B)\uput[45](B){B}
\pcline[linecolor=Green](A)(B)
\psProtractor[ProScale=0.5]{0}(A)(B)
\psProtractor[ProLineCol=Yellow,ProScale=0.5]{190}(A)(B)
\end{pspicture}
\end{LTXexample}




Les n\oe{}uds pr\'{e}d\'{e}finis du rapporteur.
\begin{LTXexample}[pos=t,width=13cm]
\begin{pspicture}(-8,-8.5)(5,2)
\psProtractor{0}(0,0)
\psdot[linecolor=Green,dotsize=10pt](GeodrA)\uput[45](GeodrA){GeodrA}
\psdot[linecolor=Blue,dotsize=10pt](GeodrB)\uput[135](GeodrB){GeodrB}
\psdot[linecolor=BrickRed,dotsize=10pt](GeodrC)\uput[-90](GeodrC){GeodrC}
\end{pspicture}
\end{LTXexample}



A pair of compasses

\begin{LTXexample}[pos=t,width=12cm]
\begin{pspicture}[showgrid](-6,-2)(6,6)%
\pnode(-1,0){A}\psdot[dotsize=3pt,linecolor=red](A)
\pnode(1,0){B}\psdot[dotsize=3pt,linecolor=Green](B)
\pscircle(A){2}
\pcline[linecolor=BrickRed,nodesepA=-9,nodesepB=-6](A)(B)
\psCompass[PoCAngle=70,PoCScale=0.8]{2}(A)
\pnode(2,0){A}\psdot[dotsize=3pt,linecolor=red](A)
\pnode(6,0){B}\psdot[dotsize=3pt,linecolor=Green](B)
\psCompass[PoCScale=1,PoCFillCol=Yellow,PoCAngle=0,PoCMineCol=Green]{5}(A)(B)
\end{pspicture}
\end{LTXexample}

\section{Exemples avanc\'{e}s}

Mesurer les angles d'un triangle.

\begin{LTXexample}[pos=t,width=17cm]
\newpsstyle{WkMessung}{linestyle=none,AngleValue=true,ArcColor=Green,arrows=->,WedgeOpacity=0.6,WedgeColor=Green!30,LabelSep=1.6,MarkAngleRadius=2.8,linecolor=Green,decimals=1,comma}
\newpsstyle{GeoDrG}{country=G,ProScale=1,ProLineCol=Green,ProFillCol=Green!50,OwnerTxt={Pythagoras},MadeTxt={Geodreieck}}
\begin{pspicture}(0,-1)(17,10)
\pnode(8,0){S}\uput[d](S){S}\psdot(S)
\pnode(17,0){B}%\uput[l](B){B}
\rput(S){\pnode(7;35){C}}%\uput[l](C){C}
\pcline[linecolor=blue,nodesepB=-0](S)(B)
\pcline[linecolor=red,nodesepB=-2](S)(C)
\psProtractor[style=GeoDrG]{0}(S)(B)%
\psIntersectionPoint(S)(C)(GeodrB)(GeodrC){D}
%\psLDNode(A)(C){5.65}{D}
\pcline[linecolor=Green,arrowinset=0.1,arrowlength=2,linewidth=2pt]{->}([offset=1.5cm]D)(D)
\psGetAngleABC[style=WkMessung,xShift=-6,yShift=9](B)(S)(C){\Large\color{Green}$\alpha$}
%\rput(8,9){\psframebox[framesep=6pt,framearc=0.2]{Winkel messen mit dem Geodreieck}}
\rput([offset=4.5]D){\psframebox[framesep=6pt,framearc=0.2]{
\begin{minipage}[t]{5.5cm}
Lege das Geodreieck auf den blauen Schenkel, so dass die  Null auf dem Scheitel S liegt. Lies nun am \"{a}u{\ss}eren Rand den Winkel ab (gr\"{u}ner Pfeil).
\end{minipage}
}}
\end{pspicture}
\end{LTXexample}



\begin{LTXexample}[pos=t,width=16cm]
\begin{pspicture}(-9,-6)(7,10)
\pnode(1,7){A}
\pnode(-5,0){B}
\pnode(5,-2){C}
\pspolygon[linecolor=red](A)(B)(C)
\psProtractor[ProScale=0.5]{0}(A)(B)
\psProtractor[ProScale=0.5]{0}(B)(C)
\psProtractor[ProScale=0.5]{0}(C)(A)
\end{pspicture}
\end{LTXexample}

\newpage

Construction des hauteurs d'un triangle

\begin{LTXexample}[pos=t,width=16cm]
\begin{pspicture}(-6,-4.5)(5,8)
\pnode(1,7){A}
\pnode(-5,1){B}
\pnode(3,2){C}
\uput[ur](A){A}\uput[d](B){B}\uput[d](C){C}
\pspolygon(A)(B)(C)
\pstProjection{B}{C}{A}[A']
\psProtractor[ProScale=0.8,OwnerTxt={Height of a triangle},MadeTxt={Made in NES},PSfontO=Helvetica,PSfontM=Times-Roman,fontsizeO=8,fontsizeM=6]{0}(A')(A)
\pcline[linecolor=red,linestyle=dashed,linewidth=2pt](GeodrC)(A')
\pstRightAngle[RightAngleType=german]{C}{A'}{A}
\end{pspicture}
\end{LTXexample}




\clearpage



\section{Liste de tous les options pour \texttt{pst-geometrictools}}
\xkvview{family=pst-geometrictools,columns={key,type,default}}


\clearpage


\nocite{*}
\bgroup
\RaggedRight
\printbibliography
\egroup


\printindex
\end{document} 