summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-protractor.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-protractor.tex')
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-protractor.tex121
1 files changed, 121 insertions, 0 deletions
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-protractor.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-protractor.tex
new file mode 100644
index 0000000000..fb995eead7
--- /dev/null
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-protractor.tex
@@ -0,0 +1,121 @@
+% tkz-obj-eu-protractor.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-protractor.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% !!! idea from Y. Combe !!!
+%<--------------------------------------------------------------------------–>
+% \tkzProtractor Protractor
+%
+% Rapporteur ajustable et positionable
+%
+% Par défaut:
+% centre en (0,0)
+% rayon de 5 cm
+% ligne de base horizontale.
+% épaisseur de ligne 0.4 pt
+%
+% Paramètres (optionnels, gérés par xkeyval)
+% shift : coordonées (n'importe quelle forme
+% acceptée par tikz).
+% scale : facteur d'échelle
+% rotate : rotation
+% lw : line width (épaisseur des lignes)
+% ce paramètre subit le facteur d'échelle.
+%<--------------------------------------------------------------------------–>
+\def\FullProtractor{%
+\draw[fill=black!50!yellow!20!,even odd rule,semitransparent]%
+ (0,0) circle (4cm);
+\draw (0,0) circle (3.3cm);
+\draw (0,0) circle (4cm);
+\draw[fill=black] (0,0) circle (.08mm);
+\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
+\foreach \x in {0, 90, ..., 360}{%
+ \draw[very thin, gray!40] (a) -- (\x:4cm);}
+\foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);}
+\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);}
+\foreach \x in {0,10,...,350}{%
+ \node[rotate=(\x-90)] at (\x:3.6cm) {\tiny\x};
+}
+ \draw [>=stealth',->, thick,black] (0:2.5) arc(0:32:2.5);
+ \draw [>=stealth',->, thick,black] (0:2) arc(0:32:2);
+ \draw [>=stealth',->, thick,black] (0:1.5) arc(0:32:1.5);
+}
+
+\def\FullProtractorReturn{%
+\draw[fill=black!50!yellow!20!,even odd rule,semitransparent] (0,0) circle (4cm);
+\draw (0,0) circle (3.3cm);
+\draw (0,0) circle (4cm);
+\draw[fill=black] (0,0) circle (.08mm);
+\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
+\foreach \x in {0, 90, ..., 360}{%
+ \draw[very thin, gray!40] (a) -- (\x:4cm);}
+\foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);}
+\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);}
+\begin{scope}
+ \foreach \x in {0,10,...,350}{%
+ \node[rotate=(-\x-90)] at (-\x:3.6cm) {\tiny\x};
+}
+ \end{scope}
+ \draw [>=stealth',->, thick,black] (0:2.5) arc(0:-32:2.5);
+ \draw [>=stealth',->, thick,black] (0:2) arc(0:-32:2);
+ \draw [>=stealth',->, thick,black] (0:1.5) arc(0:-32:1.5);
+}
+
+\pgfkeys{
+ protractor/.cd,
+ lw/.code = {\def\cmdMO@Rap@lw{#1}},
+ shift/.code = {\def\cmdMO@Rap@shift{#1}},
+ rotate/.code = {\def\cmdMO@Rap@rotate{#1}},
+ scale/.code = {\def\cmdMO@Rap@scale{#1}},
+ return/.is if = tkz@RappReturn,
+ return/.code = \tkz@RappReturnfalse,
+ /protractor/.search also={/tikz},
+ lw = 0.4pt,
+ scale=1,
+ shift={(0,0)},
+ rotate=0
+ }
+
+\def\tkzProtractor{\pgfutil@ifnextchar[{\tkz@Protractor}{\tkz@Protractor[]}}
+\def\tkz@Protractor[#1](#2,#3){%
+\tkz@RappReturnfalse
+\pgfqkeys{/protractor}{#1}
+ \tkz@@extractxy{#2}
+ \global\tkz@ax\pgf@x
+ \global\tkz@ay\pgf@y
+ \tkzFindSlopeAngle(#2,#3)
+ \tkzGetAngle{cmdMO@Rap@rotate}%
+ \global\let\tkz@@Protractor\FullProtractor%
+ \iftkz@RappReturn
+ \global\let\tkz@@Protractor\FullProtractorReturn
+ \else
+ \global\let\tkz@@Protractor\FullProtractor
+ \fi
+ \pgfmathsetlengthmacro{\MO@lw}{\cmdMO@Rap@lw * \cmdMO@Rap@scale}
+ \begin{scope}[shift = {(\tkz@ax,\tkz@ay)},%
+ scale = \cmdMO@Rap@scale,%
+ rotate = \cmdMO@Rap@rotate,%
+ every node/.style = {scale =\cmdMO@Rap@scale,
+ rotate =\cmdMO@Rap@rotate},%
+ line width=\MO@lw]%
+ \tkz@@Protractor
+\end{scope}
+}
+%<--------------------------------------------------------------------------–>
+% fin de \tkzProtractor
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput \ No newline at end of file