diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex | 132 |
1 files changed, 81 insertions, 51 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex index 9075bff11a3..d255a1713bd 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex @@ -1,5 +1,5 @@ % tkz-tools-eu-points-by.tex -% Copyright 2020 Alain Matthes +% Copyright 2022 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. @@ -7,51 +7,45 @@ % 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. -% utf8 encoding -\def\fileversion{3.06c} -\def\filedate{2020/03/18} -\typeout{2020/03/18 3.06c tkz-tools-eu-points-by.tex} + +\def\fileversion{4.00} +\def\filedate{2022/01/04} +\typeout{2022/01/04 4.00 tkz-tools-el-points-by.tex} \makeatletter %<--------------------------------------------------------------------------–> % Transformations Géométriques %<--------------------------------------------------------------------------–> \def\tkz@numtrsf{0} \pgfkeys{/tkzDefPointBy/.cd, -translation/.code args={from #1 to #2}{% - \def\tkzfrom{#1}% - \def\tkzto{#2}% - \def\tkz@numtrsf{0}}, - homothety/.code args={center #1 ratio #2}{% - \def\tkzcenter{#1}% - \def\tkzratio{#2}% - \def\tkz@numtrsf{1}}, - reflection/.code args={over #1--#2}{% - \def\tkzdeb{#1}% - \def\tkzfin{#2}% - \def\tkz@numtrsf{2}}, - symmetry/.code args={center #1}{% - \def\tkzcenter{#1}% - \def\tkz@numtrsf{3}}, - projection/.code args={onto #1--#2}{% - \def\tkzdeb{#1}% - \def\tkzfin{#2}% - \def\tkz@numtrsf{4}}, - rotation/.code args={center #1 angle #2}{% - \def\tkzcenter{#1}% - \def\tkzangle{#2}% - \def\tkz@numtrsf{5}}, - rotation in rad/.code args={center #1 angle #2}{% - \def\tkzcenter{#1}% - \def\tkzangle{#2}% - \def\tkz@numtrsf{6}}, -inversion/.code args={center #1 through #2}{% - \def\tkzcenter{#1}% - \def\tkzpoint{#2}% - \def\tkz@numtrsf{7}} + translation/.code args={from #1 to #2}{ \def\tkzfrom{#1}% + \def\tkzto{#2}% + \def\tkz@numtrsf{0}}, + homothety/.code args={center #1 ratio #2}{ \def\tkzcenter{#1}% + \def\tkzratio{#2}% + \def\tkz@numtrsf{1}}, + reflection/.code args={over #1--#2}{ \def\tkzdeb{#1}% + \def\tkzfin{#2}% + \def\tkz@numtrsf{2}}, + symmetry/.code args={center #1}{ \def\tkzcenter{#1}% + \def\tkz@numtrsf{3}}, + projection/.code args={onto #1--#2}{ \def\tkzdeb{#1}% + \def\tkzfin{#2}% + \def\tkz@numtrsf{4}}, + rotation/.code args={center #1 angle #2}{ \def\tkzcenter{#1}% + \def\tkzangle{#2}% + \def\tkz@numtrsf{5}}, + rotation in rad/.code args={center #1 angle #2}{ \def\tkzcenter{#1}% + \def\tkzangle{#2}% + \def\tkz@numtrsf{6}}, + inversion/.code args={center #1 through #2}{ \def\tkzcenter{#1}% + \def\tkzpoint{#2}% + \def\tkz@numtrsf{7}}, + inversion negative/.code args={center #1 through #2}{ \def\tkzcenter{#1}% + \def\tkzpoint{#2}% + \def\tkz@numtrsf{8}} +% inversion négative ? } %<--------------------------------------------------------------------------–> \def\tkzDefPointBy{\pgfutil@ifnextchar[{\tkz@DefPointBy}{\tkz@DefPointBy[]}} @@ -75,6 +69,8 @@ inversion/.code args={center #1 through #2}{% \tkzURotateInRad(\tkzcenter,\tkzangle)(#2) \or% 7 \tkzUInversePoint(\tkzcenter,\tkzpoint)(#2) +\or% 8 + \tkzUInverseNegativePoint(\tkzcenter,\tkzpoint)(#2) \fi \endgroup } @@ -93,13 +89,15 @@ inversion/.code args={center #1 through #2}{% \or% 3 \tkzCSym(\tkzcenter)(#2){#3} \or% 4 - \tkzProjection(\tkzdeb,\tkzfin)(#2){#3} + \tkzProjection(\tkzdeb,\tkzfin)(#2){#3} \or% 5 \tkzRotateAngle(\tkzcenter,\tkzangle)(#2){#3} \or% 6 \tkzRotateInRad(\tkzcenter,\tkzangle)(#2){#3} \or% 7 \tkzInversePoint(\tkzcenter,\tkzpoint)(#2){#3} + \or% 8 + \tkzInverseNegativePoint(\tkzcenter,\tkzpoint)(#2){#3} \fi \endgroup } @@ -235,7 +233,7 @@ inversion/.code args={center #1 through #2}{% \pgfinterruptboundingbox \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); \tkzInterLL(#1,#2)(#3,tkz@point)% définit tkzPointResult - \endpgfinterruptboundingbox + \endpgfinterruptboundingbox \endgroup } %<--------------------------------------------------------------------------–> @@ -334,9 +332,9 @@ inversion/.code args={center #1 through #2}{% {#2} \tkz@bx\pgf@x% \tkz@by\pgf@y% - \pgfinterruptboundingbox - \path (\tkz@bx,\tkz@by) coordinate (tkzPointResult);% - \endpgfinterruptboundingbox + \pgfinterruptboundingbox + \path (\tkz@bx,\tkz@by) coordinate (tkzPointResult);% + \endpgfinterruptboundingbox \endgroup } %<--------------------------------------------------------------------------–> @@ -405,19 +403,51 @@ inversion/.code args={center #1 through #2}{% \else \xdef\tkz@pointtsf{\tkz@FirstPoint} \fi - \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna} - \tkzCalcLength[cm](#1,\PointIP)\tkzGetLength{tkz@lnb} - \edef\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna} - \tkzVecKNorm[\tkz@lnb](#1,\PointIP) - } + \tkz@@CalcLengthcm(#1,#2){tkz@lna} + \tkz@@CalcLengthcm(#1,\PointIP){tkz@lnb} + \edef\tkz@lnc{\fpeval{\tkz@lna/\tkz@lnb*\tkz@lna}} + \tkzVecKNorm[\tkz@lnc](#1,\PointIP) + \pgfnodealias{\tkz@pointtsf}{tkzPointResult} + } \endgroup } \def\tkzUInversePoint(#1,#2)(#3){% \begingroup - \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}% - \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}% - \edef\tkz@lnc{\fpeval{\tkz@lna/\tkz@lnb*\tkz@lna}} + \tkz@@CalcLengthcm(#1,#2){tkz@lna}% + \tkz@@CalcLengthcm(#1,#3){tkz@lnb}% + \edef\tkz@lnc{\fpeval{\tkz@lna/\tkz@lnb*\tkz@lna}} + \tkzVecKNorm[\tkz@lnc](#1,#3) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Inverse negative of a point +%<--------------------------------------------------------------------------–> +\def\tkzInverseNegativePoint(#1,#2)(#3)#4{% +\begingroup +\gdef\tkz@LastList{#4} + \foreach\PointIP in {#3}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \xdef\tkz@pointtsf{\PointIP '} + \else + \xdef\tkz@pointtsf{\tkz@FirstPoint} + \fi + \tkz@@CalcLengthcm(#1,#2){tkz@lna} + \tkz@@CalcLengthcm(#1,\PointIP){tkz@lnb} + \edef\tkz@lnc{\fpeval{\tkz@lna/\tkz@lnb*\tkz@lna}} + \tkzVecKNorm[\tkz@lnc](#1,\PointIP) + \tkzUCSym(#1)(tkzPointResult) + \pgfnodealias{\tkz@pointtsf}{tkzPointResult} + } +\endgroup +} +\def\tkzUInverseNegativePoint(#1,#2)(#3){% +\begingroup + \tkz@@CalcLengthcm(#1,#2){tkz@lna}% + \tkz@@CalcLengthcm(#1,#3){tkz@lnb}% + \edef\tkz@lnc{\fpeval{\tkz@lna/\tkz@lnb*\tkz@lna}} \tkzVecKNorm[\tkz@lnc](#1,#3) + \tkzUCSym(#1)(tkzPointResult) \endgroup } %<--------------------------------------------------------------------------–> |