From 4ce6f5f9c360b21c85e05cf51a20445a33aba4cc Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 24 Jan 2020 21:43:02 +0000 Subject: tkz-euclide (24jan20) git-svn-id: svn://tug.org/texlive/trunk@53531 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/tkz-euclide/tkz-obj-eu-show.tex | 344 +++++++++++++++++++++ 1 file changed, 344 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex (limited to 'Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex') diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex new file mode 100644 index 00000000000..457fbed257a --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex @@ -0,0 +1,344 @@ +%tkz-obj-eu-show.tex +% Copyright 2011 by Alain Matthes +% This file may be distributed and/or modified +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c 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[#1](\tkz@frompoint,tkzFirstPointResult) + \tkzCompass[#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, + /compass/\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[#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@1) + \tkzCompass[#1](#3,MED@1) + \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@2) + \tkzCompass[#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[#1](#4,tkz@lltmp) + \tkzCompass[#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} % ???? +\pgfkeys{show/.cd,#1} %???? + \tkzVecKOrth(#2,#3) + \pgfnodealias{tkz@OLtmp}{tkzPointResult} + \tkz@VecKCoLinear[1](#2,tkz@OLtmp,#4) + \pgfnodealias{tkzPointCo}{tkzPointResult} + \tkzInterLL(#2,#3)(#4,tkzPointCo) + \pgfnodealias{tkzPOpoint}{tkzPointResult} + \tkzCalcLength(#4,tkzPOpoint) + \tkzGetLength{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[2](tkzPOpoint,PO@tmp1,tkzPOpoint) + \pgfnodealias{PO@1}{tkzPointResult} + \tkz@VecKCoLinear[2](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[#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@1) + \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@2) + \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](PO@1,PO@3) + \tkzCompass[#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[#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@1) + \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@2) + \tkzCompass[#1,length=\tkz@show@length](BI@1,tkzBisPoint) + \tkzCompass[#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, + /compass/\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[#1](#4,tkz@lltmp) +\tkzCompass[#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[#1](#2,#4) + \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,#4) + \tkzCompass[#1](#2,tkz@pointtsf) + \tkzCompass[#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[#1](#2,tkz@pointtsf) + \tkzCompass[#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[#1](#4,SO@1) + \tkzCompass[#1](#4,SO@2) + \tkzCompass[#1](SO@1,SO@3) + \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](SO@2,SO@3) +\endgroup +} +%<-------------------------------------------------------------------------–> +%<-------------------------------------------------------------------------–> + +\makeatother +\endinput \ No newline at end of file -- cgit v1.2.3