diff options
author | Karl Berry <karl@freefriends.org> | 2023-03-05 20:47:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-03-05 20:47:29 +0000 |
commit | e705759d4a5ed67104c391e0bf2f90700690824a (patch) | |
tree | ed3d205371f849fc680600db852b5915e958a9dd /Master/texmf-dist/tex/latex/outilsgeomtikz | |
parent | 680e24d91dddba931eaf6d9ca784db2532a28c35 (diff) |
outilsgeomtikz (5mar23)
git-svn-id: svn://tug.org/texlive/trunk@66360 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/outilsgeomtikz')
-rw-r--r-- | Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty | 620 |
1 files changed, 620 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty b/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty new file mode 100644 index 00000000000..7b6784ca45e --- /dev/null +++ b/Master/texmf-dist/tex/latex/outilsgeomtikz/OutilsGeomTikz.sty @@ -0,0 +1,620 @@ +% Author.........: C. Pierquet +% licence........: Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{OutilsGeomTikz}[2023/03/03 v0.1.0 Outils géométriques en TikZ] +% 0.1.0 Version initiale + +%------Packages utiles +\RequirePackage{tikz,pgffor} +\RequirePackage{simplekv} +\RequirePackage{xstring} +\RequirePackage{nicefrac} +%librairies tikz +\usetikzlibrary{calc,positioning} + +%--------Crayon +% inspiration(s) de https://tex.stackexchange.com/questions/147389/symbols-of-pencil-ruler-and-compass +\defKV[CrayonGeom]{% + Echelle=\def\PENechelle{#1},% + Longueur=\def\PENlongueur{#1},% + Couleur=\def\PENcouleur{#1},% + Origine=\def\PENposOrigin{#1},% + Rotation=\def\PENangle{#1} +} + +\setKVdefault[CrayonGeom]{% + Echelle=1,% + Couleur=red,% + Longueur=5,% + Origine={(0,0)},% + Rotation=0 +} + +\NewDocumentCommand\tkzCrayon{ O{} }{% + \useKVdefault[CrayonGeom]% + \setKV[CrayonGeom]{#1}% + \xdef\PENlongueur{\fpeval{max(2.5,\PENlongueur)}}%valeurs mini + \begin{scope}[shift={(\PENposOrigin)},rotate=\PENangle,scale=\PENechelle] + \fill[\PENcouleur!75] (-0.2,{\PENlongueur-0.3}) -- (0.2,{\PENlongueur-0.3}) -- (0.2,0.8) --(0.1,0.65) -- (0,0.8) -- (-0.1,0.66) -- (-0.2,0.8) -- cycle; + \draw[color=white,line width={\PENechelle*1pt}] (0,{\PENlongueur-0.3}) -- (0,0.6); + \fill[black] (-0.2,{\PENlongueur-0.6}) -- (0,{\PENlongueur-0.65}) -- (0.2,{\PENlongueur-0.6}) -- (0.2,{\PENlongueur-0.12}) arc(30:150:0.23); + \fill[brown!40] (-0.2,0.8) -- (0,0) node[coordinate,pos=0.7] (a) {} -- (0.2,0.8) node[coordinate,pos=0.3] (b) {} -- (0.1,0.65) -- (0,0.8) -- (-0.1,0.66) -- cycle; + \fill[\PENcouleur] (a) -- (0,0) -- (b) -- cycle ; + \end{scope} +} + +%--------Règle (OK) +\defKV[RegleGeom]{% + Echelle=\def\REGLechelle{#1},% + Longueur=\def\REGLlongueur{#1},% + Largeur=\def\REGLlargeur{#1},% + Couleur=\def\REGLcouleur{#1},% + CouleurFond=\def\REGLcouleurfond{#1},% + Origine=\def\REGLposOrigin{#1},% + Rotation=\def\REGLangle{#1},% + Opacite=\def\REGLopac{#1},% + PosVal=\def\REGLposval{#1} +} + +\setKVdefault[RegleGeom]{% + Echelle=1,% + Couleur=black,% + CouleurFond=black,% + Longueur=12,% + Largeur=1.5,% + Origine={(0,0)},% + Rotation=0,% + AfficheValeurs=true,% + Fond=false,% + Opacite=0.5,% + PosVal=m +} + +\NewDocumentCommand{\tkzRegle}{ O{} }{% + \useKVdefault[RegleGeom]% + \setKV[RegleGeom]{#1}% + \xdef\REGLlongueur{\fpeval{max(3,\REGLlongueur)}}%valeurs mini + \xdef\REGLlargeur{\fpeval{max(1.5,\REGLlargeur)}} + \begin{scope}[shift={(\REGLposOrigin)},rotate=\REGLangle,scale=\REGLechelle] + \ifboolKV[RegleGeom]{Fond} + {% + \begin{scope} + \fill[draw=none,fill=\REGLcouleurfond!10!white,fill opacity=\REGLopac,even odd rule] (-0.375,0)--({\REGLlongueur+0.375},0) to[bend left=15] ({\REGLlongueur+0.375},{-\REGLlargeur}) -- (-0.375,{-\REGLlargeur}) to[bend left=15] (-0.375,0) (0.5,{-0.5*\REGLlargeur}) circle[radius={0.125*\REGLlargeur}] ; + \end{scope} + }% + {} + %bord et trou + \draw[semithick,\REGLcouleur] (-0.375,0)--({\REGLlongueur+0.375},0) to[bend left=15] ({\REGLlongueur+0.375},{-\REGLlargeur}) -- (-0.375,{-\REGLlargeur}) to[bend left=15] (-0.375,0) (0.5,{-0.5*\REGLlargeur}) circle[radius={0.125*\REGLlargeur}] ; + \foreach \x in {0,0.1,...,\REGLlongueur} {\draw[\REGLcouleur] (\x,0)--++(0,-0.25) (\x,{-\REGLlargeur})--++(0,0.25) ;} + \foreach \x in {0,0.5,...,\REGLlongueur} {\draw[\REGLcouleur] (\x,0)--++(0,-0.375) (\x,{-\REGLlargeur})--++(0,0.375) ;} + \foreach \x in {0,1,...,\REGLlongueur} {\draw[\REGLcouleur] (\x,0)--++(0,-0.5) (\x,{-\REGLlargeur})--++(0,0.5) ;} + \ifboolKV[RegleGeom]{AfficheValeurs}% + {% + \IfSubStr{\REGLposval}{h} + {\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small,below] {$\i$} ;} + {} + \IfSubStr{\REGLposval}{m} + {\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-0.5*\REGLlargeur}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small] {$\i$} ;} + {} + \IfSubStr{\REGLposval}{b} + {\foreach \i in {0,1,...,\REGLlongueur} \draw[\REGLcouleur] (\i,{-\REGLlargeur+0.5}) node[inner sep=1pt,outer sep=1pt,rotate=\REGLangle,scale={0.8*\REGLechelle},font=\small,above] {\rotatebox{180}{$\fpeval{trunc(\REGLlongueur)-\i}$}} ;} + {} + }% + {}% + \end{scope} +} + +%--------Réquerre (OK) +\defKV[RequerreGeom]{% + Echelle=\def\REQechelle{#1},% + Longueur=\def\REQlongueur{#1},% + Largeur=\def\REQlargeur{#1},% + Couleur=\def\REQcouleur{#1},% + CouleurFond=\def\REQcouleurfond{#1},% + Origine=\def\REQposOrigin{#1},% + Rotation=\def\REQangle{#1},% + Opacite=\def\REQopac{#1} +} + +\setKVdefault[RequerreGeom]{% + Echelle=1,% + Couleur=black,% + CouleurFond=black,% + Longueur=12,% + Largeur=3,% + Origine={(0,0)},% + Rotation=0,% + AfficheValeurs=true,% + Fond=false,% + Opacite=0.5 +} + +\NewDocumentCommand{\tkzRequerre}{ O{} }{% + \useKVdefault[RequerreGeom]% + \setKV[RequerreGeom]{#1}% + \xdef\REQlongueur{\fpeval{max(6,\REQlongueur)}}%valeurs mini + \xdef\REQlargeur{\fpeval{max(1.5,\REQlargeur)}} + \begin{scope}[shift={(\REQposOrigin)},rotate=\REQangle,scale=\REQechelle] + \ifboolKV[RequerreGeom]{Fond} + { + \fill[draw=none,rounded corners,fill=\REQcouleurfond!10!white,fill opacity=\REQopac] ({-\REQlongueur*0.5},0) rectangle ({\REQlongueur*0.5},{-\REQlargeur}) ; + } + {} + \draw[semithick,\REQcouleur,rounded corners] ({-\REQlongueur*0.5},0) rectangle ({\REQlongueur*0.5},{-\REQlargeur}) ; + \draw[\REQcouleur] (0,-1)--(0,-\REQlargeur) ; + \foreach \x in {0,0.1,...,\fpeval{0.5*\REQlongueur-0.5}} {\draw[\REQcouleur] (\x,0)--(\x,-0.25) (-\x,0)--(-\x,-0.25) ;} + \foreach \x in {0,0.5,...,\fpeval{0.5*\REQlongueur-0.5}} {\draw[\REQcouleur] (\x,0)--(\x,-0.375) (-\x,0)--(-\x,-0.375) ;} + \foreach \x in {0,1,...,\fpeval{0.5*\REQlongueur-0.5}} {\draw[\REQcouleur] (\x,0)--(\x,-0.5) (-\x,0)--(-\x,-0.5) ;} + \foreach \x in {0.7,0.8,...,\REQlargeur} {\draw[\REQcouleur] (-2.65,-\x)--(-2.35,-\x) (2.65,-\x)--(2.35,-\x) ;} + \foreach \x in {1,1.5,...,\REQlargeur} {\draw[\REQcouleur] (-2.8,-\x)--(-2.2,-\x) (2.2,-\x)--(2.8,-\x) ;} + \begin{scope} + \clip ({-\REQlongueur*0.5},0) rectangle ({\REQlongueur*0.5},{-\REQlargeur}) ; + \draw[\REQcouleur] (0,-1) rectangle++ (0.2,-0.2) (0,-2) rectangle++ (-0.2,0.2) ; + \foreach \x in {1,2,...,\fpeval{\REQlargeur-0.25}} {\draw[\REQcouleur] ({-\REQlongueur*0.5},-\x)--({\REQlongueur*0.5},-\x) ;} + \end{scope} + \ifboolKV[RequerreGeom]{AfficheValeurs}% + {% + \draw[\REQcouleur] (0,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$0$} ; + \foreach \i in {1,2,...,\fpeval{0.5*\REQlongueur-0.5}}{% + \draw[\REQcouleur] (\i,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$\i$} ; + \draw[\REQcouleur] (-\i,-0.5) node[inner sep=1pt,outer sep=1pt,rotate=\REQangle,scale={0.8*\REQechelle},font=\small,below] {$-\i$} ;} + }% + {}% + \end{scope} +} + +%--------Équerre (OK) +\defKV[EquerreGeom]{% + Echelle=\def\EQechelle{#1},% + Longueur=\def\EQlongueur{#1},% + Couleur=\def\EQcouleur{#1},% + CouleurFond=\def\EQcouleurfond{#1},% + Origine=\def\EQposOrigin{#1},% + Rotation=\def\EQangle{#1},% + Opacite=\def\EQopac{#1} +} + +\setKVdefault[EquerreGeom]{% + Echelle=1,% + Couleur=black,% + CouleurFond=black,% + Longueur=10,% + Origine={(0,0)},% + Rotation=0,% + AfficheValeurs=true,% + Fond=false,% + Opacite=0.5 +} + +\NewDocumentCommand{\tkzEquerre}{ O{} }{% + \useKVdefault[EquerreGeom]% + \setKV[EquerreGeom]{#1}% + \xdef\EQlongueur{\fpeval{max(4.5,\EQlongueur)}}%valeurs mini + \def\EQlargeur{\fpeval{\EQlongueur*tand(30)}} + \begin{scope}[shift={(\EQposOrigin)},rotate=\EQangle,scale=\EQechelle] + \ifboolKV[EquerreGeom]{Fond} + {% + \begin{scope} %diff extérieur-intérieur + \fill[draw=none,fill=\EQcouleurfond!10!white,fill opacity=\EQopac,even odd rule] + (0,0) -- ({\EQlargeur},0) -- (0,{\EQlongueur}) -- cycle + ({1},{1}) -- ({\EQlargeur-sqrt(3)},{1}) -- ({1},{\EQlongueur-(2+sqrt(3))}) -- cycle ; + \end{scope} + }% + {} + \draw[semithick,\EQcouleur] (0,0) -- ({\EQlargeur},0) -- (0,{\EQlongueur}) -- cycle ; %contour extérieur + \draw[semithick,\EQcouleur] ({1},{1}) -- ({\EQlargeur-sqrt(3)},{1}) -- ({1},{\EQlongueur-(2+sqrt(3))}) -- cycle ; %contour intérieur + %graduations + \begin{scope} + \clip (0,0) -- ({\EQlargeur},0) -- (0,{\EQlongueur}) -- cycle ; + \draw[\EQcouleur] (0.1,0)--(0.1,0.075) (0.2,0)--(0.2,0.15) ; + \foreach \x in {0.3,0.4,...,\fpeval{0.925*\EQlargeur}} {\draw[\EQcouleur] (\x,0)--(\x,0.2) ;} + \foreach \x in {0.5,1,...,\fpeval{0.925*\EQlargeur}} {\draw[\EQcouleur] (\x,0)--(\x,0.3) ;} + \foreach \x in {0,1,...,\fpeval{0.925*\EQlargeur}} {\draw[\EQcouleur] (\x,0)--(\x,0.4) ;} + \draw[\EQcouleur] (0,0.1)--(0.075,0.1) (0,0.2)--(0.15,0.2) ; + \foreach \y in {0.3,0.4,...,\fpeval{0.925*\EQlongueur}} {\draw[\EQcouleur] (0,\y)--(0.2,\y) ;} + \foreach \y in {0.5,1,...,\fpeval{0.925*\EQlongueur}} {\draw[\EQcouleur] (0,\y)--(0.3,\y) ;} + \foreach \y in {0,1,...,\fpeval{0.925*\EQlongueur}} {\draw[\EQcouleur] (0,\y)--(0.4,\y) ;} + \ifboolKV[EquerreGeom]{AfficheValeurs}% + {% + \foreach \i in {1,2,...,\fpeval{0.9*\EQlongueur-1}} + \draw[\EQcouleur] (0.4,\i) node[inner sep=1pt,outer sep=1pt,rotate=\EQangle,scale={0.8*\EQechelle},font=\small,right] {\rotatebox{90}{$\i$}} ; + \foreach \i in {1,2,...,\fpeval{0.9*\EQlargeur-0.5}} + \draw[\EQcouleur] (\i,0.4) node[inner sep=1pt,outer sep=1pt,rotate=\EQangle,scale={0.8*\EQechelle},font=\small,above] {\rotatebox{180}{$\i$}} ; + }% + {}% + \end{scope} + \end{scope} +} + +%--------Rapporteur (OK) +\defKV[RapporteurGeom]{% + Echelle=\def\RAPPechelle{#1},% + EchelleAngle=\def\RAPPechangle{#1},% + Couleur=\def\RAPPcouleur{#1},% + CouleurFond=\def\RAPPcouleurfond{#1},% + Origine=\def\RAPPposOrigin{#1},% + Rotation=\def\RAPPangle{#1},% + Opacite=\def\RAPPopac{#1} +} + +\setKVdefault[RapporteurGeom]{% + Echelle=1,% + EchelleAngle=1,% + Couleur=black,% + CouleurFond=black,% + Origine={(0,0)},% + Rotation=0,% + AfficheAngles=true,% + Fond=false,% + Opacite=0.5,% + Complet=false +} + +\NewDocumentCommand{\tkzRapporteur}{ O{} }{% + \useKVdefault[RapporteurGeom]% + \setKV[RapporteurGeom]{#1}% + \begin{scope}[shift={(\RAPPposOrigin)},rotate=\RAPPangle,scale=\RAPPechelle,every node/.style={rotate=\RAPPangle}] + \ifboolKV[RapporteurGeom]{Complet} + { + %fond + \ifboolKV[RapporteurGeom]{Fond} + {% + \fill[draw=none,fill=\RAPPcouleurfond!10!white,fill opacity=\RAPPopac] (0,0) circle[radius=3.75] ; + }% + {} + %rectangles + \foreach \i in {30,45,60} + {\draw[densely dotted,\RAPPcouleur] (\i:2.5) rectangle ({180+\i}:2.5) ;} + %extérieur et intérieur + \draw[semithick,\RAPPcouleur] (0,0) circle[radius=3.75] ; + \draw[semithick,\RAPPcouleur] (0,0) circle[radius=2.5] ; + \draw[semithick,\RAPPcouleur] (-2.5,0) -- (2.5,0) ; + \draw[semithick,\RAPPcouleur] (0,-2.5) -- (0,2.5) ; + %grad degrés + \foreach \i in {0,1,...,360} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.55) ;} + \foreach \i in {0,5,...,360} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.45) ;} + \foreach \i in {0,10,...,360} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.35) ;} + %grad radians + \foreach \i in {0,30,45,60,90,120,135,150,180,210,225,240,270,300,315,330} {\draw[\RAPPcouleur] (\i:2.5)--(\i:2.65) (\i:2.9)--(\i:3.1) ;} + %valeurs si booléen + \ifboolKV[RapporteurGeom]{AfficheAngles} + {% + \draw[\RAPPcouleur] (0:2.75) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$0$} ; + \draw[\RAPPcouleur] (180:3.25) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\pm 180$} ; + \draw[\RAPPcouleur] (180:2.75) node[rotate=90,scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\pm \pi$} ; + \foreach \i in {0,10,...,170} + {\draw[\RAPPcouleur] (\i:3.25) node[rotate={\i-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\i$} ;} + \draw[\RAPPcouleur] (30:2.75) node[rotate={30-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{6}$} ; + \draw[\RAPPcouleur] (45:2.75) node[rotate={45-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{4}$} ; + \draw[\RAPPcouleur] (60:2.75) node[rotate={60-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{3}$} ; + \draw[\RAPPcouleur] (90:2.75) node[rotate={90-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{\pi}{2}$} ; + \draw[\RAPPcouleur] (120:2.75) node[rotate={120-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{2\pi}{3}$} ; + \draw[\RAPPcouleur] (135:2.75) node[rotate={135-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{3\pi}{4}$} ; + \draw[\RAPPcouleur] (150:2.75) node[rotate={150-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{5\pi}{6}$} ; + \foreach \i in {10,20,...,170} + {\draw[\RAPPcouleur] ({-\i}:3.25) node[rotate={270-\i},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$-\i$} ;} + \draw[\RAPPcouleur] (-30:2.75) node[rotate={270-30},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{6}$} ; + \draw[\RAPPcouleur] (-45:2.75) node[rotate={270-45},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{4}$} ; + \draw[\RAPPcouleur] (-60:2.75) node[rotate={270-60},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{3}$} ; + \draw[\RAPPcouleur] (-90:2.75) node[rotate={270-90},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-\pi}{2}$} ; + \draw[\RAPPcouleur] (-120:2.75) node[rotate={270-120},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-2\pi}{3}$} ; + \draw[\RAPPcouleur] (-135:2.75) node[rotate={270-135},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-3\pi}{4}$} ; + \draw[\RAPPcouleur] (-150:2.75) node[rotate={270-150},scale=\fpeval{0.8*\RAPPechelle*\RAPPechangle},font=\tiny] {$\nicefrac{-5\pi}{6}$} ; + }{} + } + { + %fond + \ifboolKV[RapporteurGeom]{Fond} + {% + \begin{scope} + \fill[draw=none,fill=\RAPPcouleurfond!10!white,fill opacity=\RAPPopac,even odd rule] + (-3.75,-0.75) -- (3.75,-0.75) -- (3.75,0) arc (0:180:3.75) -- cycle + (0.5,0) arc (0:180:0.5) -- (-2.25,0) arc (180:0:2.25) -- cycle ; + \end{scope} + }% + {} + %extérieur et intérieur + \draw[semithick,\RAPPcouleur] (-3.75,-0.75) -- (3.75,-0.75) -- (3.75,0) arc (0:180:3.75) -- cycle ; + \draw[semithick,\RAPPcouleur] (0.5,0) arc (0:180:0.5) -- (-2.25,0) arc (180:0:2.25) -- cycle ; + %croix + \draw[semithick,\RAPPcouleur] (-0.2,0)--(0.2,0) (0,-0.2)--(0,0.2) ; + %grad ext + \foreach \i in {0,1,...,180} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.55) ;} + \foreach \i in {0,5,...,180} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.45) ;} + \foreach \i in {0,10,...,180} {\draw[\RAPPcouleur] (\i:3.75)--(\i:3.35) ;} + %grad int + \foreach \i in {0,5,...,180} {\draw[\RAPPcouleur] (\i:2.25)--(\i:2.4) ;} + \foreach \i in {0,10,...,180} {\draw[\RAPPcouleur] (\i:2.25)--(\i:2.55) ;} + %valeurs si booléen + \ifboolKV[RapporteurGeom]{AfficheAngles} + {% + \foreach \i in {0,10,...,180} + {\draw[\RAPPcouleur] (\i:3.2) node[rotate={\i-90},scale=\fpeval{\RAPPechelle*\RAPPechangle},font=\tiny] {\i} ;} + \foreach \i in {0,10,...,180} + {\draw[\RAPPcouleur] (\i:2.7) node[rotate={\i-90},scale=\fpeval{\RAPPechelle*\RAPPechangle},font=\tiny] {\inteval{180-\i}} ;} + }{} + } + \end{scope} +} + +%--------RappÉquerre (OK) +\defKV[RapporteurEquerreGeom]{% + Echelle=\def\RAPPEQechelle{#1},% + Largeur=\def\RAPPEQlargeur{#1},% + EchelleValeurs=\def\RAPPEQechangle{#1},% + Couleur=\def\RAPPEQcouleur{#1},% + CouleurFond=\def\RAPPEQcouleurfond{#1},% + Origine=\def\RAPPEQposOrigin{#1},% + Rotation=\def\RAPPEQangle{#1},% + Opacite=\def\RAPPEQopac{#1} +} + +\setKVdefault[RapporteurEquerreGeom]{% + Echelle=1,% + Largeur=6,% + EchelleValeurs=1,% + Couleur=black,% + CouleurFond=black,% + Origine={(0,0)},% + Rotation=0,% + AfficheAngles=true,% + AfficheValeurs=true,% + Ombre=false,% + Fond=false,% + Opacite=0.5 +} + +\NewDocumentCommand{\tkzRappEquerre}{ O{} }{% + \useKVdefault[RapporteurEquerreGeom]% + \setKV[RapporteurEquerreGeom]{#1}% + \xdef\RAPPEQlargeur{\fpeval{max(3,\RAPPEQlargeur)}}%valeurs mini + \begin{scope}[shift={(\RAPPEQposOrigin)},rotate=\RAPPEQangle,scale=\RAPPEQechelle,every node/.style={rotate=\RAPPEQangle}] + %fond + \ifboolKV[RapporteurEquerreGeom]{Fond} + {% + \begin{scope} + \fill[draw=none,fill=\RAPPEQcouleurfond!10!white,fill opacity=\RAPPopac,even odd rule] (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ; + \end{scope} + }% + {} + \ifboolKV[RapporteurEquerreGeom]{Ombre}% + {% + \filldraw[draw=none,fill=\RAPPEQcouleur!25,opacity=\RAPPopac] (-175:{0.65*\RAPPEQlargeur}) arc (-175:-5:{0.65*\RAPPEQlargeur}) -- (-5:{0.625*\RAPPEQlargeur}) arc (-5:-175:{0.625*\RAPPEQlargeur}) -- cycle ;% + }{}% + %extérieur + \draw[semithick,\RAPPEQcouleur] (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ; + \foreach \x in {0,0.1,...,\fpeval{\RAPPEQlargeur-1}} + {\draw[\RAPPEQcouleur] ({\x},0)--({\x},-0.125) ({-\x},0)--({-\x},-0.125) ;} + \foreach \x in {0,0.5,...,\fpeval{\RAPPEQlargeur-1}} + {\draw[\RAPPEQcouleur] ({\x},0)--({\x},-0.1875) ({-\x},0)--({-\x},-0.1875) ;} + \foreach \x in {0,1,...,\fpeval{\RAPPEQlargeur-1}} + {\draw[\RAPPEQcouleur] ({\x},0)--({\x},-0.25) ({-\x},0)--({-\x},-0.25) ;} + %grad ext + \foreach \i in {5,6,...,175} + {\draw[\RAPPEQcouleur] ({-\i}:{0.5625*\RAPPEQlargeur})--++({-\i}:{0.02*\RAPPEQlargeur}) ;} + \foreach \i in {5,10,...,175} + {\draw[\RAPPEQcouleur] ({-\i}:{0.5625*\RAPPEQlargeur})--++({-\i}:{0.035*\RAPPEQlargeur}) ;} + %angles intérieurs + \ifboolKV[RapporteurEquerreGeom]{AfficheAngles} + {% + \foreach \i in {10,20,...,170} + {\draw[\RAPPEQcouleur] ({-\i}:{0.6125*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {\i} ;} + %angles "extérieurs" + \foreach \i in {10,20,...,170} + {\draw[\RAPPEQcouleur] ({-\i}:{0.6375*\RAPPEQlargeur}) node[rotate={90-\i},scale=\fpeval{\RAPPEQlargeur/8*\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {\inteval{180-\i}} ;} + }% + {}% + \ifboolKV[RapporteurEquerreGeom]{AfficheValeurs} + {% + \foreach \i in {-1,0,1} + {\draw[\RAPPEQcouleur] ({\i},-0.375) node[scale=\fpeval{\RAPPEQechelle*\RAPPEQechangle},font=\tiny] {$\i$} ;} + }% + {}% + %tracés intérieurs + \draw[\RAPPEQcouleur,dash pattern=on 15 off 4] (0,0)--(-135:{0.5625*\RAPPEQlargeur}) ; + \draw[\RAPPEQcouleur,dash pattern=on 15 off 4] (0,0)--(-45:{0.5625*\RAPPEQlargeur}) ; + \draw[\RAPPEQcouleur] (0,-0.5)--(0,{-0.51*\RAPPEQlargeur}) ; + \foreach \i in {0.4,0.5,...,\fpeval{0.51*\RAPPEQlargeur-0.5}} + {\draw[\RAPPEQcouleur] ({0.2625*\RAPPEQlargeur},{-\i})--++(0.2,0) ;} + \foreach \i in {0.4,0.5,...,\fpeval{0.51*\RAPPEQlargeur-0.5}} + {\draw[\RAPPEQcouleur] ({-0.2625*\RAPPEQlargeur},{-\i})--++(-0.2,0) ;} + \begin{scope} + \clip (-180:{0.55*\RAPPEQlargeur}) arc (-180:0:{0.55*\RAPPEQlargeur}) -- cycle ; + \foreach \i in {-0.5,-1,...,\fpeval{-0.55*\RAPPEQlargeur}} + {\draw[\RAPPEQcouleur] (0.2,\i)--({0.2375*\RAPPEQlargeur},\i) ({0.3125*\RAPPEQlargeur},\i)--({0.55*\RAPPEQlargeur},\i) ;} + \foreach \i in {-0.5,-1,...,\fpeval{-0.55*\RAPPEQlargeur}} + {\draw[\RAPPEQcouleur] (-0.2,\i)--({-0.2375*\RAPPEQlargeur},\i) ({-0.3125*\RAPPEQlargeur},\i)--({-0.55*\RAPPEQlargeur},\i) ;} + \end{scope} + %traits obliques extérieurs + \begin{scope} + \clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ; + \foreach \i in {10,20,...,170} + {\draw[\RAPPEQcouleur] ({-\i}:{0.65*\RAPPEQlargeur})--++({-\i}:3) ;} + \foreach \i in {10,20,...,170} + {\draw[\RAPPEQcouleur] ({-\i}:{0.65*\RAPPEQlargeur})--++({-\i}:3) ;} + \end{scope} + \begin{scope} + \clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ; + \def\cliptmp{\fpeval{min(0.15,0.0571*\RAPPEQlargeur)}} + \clip (0,-\RAPPEQlargeur)--++(135:\cliptmp)--++(\RAPPEQlargeur,\RAPPEQlargeur)--++(-45:\cliptmp)--cycle ; + \foreach \i in {1,2,...,89} + {\draw[\RAPPEQcouleur] ({\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({180-\i}:{abs(-0.3*\i/90+0.15)+0.15}) ;} + \end{scope} + \begin{scope} + \clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ; + \def\cliptmp{\fpeval{min(0.25,0.0571*\RAPPEQlargeur)}} + \clip (0,-\RAPPEQlargeur)--++(135:\cliptmp)--++(\RAPPEQlargeur,\RAPPEQlargeur)--++(-45:\cliptmp)--cycle ; + \foreach \i in {5,10,...,85} + {\draw[\RAPPEQcouleur] ({\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({180-\i}:{abs(-0.5*\i/90+0.25)+0.25}) ;} + \end{scope} + \begin{scope} + \clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ; + \def\cliptmp{\fpeval{min(0.15,0.0571*\RAPPEQlargeur)}} + \clip (0,-\RAPPEQlargeur)--++(45:\cliptmp)--++(-\RAPPEQlargeur,\RAPPEQlargeur)--++(-135:\cliptmp)--cycle ; + \foreach \i in {1,2,...,89} + {\draw[\RAPPEQcouleur] ({-\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({\i}:{abs(-0.3*\i/90+0.15)+0.15}) ;} + \end{scope} + \begin{scope} + \clip (-\RAPPEQlargeur,0) -- (\RAPPEQlargeur,0) -- (0,-\RAPPEQlargeur) -- cycle ; + \def\cliptmp{\fpeval{min(0.25,0.0571*\RAPPEQlargeur)}} + \clip (0,-\RAPPEQlargeur)--++(45:\cliptmp)--++(-\RAPPEQlargeur,\RAPPEQlargeur)--++(-135:\cliptmp)--cycle ; + \foreach \i in {5,10,...,85} + {\draw[\RAPPEQcouleur] ({-\RAPPEQlargeur/(1+tan(\i))},{-\RAPPEQlargeur*tan(\i)/(1+tan(\i))}) --++ ({\i}:{abs(-0.5*\i/90+0.25)+0.25}) ;} + \end{scope} + \end{scope} +} + +%--------Compas +% inspiration(s) de https://tex.stackexchange.com/questions/147389/symbols-of-pencil-ruler-and-compass +% Angle entre l'horizontale et 2 noeuds (#1 & #2), résultat dans \MonAngleTmp +\newcommand{\NodeTmpAngle}[2]{% + \pgfmathanglebetweenpoints% + {\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% + \global\let\MonAngleTmp\pgfmathresult% +} +% Distance entre 2 noeuds (#1 & #2), résultat dans \MaLongueurTmp +\makeatletter +\newcommand{\NodeTmpDist}[2]{% + \pgfpointdiff{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}% + \pgf@xa=\pgf@x + \pgf@ya=\pgf@y + % to convert from pt to cm + \pgfmathparse{veclen(\pgf@xa,\pgf@ya)/28.45274}% + \global\let\MaLongueurTmp\pgfmathresult% +} +\makeatother +% Récupération de l'unité x (cf https://tex.stackexchange.com/questions/424785/tikz-get-current-unit-length-of-x-coordinate) +\def\recupunitexencm{ + \path let \p{x}=(1,0), \n{xlencm}={scalar(veclen(\x{x},\y{x})/1cm)} + in \pgfextra{\xdef\TmpUniteX{\n{xlencm}}}; +} + +\defKV[CompasGeom]{% + Echelle=\def\COMPASechelle{#1},% + EchelleCrayon=\def\COMPASechellecrayon{#1},% + LongueurBranches=\def\COMPASLLB{#1},% + LongueurCrayon=\def\COMPASLLC{#1},% + CouleurCompas=\def\COMPAScouleur{#1},% + CouleurCrayon=\def\COMPAScouleurcrayon{#1},% + UniteTikz=\def\COMPASunittikz{#1} +} + +\setKVdefault[CompasGeom]{% + Echelle=1,% + EchelleCrayon=1,% + LongueurBranches=6,% + LongueurCrayon=5,% + CouleurCrayon=red,% + CouleurCompas=gray,% + UniteTikz=\TmpUniteX,% + AfficheCrayon=true,% + Retourne=false +} + +\NewDocumentCommand{\tkzCompas}{ s O{} m m }{%étoilée en gardant la distance entre extrémités + \IfBooleanTF{#1}{}{\NodeTmpDist{#3}{#4}}% + \useKVdefault[CompasGeom]% + \setKV[CompasGeom]{#2}% + %calculs intermédiaires + \recupunitexencm + \NodeTmpAngle{#3}{#4}% + \pgfmathsetmacro{\AngleCP}{asin(\MaLongueurTmp/(\COMPASunittikz*\COMPASechelle*2*\COMPASLLB))} + %retour aux affaires + \ifboolKV[CompasGeom]{Retourne} + {\def\CoeffYscale{-1}}{\def\CoeffYscale{1}} + \begin{scope}[shift=(#3),scale=\COMPASechelle] + \begin{scope}[join=round,rotate=\MonAngleTmp,yscale=\CoeffYscale,shift=(270-\AngleCP:-\COMPASLLB)] + % branche pointe sèche + \draw[rotate=-\AngleCP,fill=\COMPAScouleur!80] (0,0)--(0,-\COMPASLLB)--(-.2,-\COMPASLLB+.8)--(-.2,0)--cycle ; + \draw[rotate=-\AngleCP,fill=\COMPAScouleur!05] (0,-\COMPASLLB+.8)--(0,-\COMPASLLB)--(-.2,-\COMPASLLB+.8)--cycle ; + % branche crayon + \draw[rotate=\AngleCP,fill=\COMPAScouleur!80] (0,0)--(0,-\COMPASLLB)--(.2,-\COMPASLLB+.8)--(.2,0)--cycle ; + \begin{scope}[rotate=\AngleCP,shift={(0,-\COMPASLLB)}] + \ifboolKV[CompasGeom]{AfficheCrayon} + {\tkzCrayon[Echelle={\COMPASechellecrayon*0.75},Longueur={\COMPASLLC/0.75},Rotation=-15,Couleur=\COMPAScouleurcrayon]}{} + \draw[fill=gray!25] (\COMPASLLB/30,\COMPASLLB/5) circle (\COMPASLLB/36) ; + \fill[\COMPAScouleur!5] (\COMPASLLB/30,\COMPASLLB/5) -- ++(30:\COMPASLLB/36) arc (30:45:\COMPASLLB/36) -- cycle ; + \fill[\COMPAScouleur!5] (\COMPASLLB/30,\COMPASLLB/5) -- ++(210:\COMPASLLB/36) arc (210:225:\COMPASLLB/36) ; + \draw (\COMPASLLB/30,\COMPASLLB/5) circle (\COMPASLLB/36) ; + \filldraw (\COMPASLLB/30,\COMPASLLB/5) circle (.02) ; + \end{scope} + % haut du compas + \draw[fill=\COMPAScouleur!80] (-.1,0) rectangle (.1,.85) ; + \draw[fill=gray!25] (0,0) circle (.25) ; + \fill[gray!5] (0,0) -- (30:.25) arc (30:45:.25) -- cycle ; + \fill[gray!5,rotate=180] (0,0) -- (30:.25) arc (30:45:.25) -- cycle ; + \draw (0,0) circle (.25) ; + \filldraw (0,0) circle (.05) ; + \end{scope} + \end{scope} +} + +%--------MiniÉquerre +\defKV[MiniEquerreGeom]{% + Echelle=\def\MiniEQechelle{#1},% + Couleur=\def\MiniEQcouleur{#1},% + Origine=\def\MiniEQposOrigin{#1},% + Rotation=\def\MiniEQangle{#1} +} + +\setKVdefault[MiniEquerreGeom]{% + Echelle=1,% + Couleur=black,% + Origine={(0,0)},% + Rotation=0,% + Ombre=true +} + +\NewDocumentCommand{\tkzMiniEquerre}{ O{} }{% + \useKVdefault[MiniEquerreGeom]% + \setKV[MiniEquerreGeom]{#1}% + \begin{scope}[shift={(\MiniEQposOrigin)},rotate=\MiniEQangle,scale=\MiniEQechelle] + \ifboolKV[MiniEquerreGeom]{Ombre}% + {% + \begin{scope} + \clip (0,0)--(1,0)--(0,1.8)--cycle; + \filldraw[draw=none,fill=\MiniEQcouleur!10] (0,0) rectangle (1,2.5pt); + \filldraw[draw=none,fill=\MiniEQcouleur!10] (0,0) rectangle (2.5pt,2); + \end{scope} + }{}% + \draw[semithick,\MiniEQcouleur] (0,0)--(1,0)--(0,1.8)--cycle; + \draw[semithick,\MiniEQcouleur] (0.2,0.2)--(0.65,0.2)--(0.2,1)--cycle; + \foreach \x in {0,0.1,...,1} {\draw[\MiniEQcouleur] (\x,0)--++(0,1.5pt) ;} + \foreach \x in {0,0.5} {\draw[\MiniEQcouleur] (\x,0)--++(0,2pt) ;} + \foreach \y in {0,0.1,...,1.7} {\draw[\MiniEQcouleur] (0,\y)--++(1.5pt,0) ;} + \foreach \y in {0,0.5,1,1.5} {\draw[\MiniEQcouleur] (0,\y)--++(2pt,0) ;} + \end{scope} +} + +%--------MiniRègle +\defKV[MiniRegleGeom]{% + Echelle=\def\MiniREGLechelle{#1},% + Couleur=\def\MiniREGLcouleur{#1},% + Origine=\def\MiniREGLposOrigin{#1},% + Rotation=\def\MiniREGLangle{#1} +} + +\setKVdefault[MiniRegleGeom]{% + Echelle=1,% + Couleur=black,% + Origine={(0,0)},% + Rotation=0,% + Ombre=true +} + +\NewDocumentCommand{\tkzMiniRegle}{ O{} }{% + \useKVdefault[MiniRegleGeom]% + \setKV[MiniRegleGeom]{#1}% + \begin{scope}[shift={(\MiniREGLposOrigin)},rotate=\MiniREGLangle,scale=\MiniREGLechelle] + \ifboolKV[MiniRegleGeom]{Ombre}% + {\filldraw[draw=none,fill=\MiniREGLcouleur!10] (0,0) rectangle (2,-2.5pt) ;}{}% + \draw[semithick,\MiniREGLcouleur] (0,0)--(2,0)--(2,-0.3)--(0,-0.3)--cycle ; + \draw[semithick,\MiniREGLcouleur] (0.35,-0.185) circle[radius=0.05] ; + \foreach \y in {0,0.1,...,2} {\draw[\MiniREGLcouleur] (\y,0)--++(0,-1.5pt) ;} + \foreach \y in {0,0.5,...,2} {\draw[\MiniREGLcouleur] (\y,0)--++(0,-2pt) ;} + \end{scope} +} + +\endinput
\ No newline at end of file |