summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-show.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-show.tex')
-rw-r--r--macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-show.tex347
1 files changed, 347 insertions, 0 deletions
diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-show.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-show.tex
new file mode 100644
index 0000000000..2f5d97bc98
--- /dev/null
+++ b/macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-show.tex
@@ -0,0 +1,347 @@
+%tkz-obj-eu-show.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-show.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% finding specific points in a triangle
+%<--------------------------------------------------------------------------–>
+% equi points
+%<--------------------------------------------------------------------------–>
+% draw ? show ?
+\pgfkeys{/tkzEquiPt/.cd,
+ from/.store in = {\tkz@frompoint},
+ dist/.store in = {\tkz@equ@dist},
+ show/.is if = tkz@equi@show,
+ dist = 2,
+ show = false,
+ /tkzEquiPt/.search also={/tikz}
+}
+
+\def\tkzDefEquiPoints{\pgfutil@ifnextchar[{\tkz@DefEquiPoints}{%
+ \tkz@DefEquiPoints[]}}
+\def\tkz@DefEquiPoints[#1](#2,#3){%
+\pgfqkeys{/tkzEquiPt}{#1}
+\begingroup
+ \tkzUProjection(#2,#3)(\tkz@frompoint)
+ \pgfnodealias{tkzEQpoint}{tkzPointResult}
+ \tkzVecKNorm[\tkz@equ@dist](tkzEQpoint,#2)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzVecKNorm[-\tkz@equ@dist](tkzEQpoint,#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \iftkz@equi@show
+ \tkzCompass[compass style,#1](\tkz@frompoint,tkzFirstPointResult)
+ \tkzCompass[compass style,#1](\tkz@frompoint,tkzSecondPointResult)
+ \fi
+\endgroup
+}
+
+%<--------------------------- The SHOW --------------------------------–>
+%<--------------------------------------------------------------------------–>
+\global\def\tkz@numsh{0}
+\pgfkeys{/show/.cd,
+ mediator/.code = \def\tkz@numsh{0},
+ perpendicular/.code args = {through #1} {\global\def\tkz@numsh{1}%
+ \def\tkz@through{#1}},
+ orthogonal/.code args = {through #1} {\global\def\tkz@numsh{1}%
+ \global\def\tkz@through{#1}},
+ parallel/.code args = {through #1} {\global\def\tkz@numsh{2}%
+ \global\def\tkz@through{#1}},
+ bisector/.code = \global\def\tkz@numsh{3},
+ K/.code = \def\tkz@koeff{#1},
+ length/.code = \def\tkz@show@length{#1},
+ ratio/.code = \def\tkz@show@ratio{#1},
+ gap/.code = \def\tkz@show@gap{#1},
+ size/.code = \def\tkz@show@size{#1},
+ /show/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1,
+ /tkzcompass/\searchname/.retry=#1,
+ /tikz/\searchname/.retry=#1}%
+ }
+ }
+\def\tkzShowLine{\pgfutil@ifnextchar[{\tkz@ShowLine}{\tkz@ShowLine[]}}
+\def\tkz@ShowLine[#1](#2){%
+\begingroup
+\pgfqkeys{/show}{ K = 1,
+ gap = 2,
+ ratio = .5,
+ length = 1,
+ size = 1
+ }
+\pgfqkeys{/show}{#1}
+\ifcase\tkz@numsh%
+ % first case 0
+ \tkzShowMediatorLine[#1](#2)
+ \or% 1
+ \tkzShowOrthLine[#1](#2)(\tkz@through)
+ \or% 2
+ \tkzShowLLLine[#1](#2)(\tkz@through)
+ \or% 3
+ \tkzShowBisectorLine[#1](#2)
+\fi
+\endgroup
+}
+
+\def\tkzShowMediatorLine{%
+ \pgfutil@ifnextchar[{\tkz@ShowMediatorLine}{\tkz@ShowMediatorLine[]}}
+\def\tkz@ShowMediatorLine[#1](#2,#3){%
+\begingroup
+\pgfkeys{show/.cd, gap = 2,
+ ratio = .5,
+ length = 1
+ }
+\pgfkeys{show/.cd,#1}
+ \path (#2) -- (#3) coordinate[pos=.5](tkzmidpoint);
+ \tkzURotateAngle(#2,60)(#3)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzURotateAngle(#3,60)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkz@VecKOrthNorm[1](tkzmidpoint,#2)
+ \pgfnodealias{MED@tmp1}{tkzPointResult}
+ \tkz@VecKOrthNorm[1](tkzmidpoint,#3)
+ \pgfnodealias{MED@tmp2}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp1)
+ \pgfnodealias{MED@1}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp2)
+ \pgfnodealias{MED@2}{tkzPointResult}
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@1)
+ \tkzCompass[compass style,#1](#3,MED@1)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@2)
+ \tkzCompass[compass style,#1](#3,MED@2)
+\endgroup
+}
+
+\def\tkzShowLLLine{\pgfutil@ifnextchar[{\tkz@ShowLLLine}{\tkz@ShowLLLine[]}}
+\def\tkz@ShowLLLine[#1](#2,#3)(#4){%
+\begingroup
+\pgfkeys{show/.cd,gap=2,ratio=.75,length=1}
+\pgfkeys{show/.cd,#1}
+ \tkz@VecKCoLinear[1](#2,#3,#4)
+ \pgfnodealias{tkz@lltmp}{tkzPointResult}
+ \tkzCompass[compass style,#1](#4,tkz@lltmp)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@lltmp)
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% tkzLineOrth
+%<--------------------------------------------------------------------------–>
+% pas de projection ortho car le point peut être sur la droite.
+% manque les tests . Il faudrait voir si on peut projeter et choisir
+\def\tkzShowOrthLine{\pgfutil@ifnextchar[{\tkz@ShowOrthLine}{\tkz@ShowOrthLine[]}}
+\def\tkz@ShowOrthLine[#1](#2,#3)(#4){%
+\begingroup
+\pgfkeys{show/.cd,
+ ratio = .75,
+ length = 1,
+ gap = -1,
+ size = 1}
+\pgfkeys{show/.cd,#1}
+ \tkzDefPointWith(#2,#3)
+ \pgfnodealias{tkz@OLtmp}{tkzPointResult}
+ \tkz@VecKCoLinear[1](#2,tkz@OLtmp,#4)
+ \pgfnodealias{tkzPointCo}{tkzPointResult}
+ \tkzInterLL(#2,#3)(#4,tkzPointCo)
+ \pgfnodealias{tkzPOpoint}{tkzPointResult}
+ \tkz@@CalcLength(#4,tkzPOpoint){tkz@mathLen}
+ \tkz@VecKNorm[1](#2,#3)
+ \pgfnodealias{PO@tmp}{tkzPointResult}
+ \tkz@VecKCoLinear[1](#2,PO@tmp,tkzPOpoint)
+ \pgfnodealias{PO@tmp2}{tkzPointResult}
+ \tkz@VecKCoLinear[-1](#2,PO@tmp,tkzPOpoint)
+ \pgfnodealias{PO@tmp1}{tkzPointResult}
+ \tkz@VecKCoLinear[\tkz@show@size](tkzPOpoint,PO@tmp1,tkzPOpoint)
+ \pgfnodealias{PO@1}{tkzPointResult}
+ \tkz@VecKCoLinear[\tkz@show@size](tkzPOpoint,PO@tmp2,tkzPOpoint)
+ \pgfnodealias{PO@2}{tkzPointResult}
+ \ifdim\tkz@mathLen pt>10 pt\relax
+ \tkz@VecKNorm[1](#4,tkzPOpoint)
+ \pgfnodealias{PO@tmp1}{tkzPointResult}
+ \else
+ \tkz@VecKOrthNorm[1](tkzPOpoint,PO@2)
+ \pgfnodealias{PO@tmp1}{tkzPointResult}
+ \fi
+ \tkz@VecKCoLinear[-\tkz@show@gap](PO@tmp1,tkzPOpoint,tkzPOpoint)
+ \pgfnodealias{PO@3}{tkzPointResult}
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@1)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@2)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio *\tkz@show@length](PO@1,PO@3)
+ \tkzCompass[compass style,#1,length=\tkz@show@length](PO@2,PO@3)
+\endgroup
+}
+%<-------------------------------------------------------------------------–>
+% bisector Line
+%<-------------------------------------------------------------------------–>
+\def\tkzShowBisectorLine{%
+ \pgfutil@ifnextchar[{\tkz@ShowBisectorLine}{\tkz@ShowBisectorLine[]}}
+\def\tkz@ShowBisectorLine[#1](#2,#3,#4){%
+\begingroup
+\pgfkeys{show/.cd, gap = 2,
+ ratio =. 5,
+ length = 1,
+ size = 1
+ }
+\pgfkeys{show/.cd,#1}
+ \tkzVecKNorm(#3,#2)
+ \pgfnodealias{tkz@pt1}{tkzPointResult}
+ \tkzVecKNorm(#3,#4)
+ \pgfnodealias{tkz@pt2}{tkzPointResult}
+ \tkzDefMidPoint(tkz@pt1,tkz@pt2)
+ \pgfnodealias{tkz@pt3}{tkzPointResult}
+ \tkzDefEquilateral(tkz@pt2,tkz@pt1)
+ \pgfnodealias{tkz@pt4}{tkzPointResult}
+ \tkzDefMidPoint(tkz@pt3,tkz@pt4)
+ \pgfnodealias{tkz@ptm}{tkzPointResult}
+ \tkzVecKNorm(#3,tkz@ptm)
+ \pgfnodealias{tkzBisPoint}{tkzPointResult}
+ \tkzVecKNorm[\tkz@show@size](#3,#2)
+ \pgfnodealias{BI@1}{tkzPointResult}
+ \tkzVecKNorm[\tkz@show@size](#3,#4)
+ \pgfnodealias{BI@2}{tkzPointResult}
+ \tkzVecK[\tkz@show@gap](#3,tkzBisPoint)
+ \pgfnodealias{tkzBisPoint}{tkzPointResult}
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@1)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@2)
+ \tkzCompass[compass style,#1,length=\tkz@show@length](BI@1,tkzBisPoint)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio *\tkz@show@length](BI@2,tkzBisPoint)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Transformations Géométriques
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% The SHOW
+%<--------------------------------------------------------------------------–>
+\def\tkz@numst{0}
+\pgfkeys{/showtsf/.cd,
+ reflection/.code args={over #1--#2}{%
+ \def\tkzdeb{#1}
+ \def\tkzfin{#2}
+ \def\tkz@numst{0}},
+ symmetry/.code args={center #1}{%
+ \def\tkzcenter{#1}
+ \def\tkz@numst{1}},
+ projection/.code args={onto #1--#2}{%
+ \def\tkzdeb{#1}
+ \def\tkzfin{#2}
+ \def\tkz@numst{2}},
+translation/.code args={from #1 to #2}{%
+ \def\tkzfrom{#1}%
+ \def\tkzto{#2}%
+ \def\tkz@numst{3}},
+ K/.code = \def\tkz@koeff{#1},
+ length/.code = \def\tkz@show@length{#1},
+ ratio/.code = \def\tkz@show@ratio{#1},
+ gap/.code = \def\tkz@show@gap{#1},
+ size/.code = \def\tkz@show@size{#1},
+/showtsf/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1,
+ /tkzcompass/\searchname/.retry=#1,
+ /tikz/\searchname/.retry=#1}}
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowTransformation{\pgfutil@ifnextchar[{\tkz@ShowTransformation}{%
+ \tkz@ShowTransformation[]}}
+\def\tkz@ShowTransformation[#1](#2){%
+\begingroup
+ \pgfqkeys{/showtsf}{K=1,gap=2,size=1,ratio=.5,length=1}
+ \pgfqkeys{/showtsf}{#1}
+ \pgfinterruptboundingbox
+\ifcase\tkz@numst%
+ % first case 0
+ \tkzShowSymOrth[#1](\tkzdeb,\tkzfin)(#2)
+ \or% 1
+ \tkzShowCSym[#1](\tkzcenter)(#2)
+ \or% 2
+ \tkzShowProjection[#1](\tkzdeb,\tkzfin)(#2)
+ \or% 3
+ \tkzShowTranslation[#1](\tkzfrom,\tkzto)(#2)
+ \fi
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowTranslation{\pgfutil@ifnextchar[{\tkz@ShowTranslation}{%
+ \tkz@ShowTranslation[]}}
+
+\def\tkz@ShowTranslation[#1](#2,#3)(#4){%
+\begingroup
+\tkz@VecKCoLinear[1](#2,#3,#4) \pgfnodealias{tkz@lltmp}{tkzPointResult}
+\tkzCompass[compass style,#1](#4,tkz@lltmp)
+\tkzCompass[compass style,#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@lltmp)
+\endgroup}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowSymOrth{\pgfutil@ifnextchar[{\tkz@ShowSymOrth}{%
+ \tkz@ShowSymOrth[]}}
+\def\tkz@ShowSymOrth[#1](#2,#3)(#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz@ax =\pgf@y%
+ \tkz@ay =\pgf@x%
+ \path[coordinate](#4)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
+ \tkzInterLL(#2,#3)(#4,tkz@point)
+ \pgfnodealias{tkzPointofSym}{tkzPointResult}
+ \tkz@VecK[2](#4,tkzPointofSym)
+ \pgfnodealias{tkz@pointtsf}{tkzPointResult}
+ \tkzCompass[compass style,#1](#2,#4)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio*\tkz@show@length](#3,#4)
+ \tkzCompass[compass style,#1](#2,tkz@pointtsf)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@pointtsf)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowCSym{\pgfutil@ifnextchar[{\tkz@ShowCSym}{\tkz@ShowCSym[]}}
+
+\def\tkz@ShowCSym[#1](#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz@ax=\pgf@x%
+ \tkz@ay=\pgf@y%
+\path[coordinate](#2)--++(-\tkz@ax,-\tkz@ay) coordinate (tkz@pointtsf);
+ \tkzCompass[compass style,#1](#2,tkz@pointtsf)
+ \tkzCompass[compass style,#1](#2,#3)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowProjection{\pgfutil@ifnextchar[{\tkz@ShowProjection}{%
+ \tkz@ShowProjection[]}}
+\def\tkz@ShowProjection[#1](#2,#3)(#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz@ax =\pgf@y%
+ \tkz@ay =\pgf@x%
+ \path[coordinate](#4)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
+ \tkzInterLL(#2,#3)(#4,tkz@point)
+ \pgfnodealias{tkz@pointtsf}{tkzPointResult}
+ \tkz@VecKCoLinear[1](#2,#3,tkz@pointtsf)
+ \pgfnodealias{SO@tmp1}{tkzPointResult}
+ \tkz@VecKCoLinear[-1](#2,#3,tkz@pointtsf)
+ \pgfnodealias{SO@tmp2}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp1)
+ \pgfnodealias{SO@1}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp2)
+ \pgfnodealias{SO@2}{tkzPointResult}
+ \tkz@VecKNorm[-\tkz@show@gap](tkz@pointtsf,#4)
+ \pgfnodealias{SO@3}{tkzPointResult}
+ \tkzCompass[compass style,#1](#4,SO@1)
+ \tkzCompass[compass style,#1](#4,SO@2)
+ \tkzCompass[compass style,#1](SO@1,SO@3)
+ \tkzCompass[compass style,#1,length=\tkz@show@ratio*\tkz@show@length](SO@2,SO@3)
+\endgroup
+}
+\makeatother
+\endinput \ No newline at end of file