From aa1ec265529a565a37cc4b8bdd7e8c7090afc38c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 2 Jul 2017 21:15:25 +0000 Subject: pst-geometrictools (2jul17) git-svn-id: svn://tug.org/texlive/trunk@44742 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/generic/pst-geometrictools/Changes.txt | 3 + .../doc/generic/pst-geometrictools/README.md | 32 + .../pst-geometrictools/pst-geometrictools-doc.pdf | Bin 0 -> 209723 bytes .../pst-geometrictools/pst-geometrictools-doc.tex | 484 ++++++++ .../pst-geometrictools-fr-doc.pdf | Bin 0 -> 268998 bytes .../pst-geometrictools-fr-doc.tex | 415 +++++++ .../pst-geometrictools/pst-geometrictools.tex | 1231 ++++++++++++++++++++ .../pst-geometrictools/pst-geometrictools.sty | 23 + Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/libexec/ctan2tds | 1 + Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc | 1 + Master/tlpkg/tlpsrc/pst-geometrictools.tlpsrc | 0 12 files changed, 2191 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/generic/pst-geometrictools/Changes.txt create mode 100644 Master/texmf-dist/doc/generic/pst-geometrictools/README.md create mode 100644 Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.pdf create mode 100644 Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.tex create mode 100644 Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.pdf create mode 100644 Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.tex create mode 100644 Master/texmf-dist/tex/generic/pst-geometrictools/pst-geometrictools.tex create mode 100644 Master/texmf-dist/tex/latex/pst-geometrictools/pst-geometrictools.sty create mode 100644 Master/tlpkg/tlpsrc/pst-geometrictools.tlpsrc diff --git a/Master/texmf-dist/doc/generic/pst-geometrictools/Changes.txt b/Master/texmf-dist/doc/generic/pst-geometrictools/Changes.txt new file mode 100644 index 00000000000..aa61b22de46 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-geometrictools/Changes.txt @@ -0,0 +1,3 @@ +pst-geometrictools.tex ---------------- + +1.0 2017/06/29 diff --git a/Master/texmf-dist/doc/generic/pst-geometrictools/README.md b/Master/texmf-dist/doc/generic/pst-geometrictools/README.md new file mode 100644 index 00000000000..d8d78020974 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-geometrictools/README.md @@ -0,0 +1,32 @@ +The pst-geometrictools package Author: Thomas Söll + +`pst-geometrictools' is a PSTricks package to draw a protractor, a ruler, a compass and pencils + +Dated: 2017/06/29 Version 1.0 + +pst-geometrictools contains the following: + +1) pst-geometrictools.sty +2) pst-geometrictools.tex + +- psProtractor +- psRuler +- psPencil +- psCompass + +Save the files pst-geometrictools.sty|tex in a directory, which is part of your +local TeX tree. +Then do not forget to run texhash to update this tree. +For more information see the documentation of your LATEX distribution +on installing packages into your local TeX system or read the +TeX Frequently Asked Questions: +(http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages). + +pst-geometrictools needs pst-eucl, pstricks-xkey and pstricks, which should +be part of your local TeX installation, otherwise get it from a +CTAN server, http://mirror.ctan.org + +PSTricks is PostScript Tricks, the documentation cannot be run +with pdftex, use the sequence latex->dvips->ps2pdf or latex->dvips->distiller. + +T. Söll diff --git a/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.pdf b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.pdf new file mode 100644 index 00000000000..8e445a646a3 Binary files /dev/null and b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.tex b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.tex new file mode 100644 index 00000000000..42d22950539 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-doc.tex @@ -0,0 +1,484 @@ +%% +%% This is file `pst-geometrictools-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,pst-pers,pstricks-add,animate} +\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,psCompass,psPencil,psRuler,psParallels,psGetAngleABC,pstGeonode,midAB,pstRightAngle,perspective,multiframe,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{A PSTricks package to draw a protractor, a ruler, a compass and pencils} +\author{Thomas \textsc{S\"{o}ll}} +\date{\today} + +\maketitle + +\tableofcontents +\psset{unit=1cm} + + +\clearpage + + +\begin{abstract} +The package \LPack{pst-geometrictools} offers some customizable options to setup a \emph{protractor}, a \emph{ruler}, a \emph{compass} and \emph{pencils} to the users' wishes. Some geometric tools are predefined + and ready-to-use for the customer to be able to present some pixel-free graphics showing the handling of some geometric tools. + +The geometric tools can be scaled, rotated, positioned, colored as wanted, even labeled---if wanted. + +These tools were already available since years within diverse examples---however not yet packaged together in pure PostScript. This was done within this package. + +We recommend to use the package \LPack{pst-eucl} (by \textit{Dominique Rodriguez}) which makes it easy to position the tools precisely. + +Have fun to use it! + +\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{How to use the commands} + +\subsection{\textbackslash psProtractor} + +\begin{BDef} +\Lcs{psProtractor}\OptArgs\Largb{angle}\Largr{coordinates of the origin} +\\ +\Lcs{psProtractor}\OptArgs\Largb{angle}\Largr{coordinates of the origin}\Largr{coordinates of a second point} +\end{BDef} + +The command \Lcs{psProtractor} contains the 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{Name} & \emph{Default} & \emph{Meaning} \\\midrule +\Lkeyword{ProScale} & 1 & scale factor\\ +\Lkeyword{ProFillCol} & gray!60 & transparent fill color of the protrace\\ +\Lkeyword{ProLineCol} & cyan & linecolor of the protrace\\ +\Lkeyword{OwnerTxt} & T.S. & Name of the owner\\ +\Lkeyword{MadeTxt} & Made in NES & Made in wherever\\ +\Lkeyword{PSfontO} & Symbol & PSfont for the owner\\ +\Lkeyword{fontsizeO} & 10pt & fontsize for the owner\\ +\Lkeyword{PSfontM} & Times-Roman & PSfont for Made in wherever\\ +\Lkeyword{fontsizeM} & 6pt & fontsize for Made in wherever\\ +\Lkeyword{country} & Germany & Permissible values: Germany, France\\ +\Lkeyword{Ghost} & false & true: not showing the protrace itself, but getting the nodes of its verices\\ +\bottomrule +\end{tabularx} +\end{quote} + +This above introduced command \Lcs{psProtractor} automatically provides three nodes of the vertices of the protractor which are named as follows: \texttt{GeodrA}, \texttt{GeodrB}, \texttt{GeodrC} + +These nodes maybe very helpful. + +The command \Lcs{psProtractor} offers a positioning +\begin{itemize} +\item either by one point and an angle of rotation +\item or by two points (and an additional angle of rotation) +\end{itemize} + + +\subsection{\textbackslash psRuler} + +\begin{BDef} +\Lcs{psRuler}\OptArgs\Largb{angle}\Largr{coordinates of origin} +\\ +\Lcs{psRuler}\OptArgs\Largb{angle}\Largr{coordinates of origin}\Largr{coordinates of a second point} +\end{BDef} + +The command \Lcs{psRuler} contains the options \nxLkeyword{RulerScale=} and \nxLkeyword{RulerFillCol=}. + +\begin{quote} +\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule +\emph{Name} & \emph{Default} & \emph{Meaning} \\\midrule +\Lkeyword{RulerScale} & 1 & scale factor of the ruler\\ +\Lkeyword{RulerFillCol} & gray & color of the ruler\\ +\bottomrule +\end{tabularx} +\end{quote} + +The command \Lcs{psRuler} offers a positioning + +\begin{itemize} +\item either by one point and an angle of rotation +\item or by two points (and an additional angle of rotation) +\end{itemize} + + +\newpage + + +\subsection{\textbackslash psCompass} + +\begin{BDef} +\Lcs{psCompass}\OptArgs\Largb{radius}\Largr{coordinates of origin} +\\ +\Lcs{psCompass}\OptArgs\Largb{radius}\Largr{coordinates of origin}\Largr{coordinates of a second point} +\end{BDef} + +The command \Lcs{psCompass} contains the options \nxLkeyword{PoCAngle=}, \nxLkeyword{MCAngle=}, \nxLkeyword{PoCLength}, +\nxLkeyword{PoCFillCol=}, \nxLkeyword{PoCMineCol=}, \nxLkeyword{RadVS=}, \nxLkeyword{AngleVS=}, \nxLkeyword{RadMul=} and \nxLkeyword{PoCScale=}. + +\begin{quote} +\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule +\emph{Name} & \emph{Default} & \emph{Meaning} \\\midrule +\Lkeyword{PoCAngle} & 0 & angle of rotation\\ +\Lkeyword{PoCLength} & 5 & length of the compass\\ +\Lkeyword{PoCFillCol} & gray!60 & color of the compass\\ +\Lkeyword{PoCMineCol} & gray!60 & color of the mine\\ +\Lkeyword{PoCScale} & 1 & scaling factor \\ +\Lkeyword{MCAngle} & false & suppresses the initial angle, when two points are given\\ +\Lkeyword{RadVS} & RVS & PostScript value for the radius\\ +\Lkeyword{AngleVS} & AVS & PostScript value for the angle\\ +\Lkeyword{RadMul} & 1 & multiplication factor for the radius\\ +\bottomrule +\end{tabularx} +\end{quote} + +The command \Lcs{psCompass} offers a positioning +\begin{itemize} +\item either by one point and the radius---a rotation is set with \texttt{[PoCAngle=30]}. +\item or by two points (the radius and initial angle then are calculated automatically)---if one sets an additional rotation with \texttt{[PoCAngle=30]}, +these two angles are automatically added. If one will suppress the initial rotation, then set \texttt{[MCAngle=false]}. +Using \texttt{RadVS=} and \texttt{AngleVS=} you can use the values of the radius respectively the angle within some PostScript calculations. +When you like to use a radius other than the distance between the two points that automatically calculates the radius, use \texttt{RadMul=} to multiply the initial radius with this factor. +\end{itemize} + + +\subsection{\textbackslash psPencil} + +\begin{BDef} +\Lcs{psPencil}\OptArgs\Largb{angle}\Largr{coordinates of the cone end} +\end{BDef} + +The command \Lcs{psPencil} contains the options \nxLkeyword{PenScale=}, \nxLkeyword{PenLength=}, \nxLkeyword{pencilColA=} and \nxLkeyword{pencilColB=}. + +\begin{quote} +\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule +\emph{Name} & \emph{Default} & \emph{Meaning} \\\midrule +\Lkeyword{PenScale} & 1 & scale factor\\ +\Lkeyword{PenLength} & 5 & length of the pencil\\ +\Lkeyword{pencilColA} & red & color of the pencil\\ +\Lkeyword{pencilColB} & HolzCol & color of the wooden cone end \\ +\bottomrule +\end{tabularx} +\end{quote} + + +\newpage + + +\subsection{\textbackslash psParallels (Idea and realization by \emph{Manuel Luque})} + +\begin{BDef} +\Lcs{psParallels}\OptArgs\Largr{pointA}\Largr{pointB}\Largr{pointC}\Largb{angle} +\end{BDef} + +The command \Lcs{psParallels} contains the option \nxLkeyword{DistCoeff=}. + +\begin{quote} +\begin{tabularx}{\linewidth}{ @{} l >{\ttfamily}l X @{} }\toprule +\emph{Name} & \emph{Default} & \emph{Meaning} \\\midrule +\Lkeyword{DistCoeff} & 1 & relative disctance between (AB) and C\\ +\bottomrule +\end{tabularx} +\end{quote} + +This command is made to directly draw a line parallel to the line containing \texttt{pointA} and \texttt{pointB} intersecting at point \texttt{pointC}. + +\begin{LTXexample}[pos=t,width=17cm] +\begin{pspicture}(-11,-10)(6,2.5) +\psParallels[DistCoeff=1](-6,-1)(1,2)(2,0) +\end{pspicture} +\end{LTXexample} + +The command \verb+\psParallels[DistCoeff=1](A)(B)(C){angle}+ allows to draw a parallel through the point C with the help of a ruler and protractor. The angle is the one between the pencil and the vertical. +The command uses the option [DistCoef=] as within pst-eucl. If [DistCoef=0] the hypotenuse of the protractor lays on the line (AB), the ruler automatically positions below the protractor. + +For an animation, we vary [DistCoef=0..1], the protractor moves along the ruler letting the hypotenuse parallel to the line (AB). If [DistCoef=1], the protractor intersects with the point C. We can now draw the parallel to (AB) intersecting C. + + +\newpage + + +\section{Basic Examples} + +\begin{LTXexample}[pos=t,width=16cm] +\begin{pspicture}*(-6,-5.5)(10,7) +\psProtractor{0}(0,0)% origin of the protractor +\psRuler{0}(0,0)% origin of the ruler +\psPencil{-30}(6,0)% origin of the pencil +\psCompass{3}(2,0)% origin of the compass +\end{pspicture} +\end{LTXexample} + +We see, that the origins of the \emph{protractor} and \emph{ruler}, \emph{compass} and respectively the \emph{cone end of the pencil} are positioned at $(0|0)$, $(2|0)$, $(6|0)$. Adding an angle rotates the objects around their origins. + +For the \emph{protractor} and \emph{ruler}, there are two ways to position them: + +\begin{itemize} +\item one point and an angle, like: + +\Lcs{psProtractor}\OptArgs\Largb{}\Largr{}\\ +\Lcs{psRuler}\OptArgs\Largb{}\Largr{} + +This is quite self-explanatory. The origin is positioned at the point and the tool is rotated around this point by the chosen angle. +\item two points and an additional angle, like: + +\Lcs{psProtractor}\OptArgs\Largb{}\Largr{}\Largr{}\\ +\Lcs{psRuler}\OptArgs\Largb{}\Largr{}\Largr{} + +The origin of the tool is set to pointA. The hypotenuse of the protractor is aligned to the line between pointA and pointB, when the additional angle is chosen to $0$. +\end{itemize} + + +\newpage + + +\begin{LTXexample}[pos=t,width=16cm] +\begin{pspicture}(-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}(-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} + + +\newpage + + +The predefined nodes of a protractor. + +\begin{LTXexample}[pos=t,width=13cm] +\begin{pspicture}(-8,-6.5)(5,0.3) +\psProtractor[ProScale=0.75]{0}(0,0) +\psdot[linecolor=Green,dotsize=7pt](GeodrA)\uput[45](GeodrA){GeodrA} +\psdot[linecolor=Blue,dotsize=7pt](GeodrB)\uput[135](GeodrB){GeodrB} +\psdot[linecolor=BrickRed,dotsize=7pt](GeodrC)\uput[-90](GeodrC){GeodrC} +\end{pspicture} +\end{LTXexample} + +Compass + +\begin{LTXexample}[pos=t,width=12cm] +\begin{pspicture}(-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} + + +\newpage + + +\section{Advanced examples} + +Measuring the angles of a given 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,xShift=-6,yShift=9} +\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} +\rput(S){\pnode(7;35){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}% pstricks-add +\pcline[linecolor=Green,arrowinset=0.1,arrowlength=2,linewidth=2pt]{->}([offset=1.5cm]D)(D) +\psGetAngleABC[style=WkMessung](B)(S)(C){\Large\color{Green}$\alpha$}% pst-eucl +\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 + + +Constructing the height of a given 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']% pst-eucl +\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}% pst-eucl +\end{pspicture} +\end{LTXexample} + + +\newpage + + +%Using the package \LPack{pst-pers} (by \emph{Manuel Luque} avec la collaboration de \emph{Thomas S\"{o}ll} et \emph{J\"{u}rgen Gilg}), we have the full range to project objects into whatever planes we want. +% +%Here we present a little example, setting the protractor into the [$x,y$]-plane, whereas the compass is set into the [$y,z$]-plane. +% +%\begin{LTXexample}[pos=t,width=16cm] +%\begin{pspicture}(-8,-1.75)(9,7) +%\perspective[normal=0 90](0,0,0){% pst-pers +%\psarc[linecolor=green](0,0){2}{180}{0} +%\psProtractor{0}(0,0)(2,0) +%} +%\perspective[normal=0 0](0,0,0){% pst-pers +%\psCompass[PoCAngle=0,PoCScale=1,PoCMineCol=green]{2}(0,0) +%} +%\end{pspicture} +%\end{LTXexample} +% +% +%\newpage + + +%\section{Animations} +% +%\begin{LTXexample}[pos=t,width=17cm] +%\begin{animateinline}[% animate +%controls, +%palindrome, +%begin={\begin{pspicture}(-8,-1.75)(9,7)}, +%end={\end{pspicture}}]{10}% 10 frames/s (velocity of the animation) +%\multiframe{73}{rB=0+2.5}{% number of frames +%\perspective[normal=0 90](0,0,0){% pst-pers +% \psarc[linecolor=Green](0,0){2}{0}{\rB} +% \psProtractor[ProLineCol=Yellow]{180}(0,0)(2,0) +% } +%\perspective[normal=\rB\space 0](0,0,0){% pst-pers +% \psCompass[PoCAngle=0,PoCScale=1,PoCMineCol=Green]{2}(0,0) +% } +%} +%\end{animateinline} +%\end{LTXexample} +% +% +%\clearpage + + +\section{List of all optional arguments for \texttt{pst-geometrictools}} + +\xkvview{family=pst-geometrictools,columns={key,type,default}} + + +\clearpage + + +\nocite{*} +\bgroup +\RaggedRight +\printbibliography +\egroup + + +\printindex +\end{document} \ No newline at end of file diff --git a/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.pdf b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.pdf new file mode 100644 index 00000000000..8b428e96016 Binary files /dev/null and b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.tex b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.tex new file mode 100644 index 00000000000..fca730e8684 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-geometrictools/pst-geometrictools-fr-doc.tex @@ -0,0 +1,415 @@ +%% +%% 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{}\Largr{} + +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{}\Largr{}\Largr{} + + 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} \ No newline at end of file diff --git a/Master/texmf-dist/tex/generic/pst-geometrictools/pst-geometrictools.tex b/Master/texmf-dist/tex/generic/pst-geometrictools/pst-geometrictools.tex new file mode 100644 index 00000000000..004719f05a8 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-geometrictools/pst-geometrictools.tex @@ -0,0 +1,1231 @@ +%% This is file `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 +%% +%% +\csname PSTgeometrictoolsLoaded\endcsname +\let\PSTgeometrictoolsLoaded\endinput +% Requires PSTricks, pst-xkey, pst-node packages +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi +\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex\fi +\ifx\PSTnodeLoaded\endinput\else\input pst-node.tex\fi +\def\fileversion{1.0} +\def\filedate{2017/06/29} +\message{`PST' v\fileversion, \filedate} + +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax + + +\pst@addfams{pst-geometrictools} + +\define@boolkey[psset]{pst-geometrictools}[Pst@]{Ghost}[true]{} +\define@key[psset]{pst-geometrictools}{ProLineCol}[cyan]{\pst@getcolor{#1}\ProLineCol} +\define@key[psset]{pst-geometrictools}{ProFillCol}[gray!60]{\pst@getcolor{#1}\ProFillCol} +\define@key[psset]{pst-geometrictools}{ProScale}[1]{\def\pst@ProScale{#1 }}% +\define@key[psset]{pst-geometrictools}{OwnerTxt}[Euklid]{\def\pst@OwnerTxt{#1}}% +\define@key[psset]{pst-geometrictools}{MadeTxt}[made in NES]{\def\pst@MadeTxt{#1}}% +\define@key[psset]{pst-geometrictools}{PSfontO}[Symbol]{\def\pst@PSfontO{/#1 }} +\define@key[psset]{pst-geometrictools}{fontsizeO}[10]{\def\pst@fontsizeO{#1 }} +\define@key[psset]{pst-geometrictools}{PSfontM}[Times-Roman]{\def\pst@PSfontM{/#1 }} +\define@key[psset]{pst-geometrictools}{fontsizeM}[6]{\def\pst@fontsizeM{#1 }} +\define@key[psset]{pst-geometrictools}{country}[Germany]{\def\pst@country{#1}} +\psset[pst-geometrictools]{ProScale=1,OwnerTxt={Euklid},MadeTxt={made in NES},country=Germany,PSfontO=Symbol,PSfontM=Times-Roman,fontsizeO=10,fontsizeM=6,ProFillCol=gray!60,ProLineCol=cyan,Ghost=false} + + +\def\psProtractor{\def\pst@par{}\pst@object{psProtractor}} +\def\psProtractor@i#1(#2){\@ifnextchar(% +{\psProtractor@ii{#1}(#2)}% +{\psProtractor@ii{#1}(#2)(#2)}}% +\def\psProtractor@ii#1(#2)(#3){%------------------------------- #1 Winkel, #2 Ursprung P, zweiter Punkt Q f\"{u}r Winkel +\begin@SpecialObj +\pst@killglue +\begingroup% +\pnode(#2){@PGD}% +\pnode(#3){@QGD}% +\use@par% +\pst@getcoor{@QGD}\pst@tempB % -------------------------- Hohle die Koordinaten und speichere sie in \pst@tempB +\pst@getcoor{@PGD}\pst@tempA % -------------------------- Hohle die Koordinaten und speichere sie in \pst@tempA +\addto@pscode{% +/sysfill {systemdict /fill get exec} def +/Country (\pst@country) def + /cm {28.45274 mul} def % ---------------------------------------- Definiere cm als L\"{a}ngeneinheit mit der multipliziert wird + \pst@tempA \tx@UserCoor /@y1 ED /@x1 ED % ---------- Definiere die Koordinaten des Ursprungs (zur Winkelberechnung ben\"{o}tigt) + \pst@tempB \tx@UserCoor /@y2 ED /@x2 ED % ---------- Definiere die Koordinaten des zweiten Punktes (zur Winkelberechnung ben\"{o}tigt) + @y1 @y2 sub @x1 @x2 sub Atan /@delta ED %------------ Winkelberechnung + \pst@tempA \pst@coor T % ------------------------------------ Tranformiere den Koordinatenursprung in P + @delta #1 add 180 add rotate % ------------------------------ Drehe das gesamte Geodreieck + \pst@ProScale dup scale % -------- Skaliere das ganze Geodreieck +%------------------------------------------------------------------------------------------------------------- +\ifPst@Ghost\else +gsave +%------------------------------------------------------------------------------------------------------------- +%-------------- \"{A}u{\ss}ere Begrenzung des Geodreiecks ----------------------------------------------- +gsave + newpath + -8 cm 0 moveto + 16 cm 0 rlineto + -8 cm 8 cm rlineto + closepath + gsave + 0.7 setlinewidth + 0.1 setgray + stroke + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- Gef\"{u}llter innerer Teil des Geodreiecks ----------------------------------------------- +gsave + newpath + -7.5 cm 0.5 22.5 tan mul cm moveto + 15 cm 0 rlineto + -7.5 cm 7.5 cm rlineto + closepath + gsave + \pst@usecolor\ProFillCol + [ /ca .1 /SetTransparency pdfmark % set transparency + 0.1 .setopacityalpha sysfill + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- Millimetereinteilung auf der Grundseite ------------------------------------------- + /mmBlinie { newpath + -7 cm 0 cm moveto + 0 cm 0.17 cm rlineto +% closepath + gsave + 0.5 setlinewidth + 0 setgray + stroke + grestore + 0.1 cm 0 cm translate + } def +gsave +140 {mmBlinie} repeat +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- 0,5- cm-Einteilung auf der Grundseite ---------------------------------------------- + /cmBlinie { newpath + -7 cm 0 cm moveto + 0 cm 0.27 cm rlineto +% closepath + gsave + 0.55 setlinewidth + 0 setgray + stroke + grestore + 0.5 cm 0 cm translate + } def +gsave + 29 {cmBlinie} repeat +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- mm-Einteilung von der Grundseite nach oben ------------------------------------ +/mmlinie { newpath + -2.3 cm 0.3 cm moveto + 0.2 cm 0 rlineto + 2.2 cm 0.3 cm moveto + 0.2 cm 0 rlineto +% closepath + gsave + 0.5 setlinewidth + 0 setgray + stroke + grestore + 0 cm 0.1 cm translate + } def +gsave +33 {mmlinie} repeat +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- 0,5 cm-Einteilung von der Grundseite nach oben -------------------------------- +/cmlinie { newpath + -4.5 cm 0.5 cm moveto + 2 cm 0 rlineto + 0.75 cm 0 rmoveto + 1.5 cm 0 rlineto + 0.5 cm 0 rmoveto + 1.5 cm 0 rlineto + 0.75 cm 0 rmoveto + 2 cm 0 rlineto +% closepath + gsave + 0.6 setlinewidth + 0 setgray + stroke + grestore + 0 cm 0.5 cm translate + } def +%------------------------------------------------------------------------------------------------------------------------------------------------------------ +%--------------- Clippen entlang eines Kreises der 0,5 cm-Einteilung von der Grundseite nach oben ------------------------------------ +/kreisring { newpath + 0 0 translate + 0 0 4.2 cm 0 180 arc + closepath + } def + gsave + kreisring clip + 7 {cmlinie} repeat + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- farbiger und transparenter Halb-Ring ----------------------------------------------------------------------------- + gsave + newpath + 0 0 translate + 0 0 5.1 cm 6 174 arc + 0 0 4.8 cm 174 6 arcn + closepath + gsave + \pst@usecolor\ProLineCol + [ /ca .4 /SetTransparency pdfmark % set transparency + 0.4 .setopacityalpha + sysfill + grestore + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 1-Grad-Winkeleinteilung an der linken Kathete ----------------------------------------------------------------- + gsave + 91 1 179 { /Wk exch def % ---------------------------------------------------- Schleifenvariable festlegen, die von 91° bis 179° geht + {8 Wk sin Wk cos div 1 sub div} /xWS1 exch def %---------- xWS1=8/(tan(alpha)-1) --> SP der Geraden linke Kathete mit Ursprungsgeraden im Winkel alpha + {7.8 Wk sin Wk cos div 1 sub div} /xWS2 exch def % ------- xWS2=7,8/(tan(alpha)-1) --> SP einer Parallelen zur Geraden linke Kathete mit Ursprungsgeraden im Winkel alpha + newpath + xWS1 cm xWS1 8 add cm moveto % --------------------------- zu xWS1 geh\"{o}riger y-Wert ist xWS1 + 8 + xWS2 cm xWS2 7.8 add cm % ----------------------------------- zu xWS2 geh\"{o}riger y-Wert ist xWS1 + 7,8 + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 5-Grad-Winkeleinteilung an der linken Kathete ----------------------------------------------------------------- + gsave + 95 5 175 { /Wk exch def + {8 Wk sin Wk cos div 1 sub div} /xWS1 exch def + {7.6 Wk sin Wk cos div 1 sub div} /xWS2 exch def + newpath + xWS1 cm xWS1 8 add cm moveto + xWS2 cm xWS2 7.6 add cm + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 10-Grad-Winkeleinteilung an der linken Kathete ----------------------------------------------------------------- + gsave + 100 10 170 { /Wk exch def + {8 Wk sin Wk cos div 1 sub div} /xWS1 exch def + {5.1 Wk cos mul Wk cos div 1 sub div} /xWS2 exch def + newpath + xWS1 cm xWS1 8 add cm moveto + 5.1 Wk cos mul cm 5.1 Wk sin mul cm + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 1-Grad-Winkeleinteilung an der rechten Kathete --------------------------------------------------------------- + gsave + 1 1 89 { /Wk exch def + {8 Wk sin Wk cos div 1 add div} /xWS1 exch def + {7.8 Wk sin Wk cos div 1 add div} /xWS2 exch def + newpath + xWS1 cm xWS1 neg 8 add cm moveto + xWS2 cm xWS2 neg 7.8 add cm + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 5-Grad-Winkeleinteilung an der rechten Kathete --------------------------------------------------------------- + gsave + 5 5 85 { /Wk exch def + {8 Wk sin Wk cos div 1 add div} /xWS1 exch def + {7.6 Wk sin Wk cos div 1 add div} /xWS2 exch def + newpath + xWS1 cm xWS1 neg 8 add cm moveto + xWS2 cm xWS2 neg 7.6 add cm + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 10-Grad-Winkeleinteilung an der rechten Kathete -------------------------------------------------------------- + gsave + 10 10 80 { /Wk exch def + {8 Wk sin Wk cos div 1 add div} /xWS1 exch def + {5.1 Wk cos mul Wk cos div 1 add div} /xWS2 exch def + newpath + xWS1 cm xWS1 neg 8 add cm moveto + 5.1 Wk cos mul cm 5.1 Wk sin mul cm + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 1-Grad-Winkeleinteilung auf Halbkreis ------------ --------------------------------------------------------------- + gsave + 5 1 175 { /Wk exch def + newpath + 4.3 Wk cos mul cm 4.3 Wk sin mul cm moveto + 4.45 Wk cos mul cm 4.45 Wk sin mul cm + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- 5-Grad-Winkeleinteilung auf Halbkreis ------------ --------------------------------------------------------------- + gsave + 5 5 175 { /Wk exch def + newpath + 4.3 Wk cos mul cm 4.3 Wk sin mul cm moveto + 4.5 Wk cos mul cm 4.5 Wk sin mul cm + lineto +% closepath + 0.5 setlinewidth + 0 setgray + stroke + } for + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%-------------------------- Linke Diagonallinie-dashed ------------------------------------------------------------------------------- + gsave + newpath /Wk 135 def + {8 Wk sin Wk cos div 1 sub div} /xWS1 exch def + 0 0 moveto + 4.3 Wk cos mul cm 4.3 Wk sin mul cm lineto +% closepath + gsave + [2 sqrt 2 div 0.24 sub cm 0.24 cm] -0.12 cm setdash + 0.5 setlinewidth + 0 setgray stroke + grestore + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%-------------------------- Rechte Diagonallinie-dashed ----------------------------------------------------------------------------- + gsave + newpath /Wk 45 def + {8 Wk sin Wk cos div 1 add div} /xWS1 exch def + 0 0 moveto + 4.3 Wk cos mul cm 4.3 Wk sin mul cm lineto +% closepath + gsave + [2 sqrt 2 div 0.24 sub cm 0.24 cm] -0.12 cm setdash + 0.5 setlinewidth + 0 setgray stroke + grestore + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------- +%---------------------------------------- Mittel-Linie ------------------------------------------------------------------------------------- + gsave + newpath + 0 0.5 cm moveto + 0 3.5 cm lineto + 0 5.1 cm moveto + 0 6.0 cm lineto + 0 6.4 cm moveto + 0 8.0 cm lineto +% closepath + gsave + 0.5 setlinewidth + 0 setgray stroke + grestore + grestore +%-------------------------------------------------------------------------------------------------------------------------------------------------- +%------------------------- Definition f\"{u}r horizontal-zentriertes - Setzen der cm- Zahlen (180° gedreht) ------------------------ + /cmshow {% (string) x y + gsave + moveto 180 rotate % s + /Helvetica findfont 7 scalefont setfont + dup % s s + stringwidth pop 2 div neg 0 % s -dx/2 + rmoveto 0.2 setgray show + grestore + } bind def +%------------------------- Setzen der Zahlen f\"{u}r die cm-Einteilungen ----------------------------------------------------------------- + 0 1 7 { /MZ exch def MZ 2 string cvs MZ cm 0.47 cm cmshow } for %---------------- Zahlen 0 bis 7 (nach rechts) + 1 1 7 { /MZ exch def MZ 2 string cvs MZ neg cm 0.47 cm cmshow } for %----------- Zahlen 1 bis 7 (nach links) + 1 1 3 { /MZ exch def MZ 2 string cvs 2 cm MZ 0.1 add cm cmshow } for %---------- Zahlen 1 bis 3 (nach oben, rechte Seite) + 1 1 3 { /MZ exch def MZ 2 string cvs -2 cm MZ 0.1 add cm cmshow } for %--------- Zahlen 1 bis 3 (nach oben, linke Seite) +%-------------------------------------------------------------------------------------------------------------------------------------------------- +%------------------------- Definition f\"{u}r horizontal-zentriertes - Setzen der Winkel- Zahlen (mitgedreht) ---------------------- + /cmRotshow {% ---------------------------------- (string), Winkel, x y + gsave + moveto 90 add rotate % s + /Helvetica findfont 7 scalefont setfont + dup % s s + stringwidth pop 2 div neg 0 % s -dx/2 + rmoveto 0.2 setgray show + grestore + } bind def + gsave +%------------------------- Setzen der Zahlen f\"{u}r die Winkel-Einteilungen ------------------------------------------------------------------------------------------------- + 10 10 170 { /MZ exch def MZ 3 string cvs MZ 5.03 cm MZ cos mul 5.03 cm MZ sin mul cmRotshow } for % ------------------ \"{a}u{\ss}erer Kreisbogen + 10 10 170 { /MZ exch def 180 MZ sub 3 string cvs MZ 4.75 cm MZ cos mul 4.75 cm MZ sin mul cmRotshow } for % ------- innerer Kreisbogen + grestore +%--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + /TSshow {% (string) x y + gsave + moveto 180 rotate % s + \pst@PSfontO findfont \pst@fontsizeO scalefont setfont + dup % s s + stringwidth pop 2 div neg 0 % s -dx/2 + rmoveto 0.4 setgray show + grestore + } bind def + gsave + (\pst@OwnerTxt) 0 cm 4 cm TSshow + grestore +%-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + /MadeShow {% (string) x y + gsave + moveto 180 rotate % s + \pst@PSfontM findfont \pst@fontsizeM scalefont setfont + dup % s s + stringwidth pop 2 div neg 0 % s -dx/2 + rmoveto 0.7 setgray show + grestore + } bind def + gsave + (\pst@MadeTxt) 0 cm 6.25 cm MadeShow + grestore +%---------------------------------------- Fahne ------------------------------------------------------------------------------------- + gsave + /Fahne { + newpath + 0 0 moveto + 0 1 rlineto + 1 0 rlineto + 0 -1 rlineto + closepath + setrgbcolor + [ /ca .5 /SetTransparency pdfmark % set transparency + 0.5 .setopacityalpha sysfill + } def +Country (France) eq { + 0.73 cm 6.1 cm translate + 3 6 scale + 1 0 0 Fahne + 1 0 translate + 1 1 1 Fahne + 1 0 translate + 0 0 1 Fahne + } if +Country (Germany) eq { + 0.775 cm 6.22 cm translate + 7.5 1.5 scale + 1 0.588 0 Fahne + 0 -1 translate + 0.75 0.07 0.11 Fahne + 0 -1 translate + 0 0 0 Fahne + } if + grestore +%-------------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- Ende nur grestore von gsave ganz am Anfang ------------------ +grestore +\fi +}% +\pnode(! + /cm {28.45274 mul} def % ---------------------------------------- Definiere cm als L\"{a}ngeneinheit mit der multipliziert wird + \pst@tempA \tx@UserCoor /@y1 ED /@x1 ED % ---------- Definiere die Koordinaten des Ursprungs (zur Winkelberechnung ben\"{o}tigt) + \pst@tempB \tx@UserCoor /@y2 ED /@x2 ED % ---------- Definiere die Koordinaten des zweiten Punktes (zur Winkelberechnung ben\"{o}tigt) + @y1 @y2 sub @x1 @x2 sub Atan /@delta ED %------------ Winkelberechnung + @x1 cm @y1 cm T % ------------------------------------ Tranformiere den Koordinatenursprung in P + @delta #1 add 180 add rotate % ------------------------------ Drehe den oberen Punkt des Geodreiecks + \pst@ProScale\space \pst@ProScale\space scale % -------- Skalieren! + 0 8){GeodrC}% +\pnode(! + @x1 cm @y1 cm T % ------------------------------------ Tranformiere den Koordinatenursprung in P + @delta #1 add 180 add rotate % ------------------------------ Drehe die linke untere Ecke des Geodreiecks + \pst@ProScale\space \pst@ProScale\space scale % -------- Skalieren! + -8 0){GeodrA}% +\pnode(! + @x1 cm @y1 cm T % ------------------------------------ Tranformiere den Koordinatenursprung in P + @delta #1 add 180 add rotate % ------------------------------ Drehe die rechte untere Ecke des Geodreiecks + \pst@ProScale\space \pst@ProScale\space scale % -------- Skalieren! + 8 0){GeodrB}% +\endgroup% +\end@SpecialObj\ignorespaces +}% + + +\definecolor{HolzCol}{rgb}{1,0.937,0.835}% +\define@key[psset]{pst-geometrictools}{PenScale}[1]{\def\pst@PenScale{#1 }}% +\define@key[psset]{pst-geometrictools}{PenLength}[5]{\def\pst@PenLength{#1 }}% +\define@key[psset]{pst-geometrictools}{pencilColA}[red]{\pst@getcolor{#1}\pencilColA} +\define@key[psset]{pst-geometrictools}{pencilColB}[HolzCol]{\pst@getcolor{#1}\pencilColB} +\psset[pst-geometrictools]{PenLength=5,pencilColA=red,pencilColB=HolzCol,PenScale=1} +\def\psPencil{\def\pst@par{}\pst@object{psPencil}} +\def\psPencil@i#1(#2){%------------------------------- #1 Winkel, #2 Ursprung P +\begin@SpecialObj +\pst@killglue +\begingroup% +\pnode(#2){@PGD}% +\use@par% +\pst@getcoor{@PGD}\pst@tempA % -------------------------- Hohle die Koordinaten und speichere sie in \pst@tempA +\addto@pscode{% +/sysfill {systemdict /fill get exec} def +%/Country (\pst@country) def + /cm {28.45274 mul} def % ---------------------------------------- Definiere cm als L\"{a}ngeneinheit mit der multipliziert wird + /Plength \pst@PenLength def +% \pst@tempA \tx@UserCoor /@y1 ED /@x1 ED % ---------- Definiere die Koordinaten des Ursprungs (zur Winkelberechnung ben\"{o}tigt) + \pst@tempA \pst@coor T % ------------------------------------ Tranformiere den Koordinatenursprung in P + #1 rotate % ------------------------------ Drehe das gesamte Geodreieck + \pst@PenScale dup scale % -------- Skaliere das ganze Geodreieck +%------------------------------------------------------------------------------------------------------------- +gsave +%------------------------------------------------------------------------------------------------------------- +%-------------- Unterer Holzteil des Stifts ------------------------------------------------------------- +gsave + newpath + 0 cm 0 moveto + -0.3 cm 1 cm rlineto + 0 cm 0.2 cm rlineto + 0.6 cm 0 cm rlineto + 0 cm -0.2 cm rlineto + closepath + gsave + \pst@usecolor\pencilColB + fill + grestore + gsave + 0.4 setlinewidth + 0.5 setgray + 1 setlinejoin + stroke + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- langer farbiger Teil des Stifts ---------------------------------------------------------- +gsave + newpath + -0.3 cm 1 cm moveto + 0 cm Plength cm rlineto + 0.6 cm 0 cm rlineto + 0 cm Plength neg cm rlineto + 0.3 cm 1.13 cm 0.13 cm 270 180 arcn + 0 cm 1.13 cm 0.17 cm 0 180 arcn + -0.3 cm 1.13 cm 0.13 cm 0 270 arcn + closepath + gsave + \pst@usecolor\pencilColA + fill + grestore + gsave + 0.5 setlinewidth + 0.1 setgray + stroke + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%--------------------------- Spitze in Farbe -------------------------------------------------------------- +gsave + newpath + 0 cm 0 moveto + -0.1 cm 1 3 div cm rlineto + 0.2 cm 0 cm rlineto + closepath + gsave + \pst@usecolor\pencilColA + fill + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%--------------------------- Striche im Stift -------------------------------------------------------------- +gsave + newpath + -0.17 cm 1.13 cm moveto + 0 cm Plength 0.13 sub cm rlineto + 0.17 cm 1.13 cm moveto + 0 cm Plength 0.13 sub cm rlineto + closepath + gsave + 0.5 setlinewidth + 0.1 setgray + stroke + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%--------------------------- Elliptisches Stift-Ende in Holz -------------------------------------------- +gsave + newpath + 0 cm Plength 1 add cm T + 1 0.2 scale + 0 cm 0 cm 0.3 cm 0 360 arc + closepath + gsave + \pst@usecolor\pencilColB + fill + grestore + gsave + 0.5 setlinewidth + 0.3 setgray + stroke + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%--------------------------- Elliptisches Stift-Ende in Farbe ------------------------------------------- +gsave + newpath + 0 cm Plength 1 add cm T + 1 0.2 scale + 0 cm 0 cm 0.1 cm 0 360 arc + closepath + gsave + \pst@usecolor\pencilColA + fill + grestore + gsave + 0.3 setlinewidth + 0.3 setgray + stroke + grestore +grestore +%-------------------------------------------------------------------------------------------------------- +%-------------------------------------------------------------------------------------------------------- +grestore +}% +\endgroup% +\end@SpecialObj\ignorespaces +}% + + +\define@key[psset]{pst-geometrictools}{RulerFillCol}[cyan!60]{\pst@getcolor{#1}\RulerFillCol} +\define@key[psset]{pst-geometrictools}{RulerScale}[1]{\def\pst@RulerScale{#1 }}% +\psset[pst-geometrictools]{RulerFillCol=gray,RulerScale=1} + +\def\psRuler{\def\pst@par{}\pst@object{psRuler}} +\def\psRuler@i#1(#2){\@ifnextchar(% +{\psRuler@ii{#1}(#2)}% +{\psRuler@ii{#1}(#2)(#2)}}% +\def\psRuler@ii#1(#2)(#3){%------------------------------- #1 Winkel, #2 Ursprung P, zweiter Punkt Q f\"{u}r Winkel +\begin@SpecialObj +\pst@killglue +\begingroup% +\pnode(#2){@PGD}% +\pnode(#3){@QGD}% +\use@par% +\pst@getcoor{@QGD}\pst@tempB % -------------------------- Hohle die Koordinaten und speichere sie in \pst@tempB +\pst@getcoor{@PGD}\pst@tempA % -------------------------- Hohle die Koordinaten und speichere sie in \pst@tempA +\addto@pscode{% +/sysfill {systemdict /fill get exec} def + /cm {28.45274 mul} def % --------------------------------------- Definiere cm als L\"{a}ngeneinheit mit der multipliziert wird + \pst@tempA \tx@UserCoor /@y1 ED /@x1 ED % ---------- Definiere die Koordinaten des Ursprungs (zur Winkelberechnung ben\"{o}tigt) + \pst@tempB \tx@UserCoor /@y2 ED /@x2 ED % ---------- Definiere die Koordinaten des zweiten Punktes (zur Winkelberechnung ben\"{o}tigt) + @y1 @y2 sub @x1 @x2 sub Atan /@delta ED %------------ Winkelberechnung + \pst@tempA \pst@coor T % ------------------------------------ Tranformiere den Koordinatenursprung in P + @delta #1 add 180 add rotate % ------------------------------ Drehe das gesamte Geodreieck + \pst@RulerScale dup scale % ----------------------------------- Skaliere das ganze Geodreieck +%------------------------------------------------------------------------------------------------------------- +gsave +%------------------------------------------------------------------------------------------------------------- +%-------------- F\"{u}llung der beiden inneren Bereiche und \"{a}u{\ss}ere Begrenzung des Lineals ----------------------------------------------- +gsave + newpath + -0.2 cm 0 moveto + 30.4 cm 0 rlineto + 0 cm -0.9 cm rlineto + -30.4 cm 0 cm rlineto + closepath + gsave + \pst@usecolor\RulerFillCol + [ /ca .25 /SetTransparency pdfmark % set transparency + 0.25 .setopacityalpha sysfill + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +gsave + newpath + -0.2 cm 0 moveto + 30.2 cm 0 lineto + 0 cm -3 cm rlineto + -30.4 cm 0 cm rlineto + closepath + 3.75 cm -1.5 cm moveto + 3.5 cm -1.5 cm 0.25 cm 0 360 arc + closepath + gsave + \pst@usecolor\RulerFillCol + [ /ca .15 /SetTransparency pdfmark % set transparency + 0.15 .setopacityalpha sysfill + grestore + gsave +% 2 setlinejoin + 0.7 setlinewidth + 0.1 setgray + stroke + grestore +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- Millimetereinteilung auf der Grundseite ------------------------------------------- + /mmBlinie { newpath + 0 cm 0 cm moveto + 0 cm -0.25 cm rlineto + gsave + 0.5 setlinewidth + 0 setgray + stroke + grestore + 0.1 cm 0 cm translate + } def +gsave +300 {mmBlinie} repeat +grestore +%------------------------------------------------------------------------------------------------------------- +%-------------- 0,5- cm-Einteilung auf der Grundseite ---------------------------------------------- + /cmBlinie { newpath + 0.5 cm 0 cm moveto + 0 cm -0.375 cm rlineto +% closepath + gsave + 0.55 setlinewidth + 0 setgray + stroke + grestore + 1 cm 0 cm translate + } def +gsave + 30 {cmBlinie} repeat +grestore +%-------------- 1- cm-Einteilung auf der Grundseite ---------------------------------------------- + /cmBlinie { newpath + 0 cm 0 cm moveto + 0 cm -0.5 cm rlineto +% closepath + gsave + 0.6 setlinewidth + 0 setgray + stroke + grestore + 1 cm 0 cm translate + } def +gsave + 31 {cmBlinie} repeat +grestore +%-------------------------------------------------------------------------------------------------------------------------------------------------- +%------------------------- Definition f\"{u}r horizontal-zentriertes - Setzen der cm- Zahlen (180° gedreht) ------------------------ + /cmshow {% (string) x y + gsave + moveto % s + /Helvetica findfont 8 scalefont setfont + dup % s s + stringwidth pop 2 div neg 0 % s -dx/2 + rmoveto 0.2 setgray show + grestore + } bind def +%------------------------- Setzen der Zahlen f\"{u}r die cm-Einteilungen ----------------------------------------------------------------- + 0 1 30 { /MZ exch def MZ 2 string cvs MZ cm -0.78 cm cmshow } for %---------------- Zahlen 0 bis 30 (nach rechts) +%------------------------------------------------------------------------------------------------------------- +%-------------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- Ende nur grestore von gsave ganz am Anfang ------------------ +grestore +}% +\endgroup% +\end@SpecialObj\ignorespaces +}% + +\definecolor{PoCRed}{rgb}{0.7,0.134,0.134} +\define@boolkey[psset]{pst-geometrictools}[Pst@]{MCAngle}[true]{} +\define@key[psset]{pst-geometrictools}{PoCLength}[5]{\def\pst@PoCLength{#1 }} +\define@key[psset]{pst-geometrictools}{PoCAngle}[0]{\def\pst@PoCAngle{#1 }} +\define@key[psset]{pst-geometrictools}{PoCFillCol}[PoCRed]{\pst@getcolor{#1}\PoCFillCol} +\define@key[psset]{pst-geometrictools}{PoCMineCol}[black!80]{\pst@getcolor{#1}\PoCMineCol} +\define@key[psset]{pst-geometrictools}{PoCScale}[1]{\def\pst@PoCScale{#1 }}% +\define@key[psset]{pst-geometrictools}{RadVS}[RVS]{\def\pst@RadVS{#1}}% +\define@key[psset]{pst-geometrictools}{AngleVS}[AVS]{\def\pst@AngleVS{#1}}% +\define@key[psset]{pst-geometrictools}{RadMul}[1]{\def\pst@RadMul{#1 }}% +\psset[pst-geometrictools]{PoCScale=1,PoCFillCol=PoCRed,PoCAngle=0,PoCMineCol=black!80,PoCLength=5,MCAngle=true,RadVS=RVS,AngleVS=AVS,RadMul=1} + +\def\psCompass{\def\pst@par{}\pst@object{psCompass}}% Pair of Compasses +\def\psCompass@i#1(#2){\@ifnextchar(% +{\psCompass@ii{0}(#2)}% +{\psCompass@ii{#1}(#2)(#2)}}% +\def\psCompass@ii#1(#2)(#3){%------------------------------- #1 Winkel, #2 Ursprung P, zweiter Punkt Q f\"{u}r Winkel +\begin@SpecialObj +\pst@killglue +\begingroup% +\pnode(#2){@PGD}% +\pnode(#3){@QGD}% +\use@par% +\pst@getcoor{@QGD}\pst@tempB % -------------------------- Hohle die Koordinaten und speichere sie in \pst@tempB +\pst@getcoor{@PGD}\pst@tempA % -------------------------- Hohle die Koordinaten und speichere sie in \pst@tempA +\addto@pscode{% + \pst@RadMul /faktor ED + \pst@PoCScale /skal ED + #1 skal div 2 div /Radius ED + skal dup scale % -------- Skaliere das ganze Geodreieck + /sysfill {systemdict /fill get exec} def + /SLg \pst@PoCLength def + /cm {28.45274 mul} def % ---------------------------------------- Definiere cm als L\"{a}ngeneinheit mit der multipliziert wird + \pst@tempA\tx@UserCoor /@y1 ED /@x1 ED % ---------- Definiere die Koordinaten des Ursprungs (zur Winkelberechnung ben\"{o}tigt) + \pst@tempB\tx@UserCoor /@y2 ED /@x2 ED % ---------- Definiere die Koordinaten des zweiten Punktes (zur Winkelberechnung ben\"{o}tigt) + \pst@tempA\pst@coor /@y3 ED /@x3 ED + @y1 @y2 sub dup mul @x1 @x2 sub dup mul add faktor dup mul mul /quadlg ED + quadlg 0 eq { 180 } { @y1 @y2 sub @x1 @x2 sub atan } ifelse /@delta ED %------------ Winkelberechnung + quadlg sqrt 2 div /RadiusPktB ED %------------ Radiusberechnung mit zweitem Punkt + SLg RadiusPktB Radius add gt { RadiusPktB Radius add } { SLg } ifelse /RadPoC ED + /hoehe SLg dup mul RadPoC dup mul sub sqrt def + /phiS RadPoC hoehe atan def + @x3 @y3 T % ------------------------------------------------------------------------------- Transformiere den Koordinatenursprung in P + \pst@PoCAngle\space \ifPst@MCAngle\space @delta add 180 add \fi rotate % ------------------------------ Drehe das gesamte Geodreieck +%------------------------------------------------------------------------------------------------------------- +gsave +%------------------------------------------------------------------------------------------------------------- +%-------------- Linke Zirkelspitze----------------------------------------------- 0 cm 0 cm 0.15 cm 0 360 arc +gsave + newpath + phiS neg rotate + 0 cm 0 cm moveto + -0.1 cm 0.33 cm lineto + 0.07 cm 0 cm rlineto + closepath + gsave + 0.5 setgray + fill + grestore +grestore +%---------------------------------------- rechte Zirkel-Mine -------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm SLg cm T + phiS 2 mul rotate + 0 cm SLg neg cm moveto + 0.06 cm 0.1 cm rlineto + 0.013 cm 0.2 cm rlineto + -0.06 cm 0 cm rlineto + closepath + gsave + \pst@usecolor\PoCMineCol + fill + grestore +grestore +%---------------------------------------- Spindel -------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + -2 cm -1 phiS cos mul cm rmoveto + 4 cm 0 cm rlineto + gsave + 0.5 setgray + 1.6 setlinewidth + stroke + grestore +grestore +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + -2 cm -1 phiS cos mul cm rmoveto + 0.2 -0.75 rmoveto + 189 { 0.5 1.5 rlineto + 0.1 -1.5 rmoveto } repeat + gsave + 0.2 setgray + 0.2 setlinewidth + stroke + grestore +grestore +%---------------------------------------- Drehrad an der Spindel -------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + 0 cm -1.3 phiS cos mul cm rmoveto + 0 cm 0.6 cm rlineto + gsave + 0.5 setgray + 0.08 cm setlinewidth + stroke + grestore +grestore +gsave +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + -0.04 cm -1.28 phiS cos mul cm rmoveto + 20 { 0.08 cm 0 cm rlineto + -0.08 cm 0.03 cm rmoveto } repeat + gsave + 0.3 setgray + 0.2 setlinewidth + stroke + grestore +grestore +gsave +%---------------------------------------- Halterung zum Anfassen -------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + 0 cm 0.75 0.54 phiS sin mul add cm moveto + 0 cm 0.2 cm rlineto + gsave + 0.5 setgray + 3 setlinewidth + stroke + grestore +grestore +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + 0 cm 0.95 0.54 phiS sin mul add cm moveto + 0 cm 0.05 cm rlineto + gsave + \pst@usecolor\PoCFillCol + 5 setlinewidth + stroke + grestore +grestore +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + 0 cm 1.0 0.54 phiS sin mul add cm moveto + 0 cm 0.5 cm rlineto + gsave + 0.5 setgray + 5 setlinewidth + stroke + grestore +grestore +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + -0.08 cm 1.0 0.6 phiS sin mul add cm moveto + 0 cm 0.48 cm rlineto + 6 { 0.025 cm -0.48 cm rmoveto + 0 cm 0.48 cm rlineto } repeat + gsave + 0.65 setgray + 0.15 setlinewidth + stroke + grestore +grestore +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + -0.075 cm 1.0 0.6 phiS sin mul add cm moveto + 0 cm 0.48 cm rlineto + 6 { 0.025 cm -0.48 cm rmoveto + 0 cm 0.48 cm rlineto } repeat + gsave + 0.25 setgray + 0.2 setlinewidth + stroke + grestore +grestore +%---------------------------------------- Kreis um oberen Teil -------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm T + phiS rotate + 0 cm 0.1 0.54 phiS sin mul add cm moveto + 0.65 -50 PtoC exch cm exch cm rmoveto + 0 cm 0.1 0.54 phiS sin mul add cm 0.65 cm -50 230 arc + gsave + 0.1 setgray + 1.3 setlinewidth + stroke + grestore +grestore +%---------------------------------------- Kreis zwischen den Schenkeln -------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm SLg cm moveto + 0 cm SLg cm 0.15 cm 0 360 arc + closepath + gsave + 0.1 setgray + fill + grestore +grestore +%---------------------------------------- Schenkel des Zirkels ---------------------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm 0.3 cm moveto + -0.3 cm SLg 0.1 add cm lineto + 0 cm SLg cm T + phiS 2 mul rotate + 0.3 cm 0.1 cm moveto + 0 cm SLg 0.3 sub neg cm lineto +% closepath + gsave + 0.285 cm setlinewidth + 2 setlinejoin + \pst@usecolor\PoCFillCol + stroke + grestore +grestore +gsave + newpath + phiS neg rotate + -0.17 cm SLg 0.6 mul cm moveto + -0.25 cm SLg 0.85 mul cm lineto + 0 cm SLg cm T + phiS 2 mul rotate + 0.17 cm SLg -0.4 mul cm moveto + 0.25 cm SLg -0.15 mul cm lineto +% closepath + gsave + 0.17 cm setlinewidth + 2 setlinejoin + 0.4 setgray + stroke + grestore +grestore +%---------------------------------------- Kreis an der linken Spitze -------------------------------------- +gsave + newpath + phiS neg rotate + -0.03 cm 0.8 cm moveto + -0.03 cm 0.8 cm 0.175 cm 0 360 arc + closepath + gsave + 0.25 setgray + fill + grestore +grestore +gsave + newpath + phiS neg rotate + -0.03 cm 0.8 cm moveto + -0.03 cm 0.8 cm 0.025 cm 0 360 arc + closepath + gsave + 0.8 setgray + fill + grestore +grestore +%---------------------------------------- Kreis an der rechten Spitze -------------------------------------- +gsave + newpath + phiS neg rotate + 0 cm SLg cm T + phiS 2 mul rotate + 0.03 cm 0 cm T + 0 cm SLg 0.8 sub neg cm moveto + 0 cm SLg 0.8 sub cm neg 0.175 cm 0 360 arc + closepath + gsave + 0.25 setgray + fill + grestore +grestore +gsave + newpath + phiS neg rotate + 0 cm SLg cm T + phiS 2 mul rotate + 0.03 cm 0 cm T + 0 cm SLg 0.8 sub neg cm moveto + 0 cm SLg 0.8 sub cm neg 0.025 cm 0 360 arc + closepath + gsave + 0.8 setgray + fill + grestore +grestore +%-------------------------------------------------------------------------------------------------------------------------------------------------- +%--------------- Ende nur grestore von gsave ganz am Anfang ------------------ +grestore +}% +\pnode(! + \pst@tempA \tx@UserCoor /@@y1 ED /@@x1 ED + \pst@tempB \tx@UserCoor /@@y2 ED /@@x2 ED + @@x1 @@x2 sub @@y1 @@y2 sub Pyth \pst@RadMul\space mul /\pst@RadVS\space exch def + @@y1 @@y2 sub dup mul @@x1 @@x2 sub dup mul add \pst@RadMul dup mul mul /quadlg ED + quadlg 0 eq { 180 } { @@y1 @@y2 sub @@x1 @@x2 sub atan } ifelse /\pst@AngleVS\space exch def %------------ Winkelberechnung /\pst@AngleVS\space exch def + 0 0){MoneyforNothing}% +\endgroup% +\end@SpecialObj\ignorespaces% +}% + +%\define@boolkey[psset]{pst-geometrictools}[Pst@]{Ruler}[true]{} +%\define@boolkey[psset]{pst-geometrictools}[Pst@]{Ppoint}[false]{} +%\define@boolkey[psset]{pst-geometrictools}[Pst@]{LineOffset}[false]{} +%\define@key[psset]{pst-geometrictools}{AddAngle}[0]{\def\pst@AddAngle{#1 }}% +%\psset[pst-geometrictools]{Ruler=true,Ppoint=false,AddAngle=0,LineOffset=false} + +%% Distance between two points => #3 +\def\psDistAB(#1)(#2)#3{% + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB +\pnode(! + \pst@tempA \tx@UserCoor + \pst@tempB \tx@UserCoor + 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt + /#3 ED + 0 0 + ){XX} +} +%% calcule l'angle entre Ox et AB et le place en #3 +\def\psAngleAB(#1)(#2)#3{% + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB +\pnode(! + \pst@tempA \tx@UserCoor + \pst@tempB \tx@UserCoor + 3 -1 roll sub 3 1 roll exch sub Atan + /#3 ED + 0 0 + ){YY} +}% +%% angle defined by three points +\def\psAngleAOB(#1)(#2)(#3)#4{% + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \pst@getcoor{#2}\pst@tempC +\pnode(! + \pst@tempA \tx@UserCoor + \pst@tempB \tx@UserCoor + \pst@tempC \tx@UserCoor + 4 copy exch 4 -1 roll mul + 3 -2 roll mul add + 4 -2 roll mul 4 -2 roll mul sub exch Atan + /#4 ED + 0 0 + ){ZZ} +} + +% la nouvelle version de \psParallels +\define@key[psset]{pst-geometrictools}{DistCoeff}[1]{\def\pst@DistCoeff{#1 }}% +\psset[pst-geometrictools]{DistCoeff=1} +% +\def\psParallels{\def\pst@par{}\pst@object{psParallels}} +\def\psParallels@i(#1)(#2)(#3){% +\begin@SpecialObj % +\pnode(#1){pointA}% +\pnode(#2){pointB}% +\pnode(#3){pointC}% +\pcline[nodesep=-3](pointA)(pointB) +\psdots(pointA)(pointB)(pointC) +\uput[l](pointA){A} +\uput[l](pointB){B} +\uput[r](pointC){C} +% +\psProtractor[Ghost]{0}(pointA)% +\psAngleAB(pointA)(pointB){alpha1} +\psAngleAB(pointA)(GeodrA){alpha2} +\psProtractor[Ghost]{alpha1 alpha2 sub}(pointA)% +\psRuler{0}(GeodrB)(GeodrC) +% +\pstProjection[PointName={},PointSymbol=none]{pointA}{pointB}{pointC}[pointI]% +\pstRotation[RotAngle=45,PointSymbol=none,PointName={}]{pointC}{pointI}[pointJ]% +\pstInterLL[PointSymbol=none,PointName={}]{pointA}{pointB}{pointC}{pointJ}{pointK}% +\pstTranslation[PointSymbol=none,PointName={},DistCoef=\pst@DistCoeff]{pointK}{pointC}{pointA}[pointA*] +\psProtractor{alpha1 alpha2 sub}(pointA*)% +\end@SpecialObj\ignorespaces% +}% + +%\define@boolkey[psset]{pst-geometrictools}[Pst@]{Ruler}[true]{} +%\define@boolkey[psset]{pst-geometrictools}[Pst@]{Ppoint}[false]{} +%\define@boolkey[psset]{pst-geometrictools}[Pst@]{LineOffset}[false]{} +%\define@key[psset]{pst-geometrictools}{AddAngle}[1]{\def\pst@AddAngle{#1 }}% +%\psset[pst-geometrictools]{Ruler=true,Ppoint=false,AddAngle=0,LineOffset=false} +%\def\psParallels{\def\pst@par{}\pst@object{psParallels}} +%\def\psParallels@i(#1)(#2)(#3){% +%\psset{saveNodeCoors,NodeCoorPrefix=n}% +%\@ifundefined{rCounter}{\def\rCounter{1}}{}% +%\begin@SpecialObj % +%\pnode(#1){pointA}% +%\pnode(#2){pointB}% +%\pnode(#3){pointC}% +%\pstProjection[PointName={},PointSymbol=none]{pointA}{pointB}{pointC}[pointI]% +%\midAB(pointA)(pointB){pointM}% +%\pstRotation[RotAngle=45,PointSymbol=none,PointName={}]{pointC}{pointI}[pointJ]% +%\pstInterLL[PointSymbol=none,PointName={}]{pointA}{pointB}{pointC}{pointJ}{pointK}% +%\AtoB(pointI)(pointC){IC}% +%\AtoB(pointK)(pointC){KC}% +%\AplusB(pointM)(KC){MT}% +%\AplusB(pointB)(KC){BT}% +%\psProtractor[Ghost]{0}(pointM)(pointB)% +%\pnode(GeodrB){ProB}% +%\pnode(GeodrC){ProC}% +%\psLDNode(ProB)(ProC){-1cm}{pointE}% +%\ifPst@Ruler\psRuler{0}(pointE)(GeodrC)\fi% +%\AplusB(ProB)(KC){ProB*}% +%\pst@Verb{ nKCx nKCy Pyth /laenge exch def % +%nKCx laenge div \pst@number\pslinewidth\space 2 div 0.35 \pst@ProScale mul add mul 28.45274 div 2 sqrt mul /delX exch def % +%nKCy laenge div \pst@number\pslinewidth\space 2 div 0.35 \pst@ProScale mul add mul 28.45274 div 2 sqrt mul /delY exch def +%}% +%\pnode(!nProB*x delX add nProB*y delY add ){GProB*}% +%\pnode(!/AddA \pst@AddAngle def nProB*x AddA 0 eq { delX add } { AddA 180 eq { delX sub } { 0 add } ifelse } ifelse nProB*y AddA 0 eq { delY add } { AddA 180 eq { delY sub } { 0 add } ifelse } ifelse ){GProBC*}% +%\pnode(!nMTx delX add nMTy delY add){GMT*}% +%\pnode(!/AddA \pst@AddAngle def npointCx AddA 0 eq { delX add } { AddA 180 eq { delX sub } { 0 add } ifelse } ifelse npointCy AddA 0 eq { delY add } { AddA 180 eq { delY sub } { 0 add } ifelse } ifelse ){pointC*}% +%\psLNode(pointM)(GMT*){\rCounter}{MPro}% +%\psLNode(ProB)(GProB*){\rCounter}{BPro}% +%\ifPst@Ppoint +%\ifPst@LineOffset +%\pst@Verb{ nICx nICy Pyth /laenge exch def % +%nICx laenge div \pst@number\pslinewidth\space 2 div 0.35 \pst@ProScale mul add mul 28.45274 div 2 sqrt mul /delX exch def % +%nICy laenge div \pst@number\pslinewidth\space 2 div 0.35 \pst@ProScale mul add mul 28.45274 div 2 sqrt mul /delY exch def % +%}% +%\pnode(!/AddA \pst@AddAngle def nProB*x AddA 0 eq { delX add } { AddA 180 eq { delX sub } { 0 add } ifelse } ifelse nProB*y AddA 0 eq { delY add } { AddA 180 eq { delY sub } { 0 add } ifelse } ifelse ){GProBC*}% +%\pnode(!/AddA \pst@AddAngle def npointCx AddA 0 eq { delX add } { AddA 180 eq { delX sub } { 0 add } ifelse } ifelse npointCy AddA 0 eq { delY add } { AddA 180 eq { delY sub } { 0 add } ifelse } ifelse ){pointC*}% +%\psProtractor{\pst@AddAngle}(pointC*)(GProBC*)\else% +%\psProtractor{\pst@AddAngle}(pointC)(ProB*)\fi% +%\else +%\psProtractor{\pst@AddAngle}(MPro)(BPro)\fi % Um die Liniendicke 0.8pt nach rechts versetzt +%\psLNode(pointC)(ProB*){0.98}{ProB**}% +%\psLNode(pointC)(ProB**){2}{C*}% +%\end@SpecialObj\ignorespaces% +%}% + +\catcode`\@=\PstAtCode\relax +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/pst-geometrictools/pst-geometrictools.sty b/Master/texmf-dist/tex/latex/pst-geometrictools/pst-geometrictools.sty new file mode 100644 index 00000000000..2f1cd2e24c8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pst-geometrictools/pst-geometrictools.sty @@ -0,0 +1,23 @@ +%% This is file `pst-geometrictools.sty', +%% +%% 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 +%% +\RequirePackage{pstricks} +\ProvidesPackage{pst-geometrictools}[2017/06/29 package wrapper for pst-geometrictools.tex] +\input{pst-geometrictools.tex} +\ProvidesFile{pst-geometrictools.tex} + [\filedate\space v\fileversion\space `PST-geometrictools'] +\endinput diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 98073fddcd3..3a3dc1a8fa8 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -502,7 +502,7 @@ my @TLP_working = qw( pst-calendar pst-cie pst-circ pst-coil pst-cox pst-dbicons pst-diffraction pst-electricfield pst-eps pst-eucl pst-eucl-translation-bg pst-exa pst-fill pst-fit pst-fr3d pst-fractal pst-fun pst-func - pst-gantt pst-geo pst-gr3d pst-grad pst-graphicx + pst-gantt pst-geo pst-geometrictools pst-gr3d pst-grad pst-graphicx pst-infixplot pst-intersect pst-jtree pst-knot pst-labo pst-layout pst-lens pst-light3d pst-magneticfield pst-math pst-mirror pst-node pst-ob3d pst-ode pst-optexp pst-optic diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index 357f225b90d..48a7a911800 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -913,6 +913,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'pst-gantt', "&MAKEpst", 'pst-geo', "&MAKEpst", 'pst-geo-compress', "die 'skipping, in pst-geo, check with hvoss'", + 'pst-geometrictools', "&MAKEpst", 'pst-graphicx',"&MAKEpst", 'pst-gr3d', "&MAKEpst", 'pst-grad', "&MAKEpst", diff --git a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc index 24818857ed4..23484298159 100644 --- a/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-pstricks.tlpsrc @@ -44,6 +44,7 @@ depend pst-fun depend pst-func depend pst-gantt depend pst-geo +depend pst-geometrictools depend pst-ghsb depend pst-gr3d depend pst-grad diff --git a/Master/tlpkg/tlpsrc/pst-geometrictools.tlpsrc b/Master/tlpkg/tlpsrc/pst-geometrictools.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3