diff options
Diffstat (limited to 'Master/texmf-dist/tex')
29 files changed, 4261 insertions, 2751 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty index 29111bf7c4c..9a611c9943f 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty @@ -1,20 +1,23 @@ +% tkz-euclide.sty % 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-euclide.sty} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tkz-euclide}[2011/06/01 1.16 c for plots 2d ] +\ProvidesPackage{tkz-euclide}[2020/01/23 3.01c for euclidan geometry ] \RequirePackage{tkz-base} -%<--------------------------------------------------------------------------–> +\DeclareOption*{}%% Ne rien faire quand une option est inconnue +\ProcessOptions +%<----------------------------------------------------------–> % Initialisation -%<--------------------------------------------------------------------------–> +%<----------------------------------------------------------–> \input{tkz-tools-intersections} -\input{tkz-tools-transformations} -\input{tkz-obj-lines} -\input{tkz-lib-symbols} -\input{tkz-obj-circles} -\input{tkz-obj-addpoints} +\input{tkz-tools-angles} +\usetkzobj{eu-angles,eu-arcs,eu-compass,eu-circles,eu-draw-circles,eu-lines,eu-draw-lines,eu-points,eu-points-by,eu-points-rnd,eu-points-with,eu-draw-polygons,eu-polygons,eu-protractor,eu-sectors,eu-show,eu-triangles} \endinput diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-symbols.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-symbols.tex deleted file mode 100644 index bb8e29f8fad..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-symbols.tex +++ /dev/null @@ -1,108 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - -%<--------------------------------------------------------------------------–> -% Création des symboles -%<--------------------------------------------------------------------------–> -\def\tkz@undefined{none} -% double bar -\pgfdeclareplotmark{||} -{% - \pgfpathmoveto{\pgfqpoint{2\pgflinewidth}{\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{-\pgfplotmarksize}} - \pgfpathmoveto{\pgfqpoint{-2\pgflinewidth}{\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{-2\pgflinewidth}{-\pgfplotmarksize}} - \pgfusepathqstroke -} -%triple bar -\pgfdeclareplotmark{|||} -{% - \pgfpathmoveto{\pgfqpoint{0 pt}{\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{0 pt}{-\pgfplotmarksize}} - \pgfpathmoveto{\pgfqpoint{-3\pgflinewidth}{\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{-3\pgflinewidth}{-\pgfplotmarksize}} - \pgfpathmoveto{\pgfqpoint{3\pgflinewidth}{\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{3\pgflinewidth}{-\pgfplotmarksize}} - \pgfusepathqstroke -} -% An bar slant - -\pgfdeclareplotmark{s|} -{% - \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}% - {-.70710678\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}% - {.70710678\pgfplotmarksize}} - \pgfusepathqstroke -} - -% An double bar slant - -\pgfdeclareplotmark{s||} -{% - \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}} - \pgfpathmoveto{\pgfqpoint{0\pgfplotmarksize}{-\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{1\pgfplotmarksize}{\pgfplotmarksize}} - \pgfusepathqstroke -} - -% z -\pgfdeclareplotmark{z} -{% - \pgfpathmoveto{\pgfqpoint{0.75\pgfplotmarksize}{-\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{0.75\pgfplotmarksize}{\pgfplotmarksize}} - \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{\pgfplotmarksize}} - \pgfusepathqstroke -} -% s -\pgfdeclareplotmark{s} -{% - \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} - \pgfpathcurveto - {\pgfpoint{0pt}{0pt}} - {\pgfpoint{-\pgfplotmarksize}{\pgfplotmarksize}} - {\pgfpoint{\pgfplotmarksize}{\pgfplotmarksize}} - \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} - \pgfpathcurveto - {\pgfpoint{0pt}{0pt}} - {\pgfpoint{\pgfplotmarksize}{-\pgfplotmarksize}} - {\pgfpoint{-\pgfplotmarksize}{-\pgfplotmarksize}} - \pgfusepathqstroke -} -% infinity -\pgfdeclareplotmark{oo} -{% - \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} - \pgfpathcurveto - {\pgfpoint{0pt}{0pt}} - {\pgfpoint{.5\pgfplotmarksize}{1\pgfplotmarksize}} - {\pgfpoint{\pgfplotmarksize}{0pt}} - \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} - \pgfpathcurveto - {\pgfpoint{0pt}{0pt}} - {\pgfpoint{-.5\pgfplotmarksize}{1\pgfplotmarksize}} - {\pgfpoint{-\pgfplotmarksize}{0pt}} - \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} - \pgfpathcurveto - {\pgfpoint{0pt}{0pt}} - {\pgfpoint{.5\pgfplotmarksize}{-1\pgfplotmarksize}} - {\pgfpoint{\pgfplotmarksize}{0pt}} - \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} - \pgfpathcurveto - {\pgfpoint{0pt}{0pt}} - {\pgfpoint{-.5\pgfplotmarksize}{-1\pgfplotmarksize}} - {\pgfpoint{-\pgfplotmarksize}{0pt}} - \pgfusepathqstroke -} -\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-addpoints.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-addpoints.tex deleted file mode 100644 index 529040ecaf6..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-addpoints.tex +++ /dev/null @@ -1,159 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - -%<--------------------------------------------------------------------------–> -% Specific points -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% barycentre -%<--------------------------------------------------------------------------–> -\def\tkzDefBarycentricPoint(#1){% - \path[coordinate] (barycentric cs:#1) coordinate (tkzPointResult); -} -\let\tkzDefBCPoint\tkzDefBarycentricPoint -%<--------------------------------------------------------------------------–> -% milieu de deux points %<--------------------------------------------------------------------------–> -% possible \coordinate (#3) at ($(#1)!0.5!(#2)$); -%<--------------------------------------------------------------------------–> -\def\tkzDefMidPoint(#1,#2){\path (#1) -- (#2) coordinate[pos=.5](tkzPointResult);}% -%<--------------------------------------------------------------------------–> - -%<--------------------------------------------------------------------------–> -% OrthoCenter -%<--------------------------------------------------------------------------–> -\def\tkzOrthoCenter(#1,#2,#3){% - \begingroup - \tkzUProjection(#1,#2)(#3)\tkzGetPoint{tkz@oca} - \tkzUProjection(#1,#3)(#2)\tkzGetPoint{tkz@ocb} - \tkzInterLL(#2,tkz@ocb)(#3,tkz@oca) - \endgroup -} -%<--------------------------------------------------------------------------–> -% GravityCenter -%<--------------------------------------------------------------------------–> -\def\tkzCentroid(#1,#2,#3){% - \begingroup - \tkzDefMidPoint(#3,#2)\tkzGetPoint{tkz@mida} - \tkzDefMidPoint(#1,#2)\tkzGetPoint{tkz@midb} - \tkzInterLL(#1,tkz@mida)(#3,tkz@midb)% - \endgroup -} -%<--------------------------------------------------------------------------–> -% CircumCenter -%<--------------------------------------------------------------------------–> -\def\tkzCircumCenter(#1,#2,#3){% - \begingroup - \tkzDefMediatorLine(#1,#2) - \tkzGetPoints{tkz@dir}{tkz@dil} - \tkzDefMediatorLine(#1,#3) - \tkzGetPoints{tkz@diir}{tkz@diil} - \tkzInterLL(tkz@dir,tkz@dil)(tkz@diir,tkz@diil)% - \endgroup -} -%<--------------------------------------------------------------------------–> -% InCenter -%<--------------------------------------------------------------------------–> -\def\tkzInCenter(#1,#2,#3){% -\begingroup - \tkzDefBisectorLine(#3,#1,#2) \tkzGetPoint{tkz@ia} - \tkzDefBisectorLine(#3,#2,#1)\tkzGetPoint{tkz@ib} - \tkzInterLL(#1,tkz@ia)(#2,tkz@ib) -\endgroup -} - -%<--------------------------------------------------------------------------–> -% EulerCenter -%<--------------------------------------------------------------------------–> -\def\tkzEulerCenter(#1,#2,#3){% -\begingroup - \tkzCircumCenter(#1,#2,#3) - \tkzGetPoint{tkz@ca} - \tkzOrthoCenter(#1,#2,#3) - \tkzGetPoint{tkz@cb} - \tkzDefMidPoint(tkz@ca,tkz@cb) - \tkzDrawPoint(tkzPointResult) -\endgroup -} -%<--------------------------------------------------------------------------–> -% Apollonius center -%<--------------------------------------------------------------------------–> -\def\tkzApolloniusCenter(#1,#2){% -\begingroup - \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2){tkzFirstPointResult} - \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2){tkzSecondPointResult} - \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) -\endgroup -} -%<--------------------------------------------------------------------------–> -% Orthogonal center -%<--------------------------------------------------------------------------–> -\def\tkzOrthogonalCenter(#1,#2){% -\begingroup - \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2){tkzFirstPointResult} - \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2){tkzSecondPointResult} - \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) -\endgroup -} -%<--------------------------------------------------------------------------–> -% Internal Similitude center -%<--------------------------------------------------------------------------–> -\def\tkzIntSimilitudeCenter(#1,#2)(#3,#4){% -\begingroup -\path[coordinate] (barycentric cs:#1=#4,#3=#2) coordinate (tkzPointResult); -\endgroup -} -%<--------------------------------------------------------------------------–> -% External Similitude center -%<--------------------------------------------------------------------------–> -\def\tkzExtSimilitudeCenter(#1,#2)(#3,#4){% -\begingroup - \path[coordinate] (barycentric cs:#1=-#4,#3=#2) coordinate (tkzPointResult); -\endgroup -} -%<--------------------------------------------------------------------------–> -% equi points -%<--------------------------------------------------------------------------–> -% draw ? show ? - - -\pgfkeys{ - /tkzEquiPt/.cd, - from/.code = {\def\tkz@frompoint{#1}}, - dist/.code = {\def\tkz@equ@dist{#1}}, - show/.is if = tkz@equi@show, - show/.default = true, - /tkzEquiPt/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /compass/\searchname/.retry=#1, - /tikz/\searchname/.retry=#1}} - } - -\def\tkzDefEquiPoints{\pgfutil@ifnextchar[{\tkz@DefEquiPoints}{% - \tkz@DefEquiPoints[]}} -\def\tkz@DefEquiPoints[#1](#2,#3){% -\pgfkeys{/tkzEquiPt/.cd,dist = 2,show=false} -\pgfqkeys{/tkzEquiPt}{#1} -\begingroup - \tkzProjection(#2,#3)(\tkz@frompoint){tkzEQpoint} - \tkzVecKNorm[\tkz@equ@dist](tkzEQpoint,#2){tkzFirstPointResult} - \tkzVecKNorm[-\tkz@equ@dist](tkzEQpoint,#2){tkzSecondPointResult} - \iftkz@equi@show - \tkzCompass[#1](\tkz@frompoint,tkzFirstPointResult) - \tkzCompass[#1](\tkz@frompoint,tkzSecondPointResult) - \fi -\endgroup -} - -\endinput - - -% tkz@equi@show
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-angles.tex deleted file mode 100644 index a5acdd76c11..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-angles.tex +++ /dev/null @@ -1,332 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - %<-------------------------------------------------------------------------–> -\def\tkzGetAngle#1{% -\global\expandafter\edef\csname #1\endcsname{\tkzAngleResult}} - -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> - -%<--------------------------------------------------------------------------–> -% Angle -% Recherche l'angle formé par #1 et #2 par rapport à l'horizontale -%<--------------------------------------------------------------------------–> -\def\tkzFindSlopeAngle(#1,#2){% -\begingroup -\tkzmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{% - \pgfpointanchor{#2}{center}} -\global\let\tkzAngleResult\pgfmathresult -\endgroup -} -%<--------------------------------------------------------------------------–> -% Angle avec trois nodes -%<--------------------------------------------------------------------------–> -\def\tkzFindAngle(#1,#2,#3){% -\begingroup - \tkzFindSlopeAngle(#2,#1)\tkzGetAngle{tkz@FirstAngle} - \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@SecondAngle} - \FPadd\tkz@Angle{\tkz@SecondAngle}{-\tkz@FirstAngle} - \global\let\tkzAngleResult\tkz@Angle -\endgroup -} -%<--------------------------------------------------------------------------–> -% Find angle -%<--------------------------------------------------------------------------–> -\def\tkzGetAngle#1{% -\global\expandafter\edef\csname #1\endcsname{\tkzAngleResult}} - -%<--------------------------------------------------------------------------–> -% FillAngle -%<--------------------------------------------------------------------------–> -\pgfkeys{/tkzFill/.cd, - size/.code = \global\def\tkz@size{#1}, - /tkzFill/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} -%<--------------------------------------------------------------------------–> -\def\tkzFillAngle{\pgfutil@ifnextchar[{\tkz@FillAngle}{\tkz@FillAngle[]}} -\def\tkz@FillAngle[#1](#2,#3,#4){% -\begingroup -\pgfkeys{tkzFill/.cd,size=0.4 cm} -\pgfqkeys{/tkzFill}{#1} -\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} -\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} -\pgfmathgreaterthan{\tkz@dirOne}{\tkz@dirTwo} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathsubtract{\tkz@dirOne}{360} - \edef\tkz@dirOne{\pgfmathresult}% - \fi - - \path[shift = {(#3)},/tkzFill/.cd,#1]% - (#3) -- (\tkz@dirOne:\tkz@size) arc% - (\tkz@dirOne:\tkz@dirTwo:\tkz@size)--cycle; -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzDrawArcRAN[#1](#2,#3)(#4,#5){% - \begingroup - \pgfmathparse{#4}\edef\tkz@FirstAngle{\pgfmathresult}% - \pgfmathparse{#5}\edef\tkz@SecondAngle{\pgfmathresult}% - \pgfmathgreaterthan{\tkz@FirstAngle}{0} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathsubtract{\tkz@FirstAngle}{360} - \edef\tkz@FirstAngle{\pgfmathresult}% - \fi - \else - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathadd{\tkz@SecondAngle}{360} - \edef\tkz@SecondAngle{\pgfmathresult}% - \fi - \fi - \draw[shift = {(#2)},/drawarc/.cd,#1]% - (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3); -\endgroup -} -%<--------------------------------------------------------------------------–> -% \tkzMarkAngle(B, A, C) -% -% Marque d'angle -% arc de cercle (simple/double/triple) et marque d'églité. -% -% Par défaut: -% arc = simple -% longueur = 1cm (rayon de l'arc) -% style traits pleins -% position: 0.5 (position de la marque) -% mark rien du tout (ignoré si type est utilisé) -% -% Paramètres (optionnels) -% arc : l, ll, lll -% length : 1cm -% gap : 2pt -% style : type de traits -% type : none, |, ||,|||, z, s, x, o, oo -% position: 0.5 -% mark : none , |, ||,|||, z, s, x, o, oo mais tous les -% % symboles de tikz sont permis -%<--------------------------------------------------------------------------–> -\edef\tkz@arcsimple{l} -\edef\tkz@arctriple{lll} -\edef\tkz@arcdouble{ll} -\tikzset{lbstyle/.style ={color=\tkz@mainlinecolor}} - -\pgfkeys{/tkzmkangle/.cd, -mark/.code = {\global\def\tkz@mark{#1}}, -size/.code = {\global\def\tkz@size{#1}}, -mkpos/.code = {\global\edef\tkz@mkpos{#1}}, -mksize/.code = {\global\def\tkz@mksize{#1}}, -mkcolor/.code = {\global\def\tkz@mkcolor{#1}}, -label/.code = {\global\def\tkz@mklabel{#1}}, -arc/.code = {\global\def\tkz@arc{#1}}, -dist/.code = {\global\def\tkz@dist{#1}}, -label style/.code = {\tikzset{lbstyle/.append style ={#1}}}, -/tkzmkangle/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1} - } -} \def\tkzMarkAngle{\pgfutil@ifnextchar[{\tkz@MarkAngle}{\tkz@MarkAngle[]}} -\def\tkz@MarkAngle[#1](#2,#3,#4){% -\begingroup -\pgfkeys{tkzmkangle/.cd, - arc = l, - size = 1, - mksize = 4pt, - mkcolor = \tkz@mainlinecolor, - mkpos = 0.5, - mark = none, - dist = 1, - label = {} - } - -\pgfqkeys{/tkzmkangle}{#1} -%<--------------------------------------------------------------------------–> -\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} -\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} -\begin{scope} - \ifx\tkz@arc\tkz@arcsimple - \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size)(\tkz@dirOne,\tkz@dirTwo) - \else - \ifx\tkz@arc\tkz@arcdouble - \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-1.5\pgflinewidth)% - (\tkz@dirOne,\tkz@dirTwo) - \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+1.5\pgflinewidth)% - (\tkz@dirOne,\tkz@dirTwo) - \else - \ifx\tkz@arc\tkz@arctriple - \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size)(\tkz@dirOne,\tkz@dirTwo) - \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-2\pgflinewidth)% - (\tkz@dirOne,\tkz@dirTwo) - \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+2\pgflinewidth)% - (\tkz@dirOne,\tkz@dirTwo) - \fi - \fi - \fi -\end{scope} -\FPeval\labelangle{(\tkz@dirTwo + \tkz@dirOne)/2} -\tkz@@extractxy{#3} - \tkz@ax=\pgf@x% - \tkz@ay=\pgf@y% -\begin{scope} - \node[lbstyle,shift={(\tkz@ax,\tkz@ay)}] at (\labelangle:\tkz@dist ){\tkz@mklabel}; -\end{scope} - -%<--------------------------------------------------------------------------–> -% les marques, aucune si mktype = none -\global\def\tkz@mymark{% - \pgfsetplotmarksize{\tkz@mksize} - \pgfuseplotmark{\tkz@mark} -} -\begin{scope}[decoration={markings,mark=at position \tkz@mkpos with {\tkz@mymark}}] - \pgfmathgreaterthan{\tkz@dirOne}{\tkz@dirTwo} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathsubtract{\tkz@dirOne}{360} - \edef\tkz@dirOne{\pgfmathresult}% - \fi - \path [\tkz@mkcolor,postaction={decorate},/tkzmkangle/.cd,#1]% -(#3)--++(\tkz@dirOne:\tkz@size) arc(\tkz@dirOne:\tkz@dirTwo:\tkz@size)--cycle; -\end{scope} -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% multiple -\def\tkz@multiMA#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzMarkAngle[\tkz@optma](#1)}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -%<--------------------------------------------------------------------------–> -\def\tkzMarkAngles{\pgfutil@ifnextchar[{\tkz@MarkAngles}{\tkz@MarkAngles[]}} -\def\tkz@MarkAngles[#1](#2){% -\global\edef\tkz@optma{#1} - \begingroup - \let\next\tkz@multiMA - \next#2 \@nil % -\endgroup -} -%<--------------------------------------------------------------------------–> -% % % fin de \tkzMarkAngle -% %<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -%<------------------------- Label on angle -------------------------------–> -%<--------------------------------------------------------------------------–> -\pgfkeys{tkzlabelangle/.cd, -dist/.code = {\global\def\labeldist{#1}}, -/tkzlabelangle/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1} - } -} -\def\tkzLabelAngle{\pgfutil@ifnextchar[{\tkz@LabelAngle}{% - \tkz@LabelAngle[]}} -\def\tkz@LabelAngle[#1](#2,#3,#4)#5{% -\begingroup -\pgfkeys{tkzlabelangle/.cd, - dist = 1} -\pgfqkeys{/tkzlabelangle}{#1} -\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} -\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} -\FPeval\labelAngle{( \tkz@dirOne +\tkz@dirTwo)/2} -\path (#3) --+(\labelAngle:\labeldist) node[/tkzmkangle/.cd,#1] {#5}; -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% multiple labels -\def\tkz@multiLBA#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzLabelAngle[\tkz@optlba](#1){\tkz@labelangle}}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -% %<--------------------------------------------------------------------------–> -\def\tkzLabelAngles{\pgfutil@ifnextchar[{\tkz@LabelAngles}{% - \tkz@LabelAngles[]}} -\def\tkz@LabelAngles[#1](#2)#3{% - \global\edef\tkz@optlba{#1} - \global\def\tkz@labelangle{#3} - \begingroup - \let\next\tkz@multiLBA - \next#2 \@nil % - \endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% Symbole droites perpendiculaires MAUVAIS -%<--------------------------------------------------------------------------–> - \pgfkeys{tkzright/.cd, - size/.code = {\global\def\tkz@ra@size{#1}}, - /tkzright/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1} - } -} - -\newcommand*{\tkzMarkRightAngle}[1][]{\tkz@RightAngle[#1]} -\def\tkz@RightAngle[#1](#2,#3,#4){% -\begingroup -\pgfkeys{tkzright/.cd, - size = .22} -\pgfqkeys{/tkzright}{#1} - \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{% - \pgfpointanchor{#2}{center}}} - \tkz@ax=\pgf@x\relax% - \tkz@ay=\pgf@y\relax% - - \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{% - \pgfpointanchor{#4}{center}}} - \tkz@bx=\pgf@x\relax% - \tkz@by=\pgf@y\relax% - \path[]% - (#3)--++% - ( 28.45274*\tkz@ra@size\tkz@ax , 28.45274*\tkz@ra@size\tkz@ay)% - coordinate (tkz@ra1)--++% - ( 28.45274*\tkz@ra@size\tkz@bx ,28.45274*\tkz@ra@size\tkz@by) - coordinate (tkz@ra2)--++% - (-28.45274*\tkz@ra@size\tkz@ax ,-28.45274*\tkz@ra@size\tkz@ay) - coordinate (tkz@ra3);% - \draw[/tkzright/.cd,#1] (#3)--(tkz@ra1)--(tkz@ra2)--(tkz@ra3)--cycle; -\endgroup -} - -\def\tkz@multiRA#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzMarkRightAngle[\tkz@optRA](#1)}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -\def\tkzMarkRightAngles{\pgfutil@ifnextchar[{\tkz@RightAngles}{% - \tkz@RightAngles[]}} -\def\tkz@RightAngles[#1](#2){% -\global\edef\tkz@optRA{#1} - \begingroup - \let\next\tkz@multiRA - \next#2 \@nil % -\endgroup -} -\endinput -
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-arcs.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-arcs.tex deleted file mode 100644 index fef8c6e81e1..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-arcs.tex +++ /dev/null @@ -1,272 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - %<--------------------------------------------------------------------------–> -%<------------------------------ Arcs -------------------------------------–> -%<--------------------------------------------------------------------------–> -% options : delta -\def\tkz@delta{0} -\tikzset{arc style/.style={#1}} -\pgfkeys{/tikz/.cd,delta/.code={\def\tkz@delta{#1}}} - -\global\def\tkz@numa{0} -\pgfkeys{/drawarc/.cd, -towards/.code = {\global\def\tkz@numa{0}}, -rotate/.code = {\global\def\tkz@numa{1}}, -angles/.code = {\global\def\tkz@numa{2}}, -R/.code = {\global\def\tkz@numa{3}}, -R with nodes/.code = {\global\def\tkz@numa{4}}, -/drawarc/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1,% - /pgf/\searchname/.retry=#1}} -} - -\def\tkzDrawArc{\pgfutil@ifnextchar[{\tkz@DrawArc}{\tkz@DrawArc[]}} -\def\tkz@DrawArc[#1](#2,#3)(#4){% -\begingroup -\pgfkeys{/drawarc/.cd,towards,delta=0} -\pgfqkeys{/drawarc}{#1} -\ifcase\tkz@numa% - \tkzDrawArcN[#1](#2,#3)(#4) -\or% 1 - \tkzDrawArcRotate[#1](#2,#3)(#4) -\or% 2 - \tkzDrawArcAngles[#1](#2,#3)(#4) - \or% 3 - \tkzDrawArcRAngles[#1](#2,#3)(#4) - \or% 4 - \tkzDrawArcR[#1](#2,#3)(#4) -\fi -\endgroup -} - -%<--------------------------------------------------------------------------–> -% #1 center #2 radius #4 first angle (degree) #5 second angle (degree) -% angles 0 .. 180 or -180 .. 0 -%<--------------------------------------------------------------------------–> -% example : \tkzDrawArc(A,2 cm)(30,90) -\def\tkzDrawArcRAngles{\pgfutil@ifnextchar[{\tkz@DrawArcRAngles}{% - \tkz@DrawArcRAngles[]}} -\def\tkz@DrawArcRAngles[#1](#2,#3)(#4,#5){% - \begingroup - \pgfmathparse{#4}\edef\tkz@FirstAngle{\pgfmathresult}% - \pgfmathparse{#5}\edef\tkz@SecondAngle{\pgfmathresult}% - \pgfmathgreaterthan{\tkz@FirstAngle}{0} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathsubtract{\tkz@FirstAngle}{360} - \edef\tkz@FirstAngle{\pgfmathresult}% - \fi - \else - \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} - \ifdim\pgfmathresult pt=1 pt\relax% - \pgfmathadd{\tkz@SecondAngle}{360} - \edef\tkz@SecondAngle{\pgfmathresult}% - \fi - \fi - \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} - \edef\tkz@FirstAngle{\pgfmathresult}% - \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} - \edef\tkz@SecondAngle{\pgfmathresult} - \draw[shift = {(#2)},compass style,/drawarc/.cd,#1]% - (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3); -\endgroup -} -%<--------------------------------------------------------------------------–> -% ARC nodes #2 center #3 first point last point #4 -% delta un peu plus à chaque extrémité -% example : \tkzDrawArc(A,B)(C) -%<--------------------------------------------------------------------------–> -\def\tkzDrawArcN{\pgfutil@ifnextchar[{\tkz@DrawArcN}{\tkz@DrawArcN[]}} -\def\tkz@DrawArcN[#1](#2,#3)(#4){% -\begingroup - \tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius} - \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle} - \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle} - \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstAngle,\tkz@SecondAngle) -\endgroup -} -%<--------------------------------------------------------------------------–> -% nodes #2 center #3 first point rotate #3 with Angle -% delta un peu plus à chaque extrémité -% tkzDrawArcRotate(O,A)(60) -%<--------------------------------------------------------------------------–> -\def\tkzDrawArcRotate{\pgfutil@ifnextchar[{\tkz@DrawArcRotate}{% - \tkz@DrawArcRotate[]}} -\def\tkz@DrawArcRotate[#1](#2,#3)(#4){% -\begingroup - \tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius} - \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstA} - \pgfmathadd{\tkz@FirstA}{#4} - \edef\tkz@SecondA{\pgfmathresult} - \pgfmathgreaterthan{#4}{0} - \ifdim\pgfmathresult pt=1 pt\relax% - \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstA,\tkz@SecondA) - \else - \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@SecondA,\tkz@FirstA) - \fi - \endgroup -} -%<--------------------------------------------------------------------------–> -% deux angles -% \tkzDrawArcAngles(O,A)(0,60) -%<--------------------------------------------------------------------------–> -\def\tkzDrawArcAngles{\pgfutil@ifnextchar[{\tkz@DrawArcAngles}{% - \tkz@DrawArcAngles[]}} -\def\tkz@DrawArcAngles[#1](#2,#3)(#4,#5){% -\begingroup - \tkzCalcLength(#2,#3) - \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#4,#5) -\endgroup -} -%<--------------------------------------------------------------------------–> -% Degree #2 center #4 - #3 radius from #5 (degree) to #6(degree) -%<--------------------------------------------------------------------------–> -\def\tkzDrawArcRwithNodesAngles{\pgfutil@ifnextchar[{% - \tkz@DrawArcRwithNodesAngles}{% - \tkz@DrawArcRwithNodesAngles[]}} \def\tkz@DrawArcRwithNodesAngles[#1](#2,#3,#4)(#5,#6){% -\begingroup - \tkzCalcLength(#3,#4) - \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#5,#6) -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzDrawArcRwithNodes{\pgfutil@ifnextchar[{\tkz@DrawArcRwithNodes}{% - \tkz@DrawArcRwithNodes[]}} -\def\tkz@DrawArcRwithNodes[#1](#2,#3,#4)(#5,#6){% -\begingroup - \tkzCalcLength(#3,#4) - \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@FirstAngle} - \tkzFindSlopeAngle(#2,#6)\tkzGetAngle{tkz@SecondAngle} - \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult)% - (\tkz@FirstAngle,\tkz@SecondAngle) -\endgroup -} -%<--------------------------------------------------------------------------–> -% Nodes R #2 center #3 radius en cm from #4(node) to #5(node) -% \tkzDrawArcR(O,2 cm)(A,B) -%<--------------------------------------------------------------------------–> -\def\tkzDrawArcR{\pgfutil@ifnextchar[{\tkz@DrawArcR}{\tkz@DrawArcR[]}} -\def\tkz@DrawArcR[#1](#2,#3)(#4,#5){% -\begingroup - \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@FirstAngle} - \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@SecondAngle} - \tkz@DrawArcRAngles[#1](#2,#3)(\tkz@FirstAngle,\tkz@SecondAngle) -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% Author Alain Matthes -% idea from Y. Combe %<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% Utilisation du Compas : Compass -%<--------------------------------------------------------------------------–> -% Setup Compass -%<--------------------------------------------------------------------------–> -\pgfkeys{% -setupcompass/.cd, -line width/.code = {\global\edef\tkz@compass@lw{#1}}, -color/.code = {\global\edef\tkz@compass@color{#1}}, -style/.code = {\global\edef\tkz@compass@style{#1}}, -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzSetUpCompass{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpCompass}{% - \tkzActivOff\tkz@SetUpCompass[]}} -%<--------------------------------------------------------------------------–> -\def\tkz@SetUpCompass[#1]{% -\tkzActivOff -\pgfkeys{% -setupcompass/.cd, -line width = \tkz@euc@compasswidth, -color = \tkz@euc@compasscolor, -style = \tkz@euc@compassstyle -} -\pgfqkeys{/setupcompass}{#1} -\tikzset{compass style/.style={color = \tkz@compass@color, - line width = \tkz@compass@lw, - style = \tkz@compass@style - }} -} -%<--------------------------------------------------------------------------–> -% \tkzCompass(A, B) -% -% Marque de compas auto-ajustée en longueur -% #2 center #3 le point -% Par défaut: -% longueur : 1cm, mais avec un maximum d'un angle de 180° -% angle calculé pour la longueur -% style traits pleins -% -% Paramètres (optionnels, gérés par xkeyval) -% length : longueur de l'arc (ignoré si delta est différent de 0) -% delta : angle sous-tendant l'arc - -%<--------------------------------------------------------------------------–> - \pgfkeys{ - /compass/delta/.code = {\def\tkz@delta{#1}}, - /compass/length/.code = {\def\tkz@length{#1}}, - /compass/ratio/.code = {\def\tkz@ratio{#1}}, - /compass/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} -} - -% \def\tkz@length{2} -% \pgfkeys{/tikz/.cd,length/.code={\def\tkz@length{#1}}} - -\def\tkzCompass{\pgfutil@ifnextchar[{\tkz@Compass}{\tkz@Compass[]}} -\def\tkz@Compass[#1](#2,#3){% -\begingroup -\pgfkeys{% - compass/.cd, - length = 0.75, - delta = 0, - ratio = .5 - } -\pgfkeys{compass/.cd,#1} - \tkzCalcLength(#2,#3)\tkzGetLength{tkz@tempLen} -\ifnum\tkz@delta=0 % - \pgfmathsetmacro{\tkz@delta}{min(deg(\tkz@length cm/ \tkz@tempLen pt),180)/2} -\fi - \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@angle}% - \draw[shift ={(#2)},/compass/.cd,compass style,#1]% - (\tkz@angle-\tkz@delta:\tkz@tempLen pt)% - arc (\tkz@angle-\tkz@delta:\tkz@angle+\tkz@delta:\tkz@tempLen pt); - %}; -\endgroup} -%<--------------------------------------------------------------------------–> -\def\tkz@multiCompass#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzCompass[\tkz@optcompass](#1)}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -\def\tkzCompasss{\pgfutil@ifnextchar[{\tkz@Compasss}{\tkz@Compasss[]}} - -\def\tkz@Compasss[#1](#2){% -\global\edef\tkz@optcompass{#1} -\begingroup - \let\next\tkz@multiCompass - \next#2 \@nil % -\endgroup -}% - -%<--------------------------------------------------------------------------–> -% fin de \tkzCompass -%<--------------------------------------------------------------------------–>\endinput -
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-circles.tex deleted file mode 100644 index c29b965c16e..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-circles.tex +++ /dev/null @@ -1,259 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - -%<--------------------------------------------------------------------------–> -% tkzCircle center and one point -%<--------------------------------------------------------------------------–> - -\def\tkz@numc{0} -\pgfkeys{/tkzDefCircle/.cd, -radius/.code = \def\tkz@numc{0}, -diameter/.code = \def\tkz@numc{1}, -circum/.code = \def\tkz@numc{2}, -in/.code = \def\tkz@numc{3}, -euler/.code = \def\tkz@numc{4}, -apollonius/.code = \def\tkz@numc{5}, -orthogonal from/.code args = {#1}{\global\def\tkz@ptfrom{#1}, - \global\def\tkz@numc{6}}, -orthogonal through/.code args ={#1 and #2}{\global\def\tkz@ptone{#1} - \global\def\tkz@pttwo{#2} - \global\def\tkz@numc{7}}, -K/.code = \def\tkz@koeff{#1} -} - -\def\tkzDefCircle{\pgfutil@ifnextchar[{\tkz@DefCircle}{% - \tkz@DefCircle[]}} -\def\tkz@DefCircle[#1](#2){% -\begingroup -\pgfkeys{/tkzDefCircle/.cd,radius,K=2} -\pgfqkeys{/tkzDefCircle}{#1} -\ifcase\tkz@numc% - \tkzDefCircleRadius(#2) - \or% 1 - \tkzDefCircleD(#2) - \or% 2 - \tkzDefCircumCircle(#2) - \or% 3 - \tkzDefInCircle(#2) - \or% 4 - \tkzDefEulerCircle(#2) - \or% 5 - \tkzDefApolloniusCircle(#2) - \or% 6 - \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) - \or% 7 - \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) \fi -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDefCircumCircle(#1,#2,#3){% -\begingroup - \tkzCircumCenter(#1,#2,#3) - \tkzCalcLength(#1,tkzPointResult) -\endgroup -} -\def\tkzDefInCircle(#1,#2,#3){% -\begingroup - \tkzInCenter(#1,#2,#3) \tkzGetPoint{tkz@ia} - \tkzUProjection(#2,#3)(tkzPointResult) - \tkzCalcLength(tkzPointResult,tkz@ia) - \tkzRenamePoint(tkz@ia){tkzPointResult} -\endgroup -} -\def\tkzDefEulerCircle(#1,#2,#3){% -\begingroup - \tkzDefMidPoint(#2,#3) \tkzGetPoint{tkz@e} - \tkzEulerCenter(#1,#2,#3) - \tkzCalcLength(tkz@e,tkzPointResult) -\endgroup -} -\def\tkzDefApolloniusCircle(#1,#2){% -\begingroup - \tkzApolloniusCenter(#1,#2) - \tkzCalcLength(tkzPointResult,tkzFirstPointResult) -\endgroup -} -\def\tkzDefOrthogonalCircle(#1,#2,#3){% -\begingroup - \tkzTgtFromP(#1,#2)(#3) - \tkzCalcLength[cm](#1,tkzFirstPointResult) -\endgroup -} -\def\tkzDefOrthoThroughCircle(#1,#2,#3,#4){% -\begingroup - \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}% - \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}% - \FPeval\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna} - \tkzVecKNorm[\tkz@lnc](#1,#3){tkz@PointResult} - \tkzCircumCenter(tkz@PointResult,#3,#4) - \tkzCalcLength(tkzPointResult,#3) -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkz@numdc{0} -\pgfkeys{ -/DrawCircle/.cd, - radius/.code =\def\tkz@numdc{0}, - R/.code =\def\tkz@numdc{1}, - diameter/.code =\def\tkz@numdc{2}, - circum/.code =\def\tkz@numdc{3}, - in/.code =\def\tkz@numdc{4}, - euler/.code =\def\tkz@numdc{5}, - apollonius/.code =\def\tkz@numdc{6}, - orthogonal from/.code args= {#1}{\global\def\tkz@ptfrom{#1}, - \global\def\tkz@numdc{7}}, - orthogonal through/.code args={#1 and #2}{\global\def\tkz@ptone{#1} - \global\def\tkz@pttwo{#2} - \global\def\tkz@numdc{8}}, - K/.code =\def\tkz@koeff{#1}, - /DrawCircle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} -} -%<--------------------------------------------------------------------------–> -\def\tkzDrawCircle{\pgfutil@ifnextchar[{\tkz@DrawCircle}{\tkz@DrawCircle[]}} -\def\tkz@DrawCircle[#1](#2){% -\begingroup -\pgfkeys{/DrawCircle/.cd,radius,K=2} -\pgfqkeys{/DrawCircle}{#1} -\ifcase\tkz@numdc% - \tkzDefCircleRadius(#2) - \or% 1 - \tkzDefCircleR(#2) - \or% 2 - \tkzDefCircleD(#2) - \or% 3 - \tkzDefCircumCircle(#2) - \or% 4 - \tkzDefInCircle(#2) - \or% 5 - \tkzDefEulerCircle(#2) - \or% 6 - \tkzDefApolloniusCircle(#2) - \or% 7 - \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) - \or% 8 - \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) - \fi -\draw[/DrawCircle/.cd,line style,#1]% - (tkzPointResult) circle (\tkzLengthResult pt);% -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDefCircleRadius(#1,#2){% -\begingroup - \tkzCalcLength(#1,#2) - \tkzRenamePoint(#1){tkzPointResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDefCircleR(#1,#2){% - \begingroup - \tkz@radi=#2 % - \FPeval\tkzLengthResult{\pgf@sys@tonumber{\tkz@radi}}% - \FPround\tkzLengthResult\tkzLengthResult5\relax% - \global\let\tkzLengthResult\tkzLengthResult - \tkzRenamePoint(#1){tkzPointResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDefCircleD(#1,#2){% -\begingroup - \tkzDefMidPoint(#1,#2) - \tkzCalcLength(#1,tkzPointResult) -\endgroup -} -%<--------------------------------------------------------------------------–> -%<---------------------------- Fill Circle --------------------------------–> -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkz@numfc{0} -\pgfkeys{ -/fillcircle/.cd, - radius/.code =\def\tkz@numfc{0}, - R/.code =\def\tkz@numfc{1}, -/fillcircle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} -} - -\def\tkzFillCircle{\pgfutil@ifnextchar[{\tkz@FillCircle}{\tkz@FillCircle[]}} -\def\tkz@FillCircle[#1](#2,#3){% -\begingroup -\pgfkeys{/fillcircle/.cd,radius} -\pgfqkeys{/fillcircle}{#1} -\ifcase\tkz@numfc% - % first case 0 - \tkzCalcLength(#2,#3) - \fill[/fillcircle/.cd,#1] (#2) circle (\tkzLengthResult pt);% - \or% 1 - \fill[/fillcircle/.cd,#1] (#2) circle (#3);% - \fi -\endgroup -} -%<--------------------------- Clip Circle ---------------------------------–> -% %<--------------------------------------------------------------------------–> -\def\tkz@numcc{0} -\pgfkeys{ -/clipcircle/.cd, - radius/.code =\def\tkz@numcc{0}, - R/.code =\def\tkz@numcc{1} -} -%<--------------------------------------------------------------------------–> -\def\tkzClipCircle{\pgfutil@ifnextchar[{\tkz@ClipCircle}{% - \tkz@ClipCircle[]}} - -\def\tkz@ClipCircle[#1](#2,#3){% -\pgfkeys{/clipcircle/.cd,radius} -\pgfqkeys{/clipcircle}{#1} -\ifcase\tkz@numcc - \tkzCalcLength(#2,#3) - \clip (#2) circle (\tkzLengthResult pt); - \or% 1 - \clip (#2) circle (#3); - \fi -} -%<--------------------------- Label Circle --------------------------------–> -%<--------------------------------------------------------------------------–> -% %<--------------------------------------------------------------------------–> -\def\tkz@numlc{0} -\pgfkeys{ -/labelcircle/.cd, - radius/.code =\def\tkz@numlc{0}, - R/.code =\def\tkz@numlc{1}, - /labelcircle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} -} - -\def\tkzLabelCircle{\pgfutil@ifnextchar[{\tkz@LabelCircle}{% - \tkz@LabelCircle[]}} - -\def\tkz@LabelCircle[#1](#2,#3)(#4)#5{% -\begingroup -\pgfkeys{/labelcircle/.cd,radius} -\pgfqkeys{/labelcircle}{#1} -\ifcase\tkz@numlc - \tkzURotateAngle(#2,#4)(#3) - \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5}; - \or% 1 - \path (#2)--++(#3,0) coordinate (tkzPointResult); - \tkzURotateAngle(#2,#4)(tkzPointResult) - \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5}; - \fi -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> - -\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-angles.tex new file mode 100644 index 00000000000..caa19116be5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-angles.tex @@ -0,0 +1,289 @@ +% tkz-tool-eu-angles.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-tool-eu-angles.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +\newdimen\tkz@arcsize% from julian julian@d-and-j.net +\newdimen\tkz@fillsize +%<-------------------------------------------------------------------------–> + +%<--------------------------------------------------------------------------–> +% tkzDrawArcRAN > +%<--------------------------------------------------------------------------–> +\def\tkzDrawArcRAN[#1](#2,#3)(#4,#5){% +\begingroup + \draw[shift = {(#2)},/drawarc/.cd,#1] (#4:#3) arc (#4:#5:#3); +\endgroup +} +%<--------------- tkzPathArcRAN ---------------------------------- +\def\tkzPathArcRAN[#1](#2,#3)(#4,#5){% +\begingroup + \path[shift = {(#2)},/drawarc/.cd,#1] (#4:#3) arc (#4:#5:#3); +\endgroup +} +%<--------------------------------------------------------------------------–> +% Mark an angle +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% \tkzMarkAngle(B, A, C) +% +% Marque d'angle +% arc de cercle (simple/double/triple) et marque d'églité. +% +% Par défaut: +% arc = simple +% size = 1cm (rayon de l'arc) +% style traits pleins +% mkpos ? position: 0.5 (position de la marque) +% mark rien du tout (ignoré si type est utilisé) +% +% Paramètres (optionnels) +% arc : l, ll, lll +% mksize : 1cm +% gap : 3pt +% dist ? +% style : type de traits +% type : none, |, ||,|||, z, s, x, o, oo +% position: 0.5 +% mark : none , |, ||,|||, z, s, x, o, oo mais tous les +% % symboles de tikz sont permis +%<------------------------- Label on angle -------------------------------–> +\def\tkz@arcsimple{l} +\def\tkz@arcdouble{ll} +\def\tkz@arctriple{lll} + +%\tikzset{lbstyle/.style = {color=\tkz@mainlinecolor}} + +\pgfkeys{/tkzmkangle/.cd, + arc/.estore in = \tkz@arc, + size/.store in = \tkz@size, + mark/.store in = \tkz@markang, + mkpos/.estore in = \tkz@mkpos, + mksize/.store in = \tkz@mksize, + mkcolor/.store in = \tkz@mkcolor, + arc = l, + size = 1 cm, + mark = |, + mksize = 4pt, + mkcolor = black, + mkpos = 0.5, + /tkzmkangle/.search also={/tikz} +} \def\tkzMarkAngle{\pgfutil@ifnextchar[{\tkz@MarkAngle}{\tkz@MarkAngle[]}} +\def\tkz@MarkAngle[#1](#2,#3,#4){% +\begingroup +\pgfqkeys{/tkzmkangle}{#1} + +\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} +\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} +\tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo) + +% les marques, aucune si mktype = none +\def\tkz@mymark{\pgfsetplotmarksize{\tkz@mksize}\pgfuseplotmark{\tkz@markang}} +% draw the arcs +\begin{scope}[decoration= {markings, + mark=at position \tkz@mkpos with {\tkz@mymark}}] + \ifx\tkz@arc\tkz@arcsimple + \tkzDrawArcRAN[#1,fill=none,postaction={decorate}]% + (#3,\tkz@size)(\tkz@FirstAngle,\tkz@SecondAngle) + \else + \ifx\tkz@arc\tkz@arcdouble + + \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-1.5\pgflinewidth)% + (\tkz@FirstAngle,\tkz@SecondAngle) + \tkzPathArcRAN[#1,fill=none,postaction={decorate}]% + (#3,\tkz@size)(\tkz@FirstAngle,\tkz@SecondAngle)% + \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+1.5\pgflinewidth)% + (\tkz@FirstAngle,\tkz@SecondAngle)% + \else + \ifx\tkz@arc\tkz@arctriple + \tkzDrawArcRAN[#1,fill=none,postaction={decorate}]% + (#3,\tkz@size)(\tkz@FirstAngle,\tkz@SecondAngle)% + \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-2.5\pgflinewidth)% + (\tkz@FirstAngle,\tkz@SecondAngle)% + \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+2.5\pgflinewidth)% + (\tkz@FirstAngle,\tkz@SecondAngle)% + \fi + \fi + \fi +\end{scope} +\endgroup +} +%<--------------------------------------------------------------------------–> +% multiple +\def\tkz@multiMA#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzMarkAngle[\tkz@optma](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzMarkAngles{\pgfutil@ifnextchar[{\tkz@MarkAngles}{\tkz@MarkAngles[]}} +\def\tkz@MarkAngles[#1](#2){% +\xdef\tkz@optma{#1} + \begingroup + \let\next\tkz@multiMA + \next#2 \@nil % +\endgroup +} +% fin de \tkzMarkAngle +%<--------------------------------------------------------------------------–> +% FillAngle +%<--------------------------------------------------------------------------–> +\pgfkeys{/tkzFill/.cd, + size/.store in = \tkz@size, + size = 1 cm, + /tkzFill/.search also={/tikz} + } + +\def\tkzFillAngle{\pgfutil@ifnextchar[{\tkz@FillAngle}{\tkz@FillAngle[]}} +\def\tkz@FillAngle[#1](#2,#3,#4){% +\begingroup +\pgfqkeys{/tkzFill}{#1} + \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} + \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} + \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo) + \path[shift = {(#3)},/tkzFill/.cd,#1]% + (#3) -- (\tkz@FirstAngle:\tkz@size) arc% + (\tkz@FirstAngle:\tkz@SecondAngle:\tkz@size)--cycle; +\endgroup +} +%<--------------------------------------------------------------------------–> +% multiple +\def\tkz@multiFA#1 #2\@nil{\protected@edef\tkz@temp{% + \noexpand \tkzFillAngle[\tkz@optfa](#1)}% + \tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzFillAngles{\pgfutil@ifnextchar[{\tkz@MFillAngles}{\tkz@MFillAngles[]}} +\def\tkz@MFillAngles[#1](#2){% +\xdef\tkz@optfa{#1} +\begingroup + \let\next\tkz@multiFA + \next#2 \@nil % +\endgroup +} +%<------------------------- Label on angle -------------------------------–> +\pgfkeys{/tkzlabelangle/.cd, + dist/.store in = \tkzlabeldist, + angle/.store in = \tkzlabelangle, + dist = 1, + angle = {}, + /tkzlabelangle/.search also={/tikz} +} +\def\tkzLabelAngle{\pgfutil@ifnextchar[{\tkz@LabelAngle}{\tkz@LabelAngle[]}} +\def\tkz@LabelAngle[#1](#2,#3,#4)#5{%2016 added normalize from karu's code +\begingroup + \pgfqkeys{/tkzlabelangle}{#1} + \ifx\tkzutil@empty\tkzlabelangle% no value so calc angle of bisector + \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} + \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} + \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo) + \edef\tkzlabelAngle{\fpeval{(\tkz@SecondAngle+\tkz@FirstAngle)/2}} + \fi + \path (#3) --+(\tkzlabelAngle:\tkzlabeldist) node[/tkzlabelangle/.cd,#1] {#5}; +\endgroup +} +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% multiple labels +\def\tkz@multiLBA#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzLabelAngle[\tkz@optlba](#1){\tkz@labelangle}}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +% %<--------------------------------------------------------------------- +\def\tkzLabelAngles{\pgfutil@ifnextchar[{\tkz@LabelAngles}{% + \tkz@LabelAngles[]}} +\def\tkz@LabelAngles[#1](#2)#3{% + \def\tkz@optlba{#1} + \def\tkz@labelangle{#3} + \begingroup + \let\next\tkz@multiLBA + \next#2 \@nil % + \endgroup +} +%<----------------------------------------------------------------------- +% Symbole droites perpendiculaires +%<---------------------------------------------------------------------- +\pgfkeys{/tkzrightangle/.cd, + norm tkz code/.is if = normtkzcode@execute, + german/.code = \normtkzcode@executefalse, + size/.store in = \tkz@ra@size, + dotsize/.store in = \tkz@dotsize, + size = .25, + dotsize = 3 pt, + /tkzrightangle/.search also={/tikz}, +} +\newcommand*{\tkzMarkRightAngle}[1][]{\tkz@RightAngle[#1]} +\def\tkz@RightAngle[#1](#2,#3,#4){% +\begingroup +\normtkzcode@executetrue +\pgfqkeys{/tkzrightangle}{#1} + \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{% + \pgfpointanchor{#2}{center}}} + \tkz@ax=\pgf@x\relax% + \tkz@ay=\pgf@y\relax% + \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{% + \pgfpointanchor{#4}{center}}} + \tkz@bx=\pgf@x\relax% + \tkz@by=\pgf@y\relax% + \ifnormtkzcode@execute% + \draw[/tkzrightangle/.cd,#1] + (#3) --++( 28.45274*\tkz@ra@size\tkz@ax , 28.45274*\tkz@ra@size\tkz@ay) + --++( 28.45274*\tkz@ra@size\tkz@bx , 28.45274*\tkz@ra@size\tkz@by) + --++(-28.45274*\tkz@ra@size\tkz@ax ,-28.45274*\tkz@ra@size\tkz@ay) + -- (#3); + \else% + % find angles + \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne} + \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo} + \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo) + \edef\tkzCircleAngle{\fpeval{(\tkz@SecondAngle+\tkz@FirstAngle)/2}} + \tkzDrawArcRAN[/tkzrightangle/.cd,#1](#3,\tkz@ra@size)% + (\tkz@FirstAngle,\tkz@SecondAngle) + \path (#3) --+ (\tkzCircleAngle:\tkz@ra@size/2) + node[fill,circle,minimum size=\tkz@dotsize,inner sep=0 pt] {}; +\fi% +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkz@multiRA#1 #2\@nil{% +\protected@edef\tkz@temp{ + \noexpand \tkzMarkRightAngle[\tkz@optRA](#1)}\tkz@temp% +\def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi +\next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzMarkRightAngles{\pgfutil@ifnextchar[{\tkz@RightAngles}{% + \tkz@RightAngles[]}} +\def\tkz@RightAngles[#1](#2){% +\xdef\tkz@optRA{#1} +\begingroup + \let\next\tkz@multiRA + \next#2 \@nil % +\endgroup +} + +\makeatother +\endinput +
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-arcs.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-arcs.tex new file mode 100644 index 00000000000..7c0584c8f05 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-arcs.tex @@ -0,0 +1,167 @@ +% tkz-obj-eu-arcs.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-arcs.tex} +\makeatletter +%<------------------------------ Arcs -------------------------------------– +% options : delta +% \def\tkz@delta{0} +% \tikzset{arc style/.style={#1}} +% \pgfkeys{/tikz/.cd,delta/.code={\def\tkz@delta{#1}}} + +\gdef\tkz@numa{0} +\pgfkeys{/drawarc/.cd, + type/.is choice, + type/towards/.code = \def\tkz@numa{0}, + type/rotate/.code = \def\tkz@numa{1}, + type/angles/.code = \def\tkz@numa{2}, + type/R/.code = \def\tkz@numa{3}, + type/R with nodes/.code = \def\tkz@numa{4}, + towards/.style = {type=towards}, + rotate/.style = {type=rotate}, + R/.style = {type=R}, + angles/.style = {type=angles}, + R with nodes/.style = {type=R with nodes}, + diameter/.code = {}, + arc/.code = {}, + size/.code = {}, + mark/.code = {}, + mkpos/.code = {}, + mksize/.code = {}, + mkcolor/.code = {}, + type/.default = towards, + delta/.store in = \tkz@delta, + delta = 0, + /drawarc/.search also = {/tikz} +} +\def\tkzDrawArc{\pgfutil@ifnextchar[{\tkz@DrawArc}{\tkz@DrawArc[]}} +\def\tkz@DrawArc[#1](#2,#3)(#4){% +\begingroup +\pgfqkeys{/drawarc}{#1} +\ifcase\tkz@numa% + \tkzDrawArcTowards[#1](#2,#3)(#4) +\or% 1 + \tkzDrawArcRotate[#1](#2,#3)(#4) +\or% 2 + \tkzDrawArcAngles[#1](#2,#3)(#4) +\or% 3 + \tkzDrawArcRAngles[#1](#2,#3)(#4) + \or% 4 + \tkzDrawArcR[#1](#2,#3)(#4) +\fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% ARC nodes #2 center #3 first point last point #4 +% delta un peu plus à chaque extrémité +% example : \tkzDrawArc(A,B)(C) +%<--------------------------------------------------------------------------–> +\def\tkzDrawArcTowards{\pgfutil@ifnextchar[{\tkz@DrawArcN}{\tkz@DrawArcN[]}} +\def\tkz@DrawArcN[#1](#2,#3)(#4){% +\begingroup + \tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius} + \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle} + \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle} + \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstAngle,\tkz@SecondAngle) +\endgroup +} +%<--------------------------------------------------------------------------–> +% nodes #2 center #3 first point rotate #4 with Angle +% delta un peu plus à chaque extrémité +% tkzDrawArcRotate(O,A)(60) +%<--------------------------------------------------------------------------–> +\def\tkzDrawArcRotate{\pgfutil@ifnextchar[{\tkz@DrawArcRotate}{% + \tkz@DrawArcRotate[]}} +\def\tkz@DrawArcRotate[#1](#2,#3)(#4){% +\begingroup + \tkzCalcLength(#2,#3) \tkzGetLength{tkz@radius} + \tkzFindSlopeAngle(#2,#3) \tkzGetAngle{tkz@FirstA} + \pgfmathadd{\tkz@FirstA}{#4} + \edef\tkz@SecondA{\pgfmathresult} + \pgfmathgreaterthan{#4}{0} + \ifdim\pgfmathresult pt=1 pt\relax% + \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstA,\tkz@SecondA) + \else + \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@SecondA,\tkz@FirstA) + \fi + \endgroup +} +%<--------------------------------------------------------------------------–> +% deux angles +% \tkzDrawArcAngles(O,A)(0,60) +%<--------------------------------------------------------------------------–> +\def\tkzDrawArcAngles{\pgfutil@ifnextchar[{\tkz@DrawArcAngles}{% + \tkz@DrawArcAngles[]}} +\def\tkz@DrawArcAngles[#1](#2,#3)(#4,#5){% +\begingroup + \tkzCalcLength(#2,#3) + \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#4,#5) +\endgroup +} +%<--------------------------------------------------------------------------–> +% #1 center #2 radius #4 first angle (degree) #5 second angle (degree) +% angles 0 .. 180 or -180 .. 0 +%<--------------------------------------------------------------------------–> +% example : \tkzDrawArc(A,2 cm)(30,90) +\def\tkzDrawArcRAngles{\pgfutil@ifnextchar[{\tkz@DrawArcRAngles}{% + \tkz@DrawArcRAngles[]}} +\def\tkz@DrawArcRAngles[#1](#2,#3)(#4,#5){% + \begingroup + \pgfmathparse{#4}\edef\tkz@FirstAngle{\pgfmathresult}% + \pgfmathparse{#5}\edef\tkz@SecondAngle{\pgfmathresult}% + \pgfmathgreaterthan{\tkz@FirstAngle}{0} + \ifdim\pgfmathresult pt=1 pt\relax% + \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} + \ifdim\pgfmathresult pt=1 pt\relax% + \pgfmathsubtract{\tkz@FirstAngle}{360} + \edef\tkz@FirstAngle{\pgfmathresult}% + \fi + \else + \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} + \ifdim\pgfmathresult pt=1 pt\relax% + \pgfmathadd{\tkz@SecondAngle}{360} + \edef\tkz@SecondAngle{\pgfmathresult}% + \fi + \fi + \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} + \edef\tkz@FirstAngle{\pgfmathresult}% + \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} + \edef\tkz@SecondAngle{\pgfmathresult} + \draw[shift = {(#2)},compass style,/drawarc/.cd,#1]% + (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3); +\endgroup +} +%<--------------------------------------------------------------------------–> +% Degree #2 center #4 - #3 radius from #5 (degree) to #6(degree) +%<--------------------------------------------------------------------------–> +\def\tkzDrawArcRwithNodes{\pgfutil@ifnextchar[{\tkz@DrawArcRwithNodes}{% + \tkz@DrawArcRwithNodes[]}} +\def\tkz@DrawArcRwithNodes[#1](#2,#3,#4)(#5,#6){% +\begingroup + \tkzCalcLength(#3,#4) + \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@FirstAngle} + \tkzFindSlopeAngle(#2,#6)\tkzGetAngle{tkz@SecondAngle} + \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult)% + (\tkz@FirstAngle,\tkz@SecondAngle) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Nodes R #2 center #3 radius en cm from #4(node) to #5(node) +% \tkzDrawArcR(O,2 cm)(A,B) +%<--------------------------------------------------------------------------–> +\def\tkzDrawArcR{\pgfutil@ifnextchar[{\tkz@DrawArcR}{\tkz@DrawArcR[]}} +\def\tkz@DrawArcR[#1](#2,#3)(#4,#5){% +\begingroup + \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@FirstAngle} + \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@SecondAngle} + \tkz@DrawArcRAngles[#1](#2,#3)(\tkz@FirstAngle,\tkz@SecondAngle) +\endgroup +} +%<--------------------------------------------------------------------------–> +\makeatother +\endinput +
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex new file mode 100644 index 00000000000..aa1b259d8a8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex @@ -0,0 +1,237 @@ +% tkz-obj-eu-circles.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-circles.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% tkzCircle center and one point +%<--------------------------------------------------------------------------–> +% attention radius circle is defined by center and a point on the circle +% R defined by center and the value of the radius +% no need to define a circle with R tikz uses this method. +% through instead of radius +\def\tkz@numc{0} +\pgfkeys{/tkzDefCircle/.cd, + through/.code = \def\tkz@numc{0}, + radius/.code = \def\tkz@numc{0}, + diameter/.code = \def\tkz@numc{1}, + circum/.code = \def\tkz@numc{2}, + in/.code = \def\tkz@numc{3}, + ex/.code = \def\tkz@numc{4},% new + euler/.code = \def\tkz@numc{5}, + nine/.code = \def\tkz@numc{5}, + apollonius/.code = \def\tkz@numc{6}, + orthogonal from/.code args = {#1}{\def\tkz@ptfrom{#1}, + \def\tkz@numc{7}}, + orthogonal through/.code args = {#1 and #2}{\def\tkz@ptone{#1} + \def\tkz@pttwo{#2} + \def\tkz@numc{8}}, + spieker/.code = \def\tkz@numc{9}, + K/.code = \def\tkz@koeff{#1},% apollonius + K = 1, + through + } +\def\tkzDefCircle{\pgfutil@ifnextchar[{\tkz@DefCircle}{\tkz@DefCircle[]}} +\def\tkz@DefCircle[#1](#2){% +\begingroup +\pgfqkeys{/tkzDefCircle}{#1} +\ifcase\tkz@numc% + \tkzDefCircleThrough(#2)% + \or% 1 + \tkzDefCircleD(#2) + \or% 2 + \tkzDefCircumCircle(#2) + \or% 3 + \tkzDefInCircle(#2) + \or% 4 + \tkzDefExCircle(#2) + \or% 5 + \tkzDefEulerCircle(#2) + \or% 6 + \tkzDefApolloniusCircle(#2) + \or% 7 + \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) + \or% 8 + \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) + \or% 9 + \tkzDefSpiekerCircle(#2) + \fi +\endgroup +} + +%<--------------------------------------------------------------------------–> +% Circum Circle +%<--------------------------------------------------------------------------–> +\def\tkzDefCircumCircle(#1,#2,#3){% +\begingroup + \tkzCircumCenter(#1,#2,#3) + \tkzCalcLength(#1,tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% In(scribe) Circle +%<--------------------------------------------------------------------------–> +\def\tkzDefInCircle(#1,#2,#3){% +\begingroup + \tkzInCenter(#1,#2,#3) + \pgfnodealias{tkz@incenter}{tkzPointResult} + \tkzUProjection(#1,#3)(tkz@incenter) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \tkzCalcLength(tkzPointResult,tkz@incenter) + \pgfnodealias{tkzPointResult}{tkz@incenter} + \pgfnodealias{tkzFirstPointResult}{tkz@incenter} +\endgroup +} +%<--------------------------------------------------------------------------–> +% Ex(scribe) Circle +%<--------------------------------------------------------------------------–> +\def\tkzDefExCircle(#1,#2,#3){% +\begingroup + \tkzExCenter(#1,#2,#3) + \pgfnodealias{tkz@excenter}{tkzPointResult} + \tkzUProjection(#1,#3)(tkz@excenter) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \tkzCalcLength(tkzPointResult,tkz@excenter)% for tkzGetLength + \pgfnodealias{tkzPointResult}{tkz@excenter} + \pgfnodealias{tkzFirstPointResult}{tkz@excenter} +\endgroup +} +%<--------------------------------------------------------------------------–> +% Radius Ex Circle +%<--------------------------------------------------------------------------–> +\def\tkzDefExRadius(#1,#2,#3){% +\begingroup + \tkzExCenter(#1,#2,#3) + \tkzUProjection(#1,#3)(tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% The nine-point circle, also called Euler's circle or the Feuerbach circle +% best way Ma,Mb,Mc circum center 2020 +%<--------------------------------------------------------------------------–> +\def\tkzDefEulerCircle(#1,#2,#3){% +\begingroup + \tkzDefMidPoint(#1,#2) \pgfnodealias{tkz@e1}{tkzPointResult} + \tkzDefMidPoint(#2,#3) \pgfnodealias{tkz@e2}{tkzPointResult} + \tkzDefMidPoint(#1,#3) \pgfnodealias{tkz@e3}{tkzPointResult} + \tkzCircumCenter(tkz@e1,tkz@e2,tkz@e3) + \tkzCalcLength(tkzPointResult,tkz@e1) +\endgroup +} +\let\tkzDefNinePointsCircle\tkzEulerCircle% +\let\tkzFeuerBachCircle\tkzEulerCircle% + +\def\tkzDefEulerRadius(#1,#2,#3){% +\begingroup + \tkzEulerCenter(#1,#2,#3) + \pgfnodealias{eur@pta}{tkzPointResult} + \tkzDefMidPoint(#1,#2) + \tkzCalcLength(eur@pta,tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Apollonius circle +%<--------------------------------------------------------------------------–> +\def\tkzDefApolloniusCircle(#1,#2){% +\begingroup + \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) + \tkzCalcLength(tkzPointResult,tkzFirstPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Apollonius radius +%<--------------------------------------------------------------------------–> +\pgfkeys{/tkzApolloniusR/.cd, + K/.code = \def\tkz@koeff{#1},% apollonius + K = 1 + } +\def\tkzDefApolloniusRadius{\pgfutil@ifnextchar[{% + \tkz@DefApolloniusRadius}{\tkz@DefApolloniusRadius[]}} +\def\tkz@DefApolloniusRadius[#1](#2,#3){% +\begingroup + \pgfqkeys{/tkzApolloniusR}{#1} + \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#2,#3) + \pgfnodealias{apo@pta}{tkzPointResult} + \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#2,#3) + \pgfnodealias{apo@ptb}{tkzPointResult} + \tkzDefMidPoint(apo@pta,apo@ptb) + \tkzCalcLength(tkzPointResult,apo@pta) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Apollonius point +%<--------------------------------------------------------------------------–> + +\pgfkeys{/tkzApolloniusP/.cd, + K/.code = \def\tkz@koeff{#1},% apollonius + K = 1 + } +\def\tkzDefApolloniusPoint{\pgfutil@ifnextchar[{\tkz@DefApolloniusPoint}{\tkz@DefApolloniusPoint[]}} +\def\tkz@DefApolloniusPoint[#1](#2,#3){% +\begingroup + \pgfqkeys{/tkzApolloniusP}{#1} + \tkzDefBarycentricPoint(#2=1,#3=\tkz@koeff) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Apollonius center +%<--------------------------------------------------------------------------–> +\pgfkeys{/tkzApolloniusC/.cd, + K/.code = \def\tkz@koeff{#1},% apollonius + K = 1 + } +\def\tkzApolloniusCenter{\pgfutil@ifnextchar[{\tkz@ApolloniusCenter}{\tkz@ApolloniusCenter[]}} +\def\tkz@ApolloniusCenter[#1](#2,#3){% +\begingroup + \pgfqkeys{/tkzApolloniusC}{#1} + \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#2,#3) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#2,#3) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzDefOrthogonalCircle(#1,#2,#3){% +\begingroup + \tkzTgtFromP(#1,#2)(#3) + \tkzCalcLength[cm](#1,tkzFirstPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzDefOrthoThroughCircle(#1,#2,#3,#4){% +\begingroup + \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}% + \edef\tkz@lnc{\fpeval{1/\tkz@lnb}} + \tkzVecKNorm[\tkz@lnc](#1,#3) + \pgfnodealias{tkz@PointResult}{tkzPointResult} + \tkzCircumCenter(tkz@PointResult,#3,#4) + \tkzCalcLength(tkzPointResult,#3) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Spieker Circle +%<--------------------------------------------------------------------------–> +\def\tkzDefSpiekerCircle(#1,#2,#3){% +\begingroup + \tkzSpiekerCenter(#1,#2,#3) + \pgfnodealias{tkz@spka}{tkzPointResult} + \tkzDefMidPoint(#1,#2) + \tkzUProjection(#1,#2)(tkzPointResult) + \tkzCalcLength(tkz@spka,tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% End Def Circle +%<--------------------------------------------------------------------------–> + \makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex new file mode 100644 index 00000000000..e0f00f678da --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex @@ -0,0 +1,105 @@ +% tkz-obj-eu-compass.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-compass.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% Author Alain Matthes +% idea from Y. Combe +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% Utilisation du Compas : Compass +%<--------------------------------------------------------------------------–> +% Setup Compass +%<--------------------------------------------------------------------------–> +\pgfkeys{% + setupcompass/.cd, + line width/.code = {\global\edef\tkz@compass@lw{#1}}, + color/.code = {\global\edef\tkz@compass@color{#1}}, + style/.code = {\global\edef\tkz@compass@style{#1}}, + } +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +\def\tkzSetUpCompass{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpCompass}{% + \tkzActivOff\tkz@SetUpCompass[]}} +%<--------------------------------------------------------------------------–> +\def\tkz@SetUpCompass[#1]{% +\pgfkeys{% + setupcompass/.cd, + line width = \tkz@euc@compasswidth, + color = \tkz@euc@compasscolor, + style = \tkz@euc@compassstyle + } +\pgfqkeys{/setupcompass}{#1} +\tikzset{compass style/.style={color = \tkz@compass@color, + line width = \tkz@compass@lw, + style = \tkz@compass@style + }} +} +%<--------------------------------------------------------------------------–> +% \tkzCompass(A, B) +% +% Marque de compas auto-ajustée en longueur +% #2 center #3 le point +% Par défaut: +% longueur : 1cm, mais avec un maximum d'un angle de 180° +% angle calculé pour la longueur +% style traits pleins + +%<--------------------------------------------------------------------------–> + \pgfkeys{ + /compass/delta/.code = {\def\tkz@delta{#1}}, + /compass/length/.code = {\def\tkz@length{#1}}, + /compass/ratio/.code = {\def\tkz@ratio{#1}}, + /compass/.unknown/.code = {\let\searchname=\pgfkeyscurrentname + \pgfkeysalso{\searchname/.try=#1, + /tikz/\searchname/.retry=#1}} +} + +\def\tkzCompass{\pgfutil@ifnextchar[{\tkz@Compass}{\tkz@Compass[]}} +\def\tkz@Compass[#1](#2,#3){% +\begingroup +\pgfkeys{% + compass/.cd, + length = 1, + delta = 0, + ratio = .5 + } +\pgfkeys{compass/.cd,#1} + \tkzCalcLength(#2,#3)\tkzGetLength{tkz@tempLen} +\ifnum\tkz@delta=0 % + \pgfmathsetmacro{\tkz@delta}{min(deg(\tkz@length cm/ \tkz@tempLen pt),180)/2} +\fi + \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@angle}% + \draw[shift ={(#2)},/compass/.cd,compass style,#1]% + (\tkz@angle-\tkz@delta:\tkz@tempLen pt)% + arc (\tkz@angle-\tkz@delta:\tkz@angle+\tkz@delta:\tkz@tempLen pt); + %}; +\endgroup} +%<--------------------------------------------------------------------------–> +\def\tkz@multiCompass#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzCompass[\tkz@optcompass](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +\def\tkzCompasss{\pgfutil@ifnextchar[{\tkz@Compasss}{\tkz@Compasss[]}} + +\def\tkz@Compasss[#1](#2){% +\global\edef\tkz@optcompass{#1} +\begingroup + \let\next\tkz@multiCompass + \next#2 \@nil % +\endgroup +}% + +\makeatother +\endinput +
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex new file mode 100644 index 00000000000..20a07f6fa64 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex @@ -0,0 +1,251 @@ +% tkz-obj-eu-draw-circles.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-draw-circles.tex} +\makeatletter +%for compatibility +%<--------------------------------------------------------------------------–> +\def\tkzDefCircleR(#1,#2){% +\begingroup + \edef\tkzLengthResult{\fpeval{round(#2,5)}} + \global\let\tkzLengthResult\tkzLengthResult + \tkzRenamePoint(#1){tkzPointResult} +\endgroup +} +%<--------------------------------------------------------------------------–> +% Through Circle center and point +%<--------------------------------------------------------------------------–> +\def\tkzDefCircleThrough(#1,#2){% +\begingroup + \tkzCalcLength(#1,#2) + \tkzRenamePoint(#1){tkzPointResult} +\endgroup +} +%<--------------------------------------------------------------------------–> +% Diameter Circle +%<--------------------------------------------------------------------------–> +\def\tkzDefCircleD(#1,#2){% +\begingroup + \tkzDefMidPoint(#1,#2) + \tkzCalcLength(#1,tkzPointResult) +\endgroup +} + +\def\tkz@numdc{0} +\pgfkeys{/DrawCircle/.cd, + through/.code = \def\tkz@numdc{0}, + R/.code = \def\tkz@numdc{1}, + diameter/.code = \def\tkz@numdc{2}, + circum/.code = \def\tkz@numdc{3}, + in/.code = \def\tkz@numdc{4}, + ex/.code = \def\tkz@numdc{5}, + euler/.code = \def\tkz@numdc{6}, + nine/.code = \def\tkz@numdc{6}, + apollonius/.code = \def\tkz@numdc{7}, + orthogonal from/.code args = {#1}{\def\tkz@ptfrom{#1}, + \def\tkz@numdc{8}}, + orthogonal through/.code args = {#1 and #2}{\def\tkz@ptone{#1} + \def\tkz@pttwo{#2} + \def\tkz@numdc{9}}, + K/.store in = \tkz@koeff,% apollonius + through, + K = 1, + /DrawCircle/.search also={/tikz} +} +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% Drawing a circle > +%<--------------------------------------------------------------------------–> +\def\tkzDrawCircle{\pgfutil@ifnextchar[{\tkz@DrawCircle}{\tkz@DrawCircle[]}} +\def\tkz@DrawCircle[#1](#2){% +\begingroup +\pgfqkeys{/DrawCircle}{#1} +\ifcase\tkz@numdc% + \tkzDefCircleThrough(#2) + \or% 1 + \tkzDefCircleR(#2) + \or% 2 + \tkzDefCircleD(#2) + \or% 3 + \tkzDefCircumCircle(#2) + \or% 4 + \tkzDefInCircle(#2) + \or% 4 + \tkzDefExCircle(#2) + \or% 5 + \tkzDefEulerCircle(#2) + \or% 6 + \tkzDefApolloniusCircle(#2) + \or% 7 + \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) + \or% 8 + \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) + \fi + \draw[line style,/DrawCircle/.cd,#1] + (tkzPointResult) circle (\tkzLengthResult pt); +\endgroup +} + +%<--------------------------------------------------------------------------–> +\def\tkz@multicircles#1 #2\@nil{% +\protected@edef\tkz@temp{ +\noexpand \tkzDrawCircle[\tkz@optcircle](#1)}\tkz@temp% +\def\tkz@nextArg{#2}% +\ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble +\fi +\next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzDrawCircles{\pgfutil@ifnextchar[{\tkz@DrawCircles}{\tkz@DrawCircles[]}} +\def\tkz@DrawCircles[#1](#2){% +\xdef\tkz@optcircle{#1} +\begingroup + \let\next\tkz@multicircles + \next#2 \@nil % +\endgroup +}% +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% #2 #3 rayon +\def\tkz@numdsc{0} +\pgfkeys{/@SemiCircle/.cd, + through/.code = \def\tkz@numdsc{0}, + diameter/.code = \def\tkz@numdsc{1}, + swap/.is if = tkz@sawp@sc, + swap/.default = true, + swap = false, + through, + /@SemiCircle/.search also={/tikz} + } +\def\tkzDrawSemiCircle{\pgfutil@ifnextchar[{\tkz@DrawSemiCircle}{% + \tkz@DrawSemiCircle[]}} +\def\tkz@DrawSemiCircle[#1](#2){% +\begingroup +\pgfqkeys{/@SemiCircle}{#1} +\ifcase\tkz@numdsc% + \tkzDrawSemiCircleThrough(#2) +\or% + \tkzDrawSemiCircleDiameter(#2) +\fi + \tkzDrawArc[#1](\tkz@Center,\tkz@FirstPoint)(\tkz@SecondPoint) +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzDrawSemiCircleThrough(#1,#2){% + \tkzDefPointBy[symmetry=center #1](#2) + \pgfnodealias{tkz@pt}{tkzPointResult} + \def\tkz@Center{#1} + \iftkz@sawp@sc + \gdef\tkz@FirstPoint{tkz@pt} + \gdef\tkz@SecondPoint{#2} + \else + \gdef\tkz@FirstPoint{#2} + \gdef\tkz@SecondPoint{tkz@pt} + \fi +} +%<--------------------------------------------------------------------------–> +\def\tkzDrawSemiCircleDiameter(#1,#2){% + \tkzDefMidPoint(#1,#2) + \pgfnodealias{tkz@Center}{tkzPointResult} + \def\tkz@Center{tkz@Center} + \iftkz@sawp@sc + \def\tkz@FirstPoint{#1} + \def\tkz@SecondPoint{#2} + \else + \def\tkz@FirstPoint{#2} + \def\tkz@SecondPoint{#1} + \fi +} + +%<---------------------------- Fill Circle --------------------------------–> +\def\tkz@numfc{0} +\pgfkeys{/fillcircle/.cd, radius/.code = \def\tkz@numfc{0}, + R/.code = \def\tkz@numfc{1}, + radius, + /fillcircle/.search also={/tikz} +} +\def\tkzFillCircle{\pgfutil@ifnextchar[{\tkz@FillCircle}{\tkz@FillCircle[]}} +\def\tkz@FillCircle[#1](#2,#3){% +\begingroup +\pgfqkeys{/fillcircle}{#1} +\ifcase\tkz@numfc% + % first case 0 + \tkzCalcLength(#2,#3) + \fill[/fillcircle/.cd,#1] (#2) circle (\tkzLengthResult pt);% + \or% 1 + \fill[/fillcircle/.cd,#1] (#2) circle (#3);% + \fi +\endgroup +} +%<----------------------- Out Clip Circle ---------------------------------–> +\def\tkz@numocc{0} +\pgfkeys{/clipoutcircle/.cd, radius/.code = \def\tkz@numocc{0}, + R/.code = \def\tkz@numocc{1}, + radius} +%<--------------------------------------------------------------------------–> +\def\tkzClipOutCircle{\pgfutil@ifnextchar[{\tkz@ClipOutCircle}{% + \tkz@ClipOutCircle[]}} +\def\tkz@ClipOutCircle[#1](#2,#3){% +\pgfqkeys{/clipoutcircle}{#1} +\ifcase\tkz@numocc + \tkzCalcLength(#2,#3) + \clip[tkzreverseclip] (#2) circle (\tkzLengthResult pt); + \or% 1 + \clip[tkzreverseclip] (#2) circle (#3); + \fi +} +%<--------------------------- Clip Circle ---------------------------------–> +\def\tkz@numcc{0} +\pgfkeys{/clipcircle/.cd, + through/.code = \def\tkz@numcc{0}, + R/.code = \def\tkz@numcc{1}, + through} +%<--------------------------------------------------------------------------–> +\def\tkzClipCircle{\pgfutil@ifnextchar[{\tkz@ClipCircle}{\tkz@ClipCircle[]}} + +\def\tkz@ClipCircle[#1](#2,#3){% +\pgfqkeys{/clipcircle}{#1} +\ifcase\tkz@numcc + \tkzCalcLength(#2,#3) + \clip (#2) circle (\tkzLengthResult pt); + \or% 1 + \clip (#2) circle (#3); + \fi +} +%<--------------------------- Label Circle --------------------------------–> +% attention radius circle is defined by center and a point on the circle +% R defined by center and the value of the radius +\def\tkz@numlc{0} +\pgfkeys{/labelcircle/.cd, + through/.code = \def\tkz@numlc{0}, + R/.code = \def\tkz@numlc{1}, + through, + /labelcircle/.search also={/tikz} +} + +\def\tkzLabelCircle{\pgfutil@ifnextchar[{\tkz@LabelCircle}{% + \tkz@LabelCircle[]}} +% [option] (#2,#3) #2 center #3 soit un point du cercle soit le radius +% #4 angle #5 the label +\def\tkz@LabelCircle[#1](#2,#3)(#4)#5{% +\begingroup +\pgfqkeys{/labelcircle}{#1} +\ifcase\tkz@numlc + \tkzURotateAngle(#2,#4)(#3) + \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5}; +\or% 1 + \path (#2)--++(#3,0) coordinate (tkzPointResult); + \tkzURotateAngle(#2,#4)(tkzPointResult) + \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5}; +\fi +\endgroup +} +%<--------------------------------------------------------------------------–> + \makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex new file mode 100644 index 00000000000..76923e844b7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex @@ -0,0 +1,425 @@ +% tkz-obj-eu-draw-lines.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-draw-lines.tex} +\makeatletter +\def\tkz@numdl{0} +\pgfkeys{/DrawLine/.cd, + median/.code = \def\tkz@numdl{0}, + altitude/.code = \def\tkz@numdl{1}, + bisector/.code = \def\tkz@numdl{2}, + none/.code = \def\tkz@numdl{3}, + none, + /DrawLine/.search also={/tikz} +} +%<--------------------------------------------------------------------------–> +% Drawing a line > +%<--------------------------------------------------------------------------–> +\def\tkzDrawLine{\pgfutil@ifnextchar[{\tkz@DrawLine}{\tkz@DrawLine[]}} +\def\tkz@DrawLine[#1](#2){% +\begingroup +\pgfqkeys{/DrawLine}{#1} +\ifcase\tkz@numdl% + \tkzDrawMedian[#1](#2) + \or% 1 + \tkzDrawAltitude[#1](#2) + \or% 2 + \tkzDrawBisector[#1](#2) + \or% 3 + \tkzDrawSLine[#1](#2) + \fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% Droites particulières d'un triangle +%<--------------------------------------------------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkzDrawSLine{\pgfutil@ifnextchar[{\tkz@DrawSLine}{\tkz@DrawSLine[]}} +\def\tkz@DrawSLine[#1](#2,#3){% +\begingroup +\draw[#1] (#2) to (#3); +\endgroup +}% +%<--------------------------------------------------------------------------–> +% median +%<--------------------------------------------------------------------------–> +\def\tkzDrawMedian{\pgfutil@ifnextchar[{\tkz@Median}{\tkz@Median[]}} +\def\tkz@Median[#1](#2,#3,#4){% +\begingroup + \tkzDefMidPoint(#2,#4) + \tkzDrawSLine[add= 0 and 0,/DrawLine/.cd,#1](#3,tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% altitude +%<--------------------------------------------------------------------------–> +\def\tkzDrawAltitude{\pgfutil@ifnextchar[{\tkz@Altitude}{\tkz@Altitude[]}} +\def\tkz@Altitude[#1](#2,#3,#4){% +\begingroup + \tkzUProjection(#2,#4)(#3) + \tkzDrawSLine[add= 0 and 0,/DrawLine/.cd,#1](#3,tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% bisector +%<--------------------------------------------------------------------------–> +\def\tkzDrawBisector{\pgfutil@ifnextchar[{\tkz@Bisector}{\tkz@Bisector[]}} +\def\tkz@Bisector[#1](#2,#3,#4){% +\begingroup + \tkzDefBisectorLine(#2,#3,#4) + \tkzInterLL(#2,#4)(#3,tkzPointResult) + \tkzDrawSLine[add= 0 and 0,/DrawLine/.cd,#1](#3,tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% \def\tkz@recuplast(#1,#2){\def\tkz@last{#1}} +% \def\tkz@stop{\tkz@stop} +%<--------------------------------------------------------------------------–> +% medians +%<--------------------------------------------------------------------------–> +\def\tkz@@Medians(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \ifx\tkz@tmp\tkz@stop\else\tkz@@Medians(#2,#3)(#5)\fi + \tkz@recuplast(#3) + + \pgfcoordinate{#4}{\pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#2}{center}}{% + \pgfpointanchor{\tkz@last}{center}}% + }}% + \protected@edef\tkz@temp{\noexpand + \tkzDrawLine[add= 0 and 0,/DrawTLines/.cd,\tkz@opttline](#4,#1)}\tkz@temp% + \ifx\tkzutil@empty\tkz@newpoint@name + \else + \coordinate (\tkz@newpoint@name#4) at (#4); + \fi +} +\def\tkzDrawMedians{\pgfutil@ifnextchar[{\tkz@Medians}{\tkz@Medians[]}} +\def\tkz@Medians[#1](#2)#3{% +\begingroup + \xdef\tkz@opttline{#1} + \tkz@@Medians(#2,#2)(#3,\tkz@stop) + \endgroup +} + +%<--------------------------------------------------------------------------–> +% Altitudes +%<--------------------------------------------------------------------------–> +\def\tkz@@Altitudes(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \ifx\tkz@tmp\tkz@stop\else\tkz@@Altitudes(#2,#3)(#5)\fi + \tkz@recuplast(#3) + \tkzUProjection(#2,\tkz@last)(#1) + \pgfnodealias{tkz@tmp@pt}{tkzPointResult} + \protected@edef\tkz@temp{% + \noexpand + \tkzDrawLine[add= 0 and 0,/DrawTLines/.cd,\tkz@opttline](#1,tkz@tmp@pt)}\tkz@temp% + \ifx\tkzutil@empty\tkz@newpoint@name + \else + \coordinate (\tkz@newpoint@name#4) at (tkz@tmp@pt); + \fi +} +\def\tkzDrawAltitudes{\pgfutil@ifnextchar[{\tkz@DrawAltitudes}{\tkz@DrawAltitudes[]}} +\def\tkz@DrawAltitudes[#1](#2)#3{% +\begingroup + \xdef\tkz@opttline{#1} + \tkz@@Altitudes(#2,#2)(#3,\tkz@stop) + \endgroup + } +%<--------------------------------------------------------------------------–> +% bisectors +%<--------------------------------------------------------------------------–> +\def\tkz@@Bisectors(#1,#2,#3)(#4,#5){% +\def\tkz@tmp{#5}% +\ifx\tkz@tmp\tkz@stop\else\tkz@@Bisectors(#2,#3)(#5)\fi + \tkz@recuplast(#3) + \tkzDefBisectorLine(\tkz@last,#1,#2) + \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult) + \pgfnodealias{tkz@tmp@pt}{tkzPointResult} + \protected@edef\tkz@temp{ + \noexpand \tkzDrawLine[add= 0 and 0, + /DrawTLines/.cd, + \tkz@opttline](#1,tkz@tmp@pt)}\tkz@temp + \ifx\tkzutil@empty\tkz@newpoint@name + \else + \coordinate (\tkz@newpoint@name#4) at (tkz@tmp@pt); + \fi +} +\def\tkzDrawBisectors{\pgfutil@ifnextchar[{\tkz@DrawBisectors}{\tkz@DrawBisectors[]}} + +\def\tkz@DrawBisectors[#1](#2)#3{% +\begingroup + \xdef\tkz@opttline{#1} + \tkz@@Bisectors(#2,#2)(#3,\tkz@stop) +\endgroup +} +%<-------------------------------------------------------------------------– +%<-------------------------------------------------------------------------– +%<-------------------------------------------------------------------------– +\def\tkz@numdtls{0} +\pgfkeys{/DrawTLines/.cd, + median/.code = \def\tkz@numdtls{0}, + altitude/.code = \def\tkz@numdtls{1}, + bisector/.code = \def\tkz@numdtls{2}, + median, + name/.store in = \tkz@newpoint@name, + name/.initial = {}, + name = {}, + /DrawTLines/.search also={/tikz} +} +%<--------------------------------------------------------------------------–> +% Drawing tr lines > +%<--------------------------------------------------------------------------–> +\def\tkzDrawTLines{\pgfutil@ifnextchar[{\tkz@DrawTLines}{\tkz@DrawTLines[]}} +\def\tkz@DrawTLines[#1](#2)#3{% +\begingroup +\pgfqkeys{/DrawTLines}{#1} +\ifcase\tkz@numdtls% + \tkzDrawMedians[#1](#2){#3} + \or% 1 + \tkzDrawAltitudes[#1](#2){#3} + \or% 2 + \tkzDrawBisectors[#1](#2){#3} + \fi +\endgroup +} +%<-------------------------------------------------------------------------– +% tkzDrawLines +%<-------------------------------------------------------------------------– +\def\tkz@@multiLines#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzDrawLine[\tkz@optline](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzDrawLines{\pgfutil@ifnextchar[{\tkz@DrawLines}{% + \tkz@DrawLines[]}} +\def\tkz@DrawLines[#1](#2){% +\xdef\tkz@optline{#1} +\begingroup + \let\next\tkz@@multiLines + \next#2 \@nil % +\endgroup +}% +%<-------------------------------------------------------------------------–> +% Label +%<-------------------------------------------------------------------------–> +\def\tkzLabelLine{\pgfutil@ifnextchar[{\tkz@AddLabelLine}{\tkz@AddLabelLine[]}} +\def\tkz@AddLabelLine[#1](#2,#3)#4{\path (#2) to node[#1]{#4}(#3);} + +%<--------------------------------------------------------------------------–> +% Setup Line +%<--------------------------------------------------------------------------–> +\pgfkeys{% + setupline/.cd, + line width/.code = {\xdef\tkz@line@lw{#1}}, + color/.code = {\xdef\tkz@line@color{#1}}, + style/.code = {\xdef\tkz@line@style{#1}}, + add/.code args = {#1 and #2} {\xdef\tkz@line@left{#1}% + \xdef\tkz@line@right{#2}% + } +} +%<--------------------------------------------------------------------------–> +\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpLine}{% + \tkzActivOff\tkz@SetUpLine[]}} +\def\tkz@SetUpLine[#1]{% +\pgfkeys{% + setupline/.cd, + line width = \tkz@euc@linewidth, + color = \tkz@euc@linecolor, + style = \tkz@euc@linestyle, + add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}} +\pgfqkeys{/setupline}{#1} +%<--------------------------------------------------------------------------–> +% Line style +%<--------------------------------------------------------------------------–> +\tikzset{% + line style/.style ={% + color = \tkz@line@color, + line width = \tkz@line@lw, + style = \tkz@line@style, + add = {\tkz@line@left} and {\tkz@line@right} +}}}% end setup +%<--------------------------------------------------------------------------–> +% draw segment (s) +%<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzsegoptions/.cd, + /@tkzsegoptions/.search also={/tikz}, +} +\def\tkzDrawSegment{\pgfutil@ifnextchar[{\tkz@DrawSegment}{% + \tkz@DrawSegment[]}} +\def\tkz@DrawSegment[#1](#2,#3){% +\begingroup + \pgfqkeys{/@tkzsegoptions}{#1} + \draw[line style,add=0 and 0,#1] (#2) to (#3); +\endgroup +}% + +\def\tkz@multiDrawSeg#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzDrawSegment[\tkz@optseg](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +\def\tkzDrawSegments{\pgfutil@ifnextchar[{\tkz@DrawSegments}{% + \tkz@DrawSegments[]}} +\def\tkz@DrawSegments[#1](#2){% +\def\tkz@optseg{#1} +\begingroup + \let\next\tkz@multiDrawSeg + \next#2 \@nil % +\endgroup +} +%<--------------------------------------------------------------------------–> +% Mark Segment +%<--------------------------------------------------------------------------–> +\pgfkeys{ + /@tkzmarkoptions/.cd, + pos/.store in = \tkz@mkpos, + color/.store in = \tkz@mkcolor, + mark/.store in = \tkz@markseg, + size/.store in = \tkz@mksize, + size = 4pt, + color = \tkz@mk@color, + pos = .5, + mark = |, + /@tkzmarkoptions/.search also={/tikz}, +} +\def\tkzMarkSegment{\pgfutil@ifnextchar[{\tkz@MarkSegment}{\tkz@MarkSegment[]}} +\def\tkz@MarkSegment[#1](#2,#3){% +\begingroup + \pgfqkeys{/@tkzmarkoptions}{#1} +\def\tkz@mymark{\pgfsetplotmarksize{\tkz@mksize}\pgfuseplotmark{\tkz@markseg}} +\begin{scope} + [decoration={markings,mark=at position \tkz@mkpos with {\tkz@mymark}}] + \path [\tkz@mkcolor,/@tkzmarkoptions/.cd,#1,postaction={decorate}] (#2) -- (#3); +\end{scope} +\endgroup +} +%<--------------------------------------------------------------------------–> +% multiple +\def\tkz@multiMS#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzMarkSegment[\tkz@optsg](#1)}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzMarkSegments{\pgfutil@ifnextchar[{\tkz@MarkSegments}{\tkz@MarkSegments[]}} +\def\tkz@MarkSegments[#1](#2){% +\def\tkz@optsg{#1} + \begingroup + \let\next\tkz@multiMS + \next#2 \@nil % +\endgroup +} +%<-------------------------------------------------------------------------–> +% Label on segment +%<-------------------------------------------------------------------------–> +\def\tkzLabelSegment{\pgfutil@ifnextchar[{\tkz@LabelSegment}% + {\tkz@LabelSegment[]}} +\def\tkz@LabelSegment[#1](#2,#3)#4{% +\begingroup + \path (#2) to node[label seg style,#1]{#4} (#3) ; +\endgroup +} +%<--------------------------------------------------------------------------–> +% multiple +\def\tkz@multiLS#1 #2\@nil{% + \protected@edef\tkz@temp{ + \noexpand \tkzLabelSegment[\tkz@optls](#1){\tkz@labelseg}}\tkz@temp% + \def\tkz@nextArg{#2}% + \ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble + \fi + \next#2\@nil +} +%<--------------------------------------------------------------------------–> +\def\tkzLabelSegments{\pgfutil@ifnextchar[{\tkz@LabelSegments}{% + \tkz@LabelSegments[]}} +\def\tkz@LabelSegments[#1](#2)#3{% +\def\tkz@optls{#1} +\def\tkz@labelseg{#3} + \begingroup + \let\next\tkz@multiLS + \next#2 \@nil % +\endgroup +} +%<--------------------------------------------------------------------------–> +% PolySeg +%<--------------------------------------------------------------------------–> +\def\tkzDrawPolySeg{\pgfutil@ifnextchar[{\tkz@DrawPolySeg}{% + \tkz@DrawPolySeg[]}} +\def\tkz@DrawPolySeg[#1](#2,#3){% +\begingroup +\draw[line style,#1] (#2) + \foreach \po in {#3}{--(\po)};% +\endgroup +} +%<--------------------------------------------------------------------------–> +% add dim + % \draw[dim={5cm,7pt,}] (A) -- (B); + % \draw[dim={7cm,10pt,transform shape}] (B) -- (C); + % \draw[dim={X,,}] (A) -- (C); +%<--------------------------------------------------------------------------–> +\pgfkeys{/pgf/decoration/.cd, distance/.initial = 10pt} + +\pgfdeclaredecoration{add dim}{final}{ +\state{final}{% +\pgfmathsetmacro{\dist}{\pgfkeysvalueof{/pgf/decoration/distance}} + \pgfpathmoveto{\pgfpoint{0pt}{0pt}} + \pgfpathlineto{\pgfpoint{0pt}{1.2*\dist}} + \pgfpathmoveto{\pgfpoint{\pgfdecoratedpathlength}{0pt}} + \pgfpathlineto{\pgfpoint{(\pgfdecoratedpathlength}{1.2*\dist}} + \pgfsetarrowsstart{latex} + \pgfsetarrowsend{latex} + \pgfpathmoveto{\pgfpoint{0pt}{\dist}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{\dist}} + \pgfusepath{stroke} + \pgfpathmoveto{\pgfpoint{0pt}{0pt}} + \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{0pt}} +}} + +\tikzset{ + dim/.style args={#1,#2,#3}{% + decoration = {add dim,distance=\ifx&0pt\else#2\fi}, + decorate, + postaction = {% + decorate, + decoration={% + raise=#2, + markings, + mark=at position .5 with {% + \node[inner sep=0pt, + font=\footnotesize, + fill=\tkz@fillcolor, + #3] at (0,0) {#1};} + } + } + }, + dim/.default={,0pt,} +} + +%<--------------------------- style line ---------------------------------> +\tikzset{add/.style args={#1 and #2}{to path={% + ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)% + \tikztonodes}} +} +%<--------------------------------------------------------------------------–> +\makeatother +\endinput diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex new file mode 100644 index 00000000000..49ce0c7021a --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex @@ -0,0 +1,83 @@ +% tkz-obj-eu-polygons.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-polygons.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% Polygon +%<--------------------------------------------------------------------------–> +%<---------------------------- Draw --------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkzDrawPolygon{\pgfutil@ifnextchar[{\tkz@DrawPolygon}{% + \tkz@DrawPolygon[]}} +\def\tkz@DrawPolygon[#1](#2,#3){% + \begingroup + \draw[line style,#1] (#2) + \foreach \pt in {#2,#3}{--(\pt)}--cycle;% + \endgroup +} +%<---------------------------- FILL --------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkzFillPolygon{\pgfutil@ifnextchar[{\tkz@FillPolygon}{% + \tkz@FillPolygon[]}} +\def\tkz@FillPolygon[#1](#2,#3){% + \begingroup + \fill[#1] (#2) + \foreach \pt in {#2,#3}{--(\pt)}--cycle;% +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzDrawSquare{\pgfutil@ifnextchar[{\tkz@DrawSquare}{\tkz@DrawSquare[]}} +\def\tkz@DrawSquare[#1](#2,#3){% +\begingroup + \tkzDefSquare(#2,#3) + \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzDrawRectangle{\pgfutil@ifnextchar[{\tkz@DrawRectangle}% + {\tkz@DrawRectangle[]}} +\def\tkz@DrawRectangle[#1](#2,#3){% +\begingroup + \draw[#1](#2) -| (#3) -| (#2); +\endgroup +} +%<-------------------------- gold rectangle -------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkz@DrawGoldRectangle[#1](#2,#3){ +\begingroup + \tkzDefGoldRectangle(#2,#3) + \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) +\endgroup +} +%<-------------- Labels for Regular Polygon -------------------------–> +% +%<--------------------------------------------------------------------------–> +\pgfkeys{/deflabelregpoly/.cd, + name/.store in = \tkz@regpolname, + sep/.store in = \tkz@regpolsep, + name = P, + sep = 1.1 +} + +\def\tkzLabelRegPolygon{\pgfutil@ifnextchar[{\tkz@labelPolygon}{% + \tkz@labelPolygon[]}} +\def\tkz@labelPolygon[#1](#2)#3{% +\begingroup +\pgfqkeys{/deflabelregpoly}{#1} + \foreach \v [count=\vi from 1] in {#3} {% + \path (#2) to [pos=1.1] node {$\v$} (\tkz@regpolname\vi) ; + \pgfnodealias{\v}{\tkz@regpolname\vi} + } +\endgroup +} + +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex new file mode 100644 index 00000000000..ee12e06d8aa --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex @@ -0,0 +1,207 @@ +% tkz-obj-eu-lines.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-lines.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% les lignes +%<--------------------------------------------------------------------------–> +\def\tkz@numl{0} +\pgfkeys{/tkzDefLine/.cd, + mediator/.code = \def\tkz@numl{0}, + perpendicular/.code args = {through #1} {\def\tkz@numl{1}% + \def\tkz@through{#1}}, + orthogonal/.code args = {through #1} {\def\tkz@numl{1}% + \def\tkz@through{#1}}, + parallel/.code args = {through #1}{\def\tkz@numl{2}% + \def\tkz@through{#1}}, + bisector/.code = \def\tkz@numl{3}, + bisector out/.code = \def\tkz@numl{4}, + symmedian/.code = \def\tkz@numl{5}, + K/.code = \def\tkz@koeff{#1}, + K = 1, + normed/.is if = tkz@line@normed, + normed/.default = true, + normed = false +} + +\def\tkzDefLine{\pgfutil@ifnextchar[{\tkz@DefLine}{\tkz@DefLine[]}} +\def\tkz@DefLine[#1](#2){% +\begingroup +\pgfkeys{/tkzDefLine/.cd,K=1} +\pgfqkeys{/tkzDefLine}{#1} +\ifcase\tkz@numl% + % first case 0 + \tkzDefMediatorLine(#2) + \or% 1 + \tkzDefOrthLine[\tkz@koeff](#2)(\tkz@through) + \or% 2 + \tkzDefLineLL(#2) + \or% 3 + \tkzDefBisectorLine(#2) + \or% 4 + \tkzDefBisectorOutLine(#2) + \or% 5 + \tkzDefSymmedianLine(#2) + \fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% tkzLineLL revoir out !! +%<--------------------------------------------------------------------------–> +\def\tkzDefLineLL(#1,#2){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}% + \pgf@xa=\pgf@x\relax%% + \pgf@ya=\pgf@y\relax%% + \pgfinterruptboundingbox + \path[coordinate](\tkz@through)--++(\pgf@xa,\pgf@ya)% + coordinate (tkzPointResult); + \endpgfinterruptboundingbox + \iftkz@line@normed + \tkzVecKNorm(\tkz@through,tkzPointResult) + \fi +\endgroup}% +%<--------------------------------------------------------------------------–> +% tkzOrthLine +%<--------------------------------------------------------------------------–> +\def\tkzDefOrthLine{\pgfutil@ifnextchar[{\tkz@DefOrthLine}{% + \tkz@DefOrthLine[1]}} +\def\tkz@DefOrthLine[#1](#2,#3)(#4){% +\begingroup + \tkzVecKOrth(#2,#3) + \pgfnodealias{tkz@OLtmp}{tkzPointResult} + \tkz@VecKCoLinear[#1](#2,tkz@OLtmp,#4) + \iftkz@line@normed + \pgfinterruptboundingbox + \tkzVecKNorm(\tkz@through,tkzPointResult) + \endpgfinterruptboundingbox + \fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% tkzMediatorLine +%<--------------------------------------------------------------------------–> +\def\tkzDefMediatorLine(#1,#2){% new 2020 +\begingroup + \tkzDefEquilateral(#1,#2) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzDefEquilateral(#2,#1) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \iftkz@line@normed + \tkzDefMidPoint(#1,#2) + \pgfnodealias{tkz@mid}{tkzPointResult} + \pgfinterruptboundingbox + \tkzVecKNorm(tkz@mid,tkzFirstPointResult) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzVecKNorm(tkz@mid,tkzSecondPointResult) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \endpgfinterruptboundingbox +\fi +\endgroup +} +% autre possibilité + +%<--------------------------------------------------------------------------–> +% BisectorLine % pb avec un angle plat +%<--------------------------------------------------------------------------–> +\def\tkzDefBisectorLine(#1,#2,#3){% +\begingroup + \pgfinterruptboundingbox + \tkzDuplicateLength(#2,#1)(#2,#3) + \pgfnodealias{bi@tmp}{tkzPointResult} + \tkzDefEquilateral(bi@tmp,#1) + \iftkz@line@normed + \tkzVecKNorm(#2,tkzPointResult) + \fi + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> +% Out BisectorLine +%<--------------------------------------------------------------------------–> +\def\tkzDefBisectorOutLine(#1,#2,#3){% +\begingroup + \pgfinterruptboundingbox + \tkzDuplicateLength(#2,#1)(#2,#3) + \pgfnodealias{out@tmp}{tkzPointResult} + \tkzDefMidPoint(#1,out@tmp) + \pgfnodealias{out@pt1}{tkzPointResult} + \tkzURotateAngle(#2,90)(out@pt1) + \iftkz@line@normed + \tkzVecKNorm(#2,tkzPointResult) + \fi + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> +% Symmedian line +%<--------------------------------------------------------------------------–> +\def\tkzDefSymmedianLine(#1,#2,#3){% +\begingroup + \tkzDefBisectorLine(#1,#2,#3) + \pgfnodealias{sym@pt1}{tkzPointResult} + \tkzDefMidPoint(#1,#3) + \pgfnodealias{sym@pt2}{tkzPointResult} + \tkzUSymOrth(#2,sym@pt1)(sym@pt2) +\endgroup +} +%<-------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% tangente à cercle passant par un point donné +%<--------------------------------------------------------------------------–> +\def\tkzTgtFromPR(#1,#2)(#3){% + \begingroup + \tkzDefMidPoint(#1,#3) + \tkzCalcLength(tkzPointResult,#1) + \tkzInterCCR(#1,#2)(tkzPointResult,\tkzLengthResult pt){% + tkzFirstPointResult}{% + tkzSecondPointResult}% + \endgroup +} + +\def\tkzTgtFromP(#1,#2)(#3){% + \begingroup + \tkzDefMidPoint(#1,#3) + \tkzCalcLength(#1,#2) + \tkzGetLength{tkz@radone}% + \tkzCalcLength(tkzPointResult,#1) + \tkzGetLength{tkz@radtwo}% + \tkzInterCCR(#1,\tkz@radone pt)(tkzPointResult,\tkz@radtwo pt){% + tkzFirstPointResult}{% + tkzSecondPointResult}% + \endgroup +} +\def\tkzTgtAt(#1)(#2){% +\begingroup + \tkz@VecKOrthNorm[-1](#2,#1) + \endgroup +} %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> +\def\tkz@numtang{0} +\pgfkeys{/tkz@tang/.cd, + at/.code = {\def\tkz@numtang{0}\def\tkz@ptat{#1}}, + from/.code = {\def\tkz@numtang{1}\def\tkz@ptfrom{#1}}, + from with R/.code = {\def\tkz@numtang{2}\def\tkz@ptfrom{#1}} + } +%<--------------------------------------------------------------------------–> +\def\tkzDefTangent{\pgfutil@ifnextchar[{\tkz@Tangent}{\tkz@Tangent[]}} + +\def\tkz@Tangent[#1](#2){% +\begingroup +\pgfkeys{tkz@tang/.cd} +\pgfqkeys{/tkz@tang}{#1} +\ifcase\tkz@numtang + \tkzTgtAt(#2)(\tkz@ptat) +\or + \tkzTgtFromP(#2)(\tkz@ptfrom) + \or + \tkzTgtFromPR(#2)(\tkz@ptfrom) +\fi +\endgroup +} +\makeatother +\endinput 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 new file mode 100644 index 00000000000..bf8793ad093 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex @@ -0,0 +1,402 @@ +% tkz-tools-eu-points-by.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-tools-eu-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}} +} +%<--------------------------------------------------------------------------–> +\def\tkzDefPointBy{\pgfutil@ifnextchar[{\tkz@DefPointBy}{\tkz@DefPointBy[]}} +\def\tkz@DefPointBy[#1](#2){% +\begingroup +\pgfqkeys{/tkzDefPointBy}{#1} + \ifcase\tkz@numtrsf% +% % first case 0 + \tkzUTranslation(\tkzfrom,\tkzto)(#2) +\or% 1 + \tkzUHomo(\tkzcenter,\tkzratio)(#2) +\or% 2 + \tkzUSymOrth(\tkzdeb,\tkzfin)(#2) +\or% 3 + \tkzUCSym(\tkzcenter)(#2) +\or% 4 + \tkzUProjection(\tkzdeb,\tkzfin)(#2) +\or% 5 + \tkzURotateAngle(\tkzcenter,\tkzangle)(#2) +\or% 6 + \tkzURotateInRad(\tkzcenter,\tkzangle)(#2) +\or% 7 + \tkzUInversePoint(\tkzcenter,\tkzpoint)(#2) +\fi +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzDefPointsBy{\pgfutil@ifnextchar[{\tkz@DefPointsBy}{\tkz@DefPointsBy[]}} +\def\tkz@DefPointsBy[#1](#2)#3{% +\begingroup +\pgfqkeys{/tkzDefPointBy}{#1} +\ifcase\tkz@numtrsf% + % first case 0 + \tkzTranslation(\tkzfrom,\tkzto)(#2){#3} + \or% 1 + \tkzHomo(\tkzcenter,\tkzratio)(#2){#3} + \or% 2 + \tkzSymOrth(\tkzdeb,\tkzfin)(#2){#3} + \or% 3 + \tkzCSym(\tkzcenter)(#2){#3} + \or% 4 + \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} +\fi +\endgroup +} + +%<--------------------------------------------------------------------------–> + +\def\ExtractPoint#1,#2\@nil{% +\xdef\tkz@LastList{#2} +\xdef\tkz@FirstPoint{#1} +} +\def\FirstPointInList#1{% +\edef\tkz@templist{#1,} +\expandafter\ExtractPoint\tkz@templist\@nil +} +%<--------------------------------------------------------------------------–> +% Translation par rapport à un point +%<--------------------------------------------------------------------------–> +\def\tkzTranslation(#1,#2)(#3)#4{% +\begingroup +\gdef\tkz@LastList{#4} +\foreach\PT in {#3}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \def\tkz@pointtsf{\PT '} + \else + \def\tkz@pointtsf{\tkz@FirstPoint} + \fi + \tkz@VecCoLinear(#1,#2,\PT) + \pgfnodealias{\tkz@pointtsf}{tkzPointResult} + } +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzUTranslation(#1,#2)(#3){% +\begingroup + \tkz@VecCoLinear(#1,#2,#3)% +\endgroup +} + +%<--------------------------------------------------------------------------–> +% Symétrie par rapport à un point Homo with (-1) +% #2 le centre #3 l'antécédent +%<--------------------------------------------------------------------------–> +\def\tkzCSym(#1)(#2)#3{% +\begingroup +\gdef\tkz@LastList{#3} + \foreach\PointCS in {#2}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \xdef\tkz@pointtsf{\PointCS '} + \else + \xdef\tkz@pointtsf{\tkz@FirstPoint} + \fi + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{\PointCS}{center}}% + \tkz@ax=\pgf@x% + \tkz@ay=\pgf@y% + \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (\tkz@pointtsf); +} +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzUCSym(#1)(#2){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% + \tkz@ax=\pgf@x% + \tkz@ay=\pgf@y% + \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (tkzPointResult); +\endgroup +} +%<--------------------------------------------------------------------------–> +% Symétrie orthogonale par rapport à une droite +%<--------------------------------------------------------------------------–> +\def\tkzSymOrth(#1,#2)(#3)#4{% +\begingroup +\gdef\tkz@LastList{#4} + \foreach\PointSO in {#3}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \def\tkz@pointtsf{\PointSO '} + \else + \def\tkz@pointtsf{\tkz@FirstPoint} + \fi + \tkzUSymOrth(#1,#2)(\PointSO) + \pgfnodealias{\tkz@pointtsf}{tkzPointResult} + } +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzUSymOrth(#1,#2)(#3){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% + \tkz@ax =\pgf@y% + \tkz@ay =\pgf@x% + \path[coordinate]% + (#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); + \tkzInterLL(#1,#2)(#3,tkz@point) + \pgfnodealias{tkzPointofSym}{tkzPointResult} + \tkz@VecK[2](#3,tkzPointofSym) +\endgroup +} + +%<--------------------------------------------------------------------------–> +% Projection orthogonale sur une droite +%<--------------------------------------------------------------------------–> +\def\tkzProjection(#1,#2)(#3)#4{% +\begingroup +\gdef\tkz@LastList{#4} + \foreach\PointPJ in {#3}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \def\tkz@pointtsf{\PointPJ '} + \else + \def\tkz@pointtsf{\tkz@FirstPoint} + \fi + \tkzUProjection(#1,#2)(\PointPJ) + \pgfnodealias{\tkz@pointtsf}{tkzPointResult} + } +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzUProjection(#1,#2)(#3){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% + \tkz@ax =\pgf@y% + \tkz@ay =\pgf@x% + \pgfinterruptboundingbox + \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); + \tkzInterLL(#1,#2)(#3,tkz@point)% définit tkzPointResult + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkz@Projection(#1,#2)(#3)#4{% +\begingroup + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% + \tkz@ax =\pgf@y% + \tkz@ay =\pgf@x% + \pgfinterruptboundingbox + \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); + \endpgfinterruptboundingbox + \tkz@InterLL(#1,#2)(#3,tkz@point){#4}% définit tkzPointResult +\endgroup +} +%<--------------------------------------------------------------------------–> +% Homothétie par rapport à un point +%<--------------------------------------------------------------------------–> +\def\tkzHomo(#1,#2)(#3)#4{% +\begingroup +\gdef\tkz@LastList{#4} + \foreach\PointHO in {#3}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \xdef\tkz@pointtsf{\PointHO '} + \else + \xdef\tkz@pointtsf{\tkz@FirstPoint} + \fi + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{\PointHO}{center}}% + \pgf@xa=\pgf@x% + \pgf@ya=\pgf@y% + \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}% + \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)% + coordinate(\tkz@pointtsf); + } +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzUHomo(#1,#2)(#3){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#3}{center}}% + \pgf@xa=\pgf@x% + \pgf@ya=\pgf@y% + \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}% + \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)% + coordinate(tkzPointResult); +\endgroup +} +%<--------------------------------------------------------------------------–> +% rotation en degré +%<--------------------------------------------------------------------------–> +\def\tkzRotateAngle(#1,#2)(#3)#4{% +\begingroup +\gdef\tkz@LastList{#4} + \foreach\PointRot in {#3}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \def\tkz@pointtsf{\PointRot '} + \else + \def\tkz@pointtsf{\tkz@FirstPoint} + \fi + \tkz@@extractxy{\PointRot} + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \tkz@@extractxy{#1} + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% + {\pgfpoint{\tkz@bx}{\tkz@by}}% + {#2} + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf);% + } + \endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzURotateAngle(#1,#2)(#3){% +\begingroup + \pgf@process{\pgfpointanchor{#3}{center}}% + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \pgf@process{\pgfpointanchor{#1}{center}}% + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% + {\pgfpoint{\tkz@bx}{\tkz@by}}% + {#2} + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \path (\tkz@bx,\tkz@by) coordinate (tkzPointResult);% + \endgroup +} +%<--------------------------------------------------------------------------–> +% % rotation en radian +% %<--------------------------------------------------------------------------–> +\def\tkzRotateInRad(#1,#2)(#3)#4{% +\begingroup +\gdef\tkz@LastList{#4} + \foreach\PointRot in {#3}{% + \FirstPointInList\tkz@LastList + \ifx\tkz@FirstPoint\tkzutil@empty + \xdef\tkz@pointtsf{\PointRot '} + \else + \xdef\tkz@pointtsf{\tkz@FirstPoint} + \fi + \pgfmathparse{#2 r} + \let\tkz@Angle\pgfmathresult + \tkz@@extractxy{\PointRot} + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \tkz@@extractxy{#1} + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% + {\pgfpoint{\tkz@bx}{\tkz@by}}% + {\tkz@Angle} + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf); +} +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzURotateInRad(#1,#2)(#3){% +\begingroup + \pgfmathparse{#2 r} + \let\tkz@Angle\pgfmathresult + \tkz@@extractxy{#3} + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \tkz@@extractxy{#1} + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% + {\pgfpoint{\tkz@bx}{\tkz@by}}% + {\tkz@Angle} + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \path[coordinate](\tkz@bx,\tkz@by)coordinate(tkzPointResult); +\endgroup +} +%<--------------------------------------------------------------------------–> +% Inverse of a point +%<--------------------------------------------------------------------------–> +\def\tkzInversePoint(#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 + \tkzCalcLength[cm](#1,\PointIP)\tkzGetLength{tkz@lnb}% + \edef\tkz@lnc{\fpeval{1/\tkz@lnb}} + \tkzVecKNorm[\tkz@lnb](#1,\PointIP) + } +\endgroup +} +\def\tkzUInversePoint(#1,#2)(#3){% +\begingroup + \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}% + \edef\tkz@lnc{\fpeval{1/\tkz@lnb}} + \tkzVecKNorm[\tkz@lnc](#1,#3) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Fin des transformations +%<--------------------------------------------------------------------------–> + + \makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex new file mode 100644 index 00000000000..ca072cd66dd --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex @@ -0,0 +1,114 @@ +% tkz-obj-eu-points-rnd.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-points-rnd.tex} +%<--------------------------------------------------------------------------–> +\makeatletter +%<-------------------------------------------------------------------------–> +% Points aléatoires sur un segment, une droite, une demi-droite un cercle +%<--------------------------------------------------------------------------–> +% les points aléatoires +%<--------------------------------------------------------------------------–> +\def\tkz@numrp{0} +\pgfkeys{/@tkzDefRandPoint/.cd, + rectangle/.code args = {#1 and #2}{\def\tkz@numrp{0}% + \def\tkz@infl{#1}% + \def\tkz@supr{#2}}, + segment/.code args = {#1--#2}{\def\tkz@numrp{1}% + \def\tkz@start{#1}% + \def\tkz@end{#2}}, + line/.code args = {#1--#2}{\def\tkz@numrp{2}% + \def\tkz@start{#1}% + \def\tkz@end{#2}}, + circle/.code args = {center #1 radius #2}{\def\tkz@numrp{3}% + \def\tkz@center{#1} + \def\tkz@rad{#2}}, + circle through/.code args = {center #1 through #2}{\def\tkz@numrp{4}% + \def\tkz@center{#1} + \def\tkz@point{#2}}, + disk through/.code args = {center #1 through #2}{\def\tkz@numrp{5}% + \def\tkz@center{#1} + \def\tkz@point{#2}}, +} +%<------------------------ version 2019 ----------------------------------> +\def\tkzDefRandPointOn{\pgfutil@ifnextchar[{\tkz@DefRandPointOn}{% + \tkz@DefRandPointOn[]}} +\def\tkz@DefRandPointOn[#1]{% +\begingroup +\pgfqkeys{/@tkzDefRandPoint}{#1} +\ifcase\tkz@numrp% + % first case 0 + \tkzRandPointOnRect(\tkz@infl,\tkz@supr) + \or% 1 + \tkzRandPointOnSegment(\tkz@start,\tkz@end) + \or% 2 + \tkzRandPointOnLine(\tkz@start,\tkz@end) + \or% 3 + \tkzRandPointOnCircle(\tkz@center,\tkz@rad) + \or% 4 + \tkzRandPointOnCircleThrough(\tkz@center,\tkz@point) + \or% 5 + \tkzRandPointOnDisk(\tkz@center,\tkz@point) +\fi +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzRandPointOnRect(#1,#2){% +\tkz@@extractxy{#1} + \pgf@xa=\pgf@x\relax% + \pgf@ya=\pgf@y\relax% + \tkz@@extractxy{#2} + \pgf@xb=\pgf@x\relax% + \pgf@yb=\pgf@y\relax% + \edef\tkz@a{\fpeval{\pgf@xb-\pgf@xa}} + \edef\tkz@b{\fpeval{\pgf@yb-\pgf@ya}} + \pgfmathparse{rnd}\global\let\tkzrndone\pgfmathresult + \pgfmathparse{rnd}\global\let\tkzrndtwo\pgfmathresult + \path[coordinate] ($(#1)+(\tkzrndone*\tkz@a pt,\tkzrndtwo*\tkz@b pt)$) coordinate (tkzPointResult); + } +%<--------------------------------------------------------------------------–> +\def\tkzRandPointOnSegment(#1,#2){% + \pgfmathparse{rnd} + \let\myrnd\pgfmathresult +\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (tkzPointResult); +} +%<--------------------------------------------------------------------------–> +\def\tkzRandPointOnLine(#1,#2){% + \pgfmathparse{rand} + \let\myrnd\pgfmathresult +\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (tkzPointResult); +} +%<--------------------------------------------------------------------------–> +\def\tkzRandPointOnCircle(#1,#2){% +\pgfmathrandominteger{\tkzrnd}{0}{360} +\tkz@ax#2 % + \edef\tkz@xa{\fpeval{\tkz@ax*cosd(\tkzrnd)}} + \edef\tkz@xb{\fpeval{\tkz@ax*sind(\tkzrnd)}} + \path[coordinate]($(#1) + (\tkz@xa pt,\tkz@xb pt) $) coordinate (tkzPointResult); +} +\def\tkzRandPointOnCircleThrough(#1,#2){% +\pgfmathrandominteger{\tkzrnd}{0}{360} +\tkzCalcLength(#1,#2) + \edef\tkz@xa{\fpeval{\tkzLengthResult*cosd(\tkzrnd)}} + \edef\tkz@xb{\fpeval{\tkzLengthResult*sind(\tkzrnd)}} +\path[coordinate]($(#1) + (\tkz@xa pt ,\tkz@xb pt) $) coordinate (tkzPointResult); +} +%<--------------------------------------------------------------------------–> +\def\tkzRandPointOnDisk(#1,#2){% + \pgfmathrandominteger{\tkzrnd}{0}{360} + \tkzCalcLength(#1,#2) + \edef\tkz@xa{\fpeval{\tkzLengthResult*cosd(\tkzrnd)}} + \edef\tkz@xb{\fpeval{\tkzLengthResult*sind(\tkzrnd)}} + \path[coordinate]($(#1) + (\tkz@xa pt ,\tkz@xb pt) $) coordinate (tkz@tmp); + \pgfmathparse{rnd} + \let\myrnd\pgfmathresult + \path[coordinate] ($ (#1)!\myrnd!(tkz@tmp) $) coordinate (tkzPointResult); +} +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex new file mode 100644 index 00000000000..d73a1ce8cb4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex @@ -0,0 +1,248 @@ +% tkz-obj-eu-points-with.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-points-with.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% Vectors +%<--------------------------------------------------------------------------–> +% Objet : outils mathématiques pour la géométrie euclideienne avec pgf/tikz +% utilisable de préférence avec un repère orthonormé et le cm comme unité +% utile pour la compatibilité avec pgf 2 +%<--------------------------------------------------------------------------–> +% Duplicate Length à revoir pas de pt pas de global +% ||v(CN)||= ||v(AB)|| et v(CN) colineaire à v(CD) +% A-->#1 B-->#2 C-->#3 D-->#4 N-->#5 ????? +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% Outils pour les vecteurs +%<--------------------------------------------------------------------------–> +% ce sont des outils élémentaires qui à partir de deux points en définissent +% un troisième +% #1 si c'est une option alors c'est un nombre réel +% #2 et #3 sont deux points +% #4 est le nom du point qui résulte de la transformation +% exemple : \tkzVecKNorm (A,B){C} définit un point C tel que AC = 1 et C est % % un point de la droite (AC). #1 peut être négatif + +\def\tkzDuplicateSegment(#1,#2)(#3,#4){% +\begingroup + \tkzCalcLength(#1,#2)\tkzGetLength{tkz@firstlen}% + \tkzCalcLength(#3,#4)\tkzGetLength{tkz@secondlen}% + \edef\tkz@ratio{\fpeval{\tkz@firstlen/\tkz@secondlen}} + \tkz@VecKCoLinear[\tkz@ratio](#3,#4,#3)% +\endgroup +} +\let\tkzDuplicateLength\tkzDuplicateSegment +%<--------------------------------------------------------------------------–> +% Coordonnées d'un vecteur (couple de points) +% Deux points A et B donc un vecteur on récupère les coordonnées de v(AB) +% en cm +% tkzGetVecCoord en cm ou en pt ??? +%<--------------------------------------------------------------------------–> +%result in #3x et #3y #1 et #2 sont les points +% passage en cm avec fp ? +% 28.45274 =1 cm +\def\tkzGetVectxy(#1,#2)#3{% +\begingroup +\pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% +\pgfmathparse{\pgf@sys@tonumber{\pgf@x}/1cm}% +\let\tkzresultx\pgfmathresult +\pgfmathparse{\pgf@sys@tonumber{\pgf@y}/1cm}% +\let\tkzresulty\pgfmathresult +\global\expandafter\edef\csname #3x\endcsname{\tkzresultx}% +\global\expandafter\edef\csname #3y\endcsname{\tkzresulty}% +\endgroup +} +%<--------------------------------------------------------------------------–> +% options #1 two points #2,#3 result in #4 +% +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% tkzDefPointWith +%<--------------------------------------------------------------------------–> +\def\tkz@numv{0} +\pgfkeys{/@pointwith/.cd, + colinear/.code args = {at #1}{\def\tkz@numv{0}\def\tkz@frompoint{#1}}, + orthogonal/.code = {\def\tkz@numv{1}}, + linear/.code = {\def\tkz@numv{2}}, + orthogonal normed/.code = {\def\tkz@numv{3}}, + linear normed/.code = {\def\tkz@numv{4}}, + colinear normed/.code args = {at#1}{\def\tkz@numv{5}\def\tkz@frompoint{#1}}, + K/.code = {\pgfmathparse{#1}\def\tkz@ratio{\pgfmathresult}}, + K = 1, + orthogonal +} +\def\tkzDefPointWith[#1](#2,#3){% +\begingroup +\pgfkeys{/@pointwith/.cd,K=1} +\pgfqkeys{/@pointwith}{#1} +\ifcase\tkz@numv% + % first case 0 + \tkz@DefVectorColinearat[\tkz@ratio](#2,#3) + \or% 1 + \tkz@VecKOrth[\tkz@ratio](#2,#3) + \or% 2 + \tkz@VecK[\tkz@ratio](#2,#3) + \or% 3 + \tkz@VecKOrthNorm[\tkz@ratio](#2,#3) + \or% 4 + \tkz@VecKNorm[\tkz@ratio](#2,#3) + \or% 5 + \tkz@VecKColinearNorm[\tkz@ratio](#2,#3) + \fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% tkzDefVectorfrom +%<--------------------------------------------------------------------------–> +% tkz@numv 0 +\def\tkz@DefVectorColinearat[#1](#2,#3){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}% + \pgf@xa=\pgf@x\relax% + \pgf@ya=\pgf@y\relax% + \pgfinterruptboundingbox + \path (\tkz@frompoint)--++(\tkz@ratio\pgf@xa,\tkz@ratio\pgf@ya) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> +% tkzVector K Orth coeff dans #1 +% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo +% ||v(AN)||=||v(AB)|| +%<--------------------------------------------------------------------------–> +% tkz@numv 1 +\def\tkzVecKOrth{\pgfutil@ifnextchar[{\tkz@VecKOrth}{\tkz@VecKOrth[1]}} +\def\tkz@VecKOrth[#1](#2,#3){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}% + \pgf@xa=-\pgf@y% + \pgf@ya=\pgf@x% + \pgfmathparse{#1} + \let\tkz@coeff\pgfmathresult + \pgfinterruptboundingbox + \path (#2)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +}% + +%<--------------------------------------------------------------------------–> +% v(AN)=#1 x v(AB) +% #1 le coeff; #2--> A #3--> B #4-->N tq #4-#2 = #1*(#3-#2) +%<--------------------------------------------------------------------------–> +% tkz@numv 2 +\def\tkzVecK{\pgfutil@ifnextchar[{\tkz@VecK}{\tkz@VecK[1]}} +\def\tkz@VecK[#1](#2,#3){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#2}{center}}% + {\pgfpointanchor{#3}{center}}% + \pgf@xa=\pgf@x\relax% + \pgf@ya=\pgf@y\relax% + \pgfmathparse{#1} + \let\tkz@coeff\pgfmathresult + \pgfinterruptboundingbox + \path (#2)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +}% +%<--------------------------------------------------------------------------–> +% tkzVecKOrthNorm coeff dans #1 +% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo +% ||v(AN||=1 si #1 est vide ou =1 sinon ||v(AN||=K +%<--------------------------------------------------------------------------–> +% tkz@numv 3 +\def\tkzVecKOrthNorm{\pgfutil@ifnextchar[{\tkz@VecKOrthNorm}% + {\tkz@VecKOrthNorm[1]}} +\def\tkz@VecKOrthNorm[#1](#2,#3){% +\begingroup + \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#2}{center}}% + {\pgfpointanchor{#3}{center}}} + \pgf@xa=-\pgf@y\relax% + \pgf@ya=\pgf@x\relax% + \edef\tkz@x{\fpeval{28.45274*(#1)*\pgf@xa}} + \edef\tkz@y{\fpeval{28.45274*(#1)*\pgf@ya}} + \pgfinterruptboundingbox + \path (#2)--++(\tkz@x pt,\tkz@y pt) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +}% + +%<--------------------------------------------------------------------------–> +% VectorNormalised ou K*VectorNormalised +% A-->#2 B-->#3 N-->#4 v(AB) devient v(AN) tq ||v(AN)||=1 si #1=1 +% sinon ||v(AN)||=#1 +%<--------------------------------------------------------------------------–> +% tkz@numv 4 +\def\tkzVecKNorm{\pgfutil@ifnextchar[{\tkz@VecKNorm}{\tkz@VecKNorm[1]}} +\def\tkz@VecKNorm[#1](#2,#3){% +\begingroup + \tkzpointnormalised{% + \pgfpointdiff{\pgfpointanchor{#2}{center}} + {\pgfpointanchor{#3}{center}}} + \pgf@xa=\pgf@x\relax% + \pgf@ya=\pgf@y\relax% + \edef\tkz@x{\fpeval{28.45274*(#1)*\pgf@xa}} + \edef\tkz@y{\fpeval{28.45274*(#1)*\pgf@ya}} + \pgfinterruptboundingbox + \path (#2)--++(\tkz@x pt,\tkz@y pt) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +}% +%<--------------------------------------------------------------------------–> +% \tkz@VecKColinearNorm +%<--------------------------------------------------------------------------–> +%% tkz@numv 5 +\def\tkz@VecKColinearNorm[#1](#2,#3){% +\begingroup + \tkzpointnormalised{% + \pgfpointdiff{\pgfpointanchor{#2}{center}} + {\pgfpointanchor{#3}{center}}} + \pgf@xa=\pgf@x\relax% + \pgf@ya=\pgf@y\relax% + \edef\tkz@x{\fpeval{28.45274*(#1)*\pgf@xa}} + \edef\tkz@y{\fpeval{28.45274*(#1)*\pgf@ya}} + \pgfinterruptboundingbox + \path (\tkz@frompoint)--++(\tkz@x pt,\tkz@y pt) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +}% + +%<--------------------------------------------------------------------------–> +% VecKCoLinear CN = K x AB #1 pt #2 pt #3 pt #4 nb #5 pt result +% il faut modifier cette macro : on supprime #3 pour la colinéarité +% Il suffit d'utiliser Replicate ou Duplicate coeff dans #1 +% v(CD)=#1 x v(AB) #1 le coeff; #2-->A #3-->B #4-->C +%<--------------------------------------------------------------------------–> + +\def\tkz@VecKCoLinear[#1](#2,#3,#4){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#2}{center}}% + {\pgfpointanchor{#3}{center}}% + \pgf@xa=\pgf@x\relax% + \pgf@ya=\pgf@y\relax% + \edef\tkz@coeff{\fpeval{#1}} + \pgfinterruptboundingbox + \path (#4)--+(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +}% +\def\tkz@VecCoLinear(#1,#2,#3){% +\begingroup + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% + \pgf@xa=\pgf@x\relax% + \pgf@ya=\pgf@y\relax% + \pgfinterruptboundingbox + \path (#3)--+(\pgf@xa,\pgf@ya) coordinate (tkzPointResult); + \endpgfinterruptboundingbox +\endgroup +}% + +%<-------------------------------------------------------------------------–> +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex new file mode 100644 index 00000000000..62600426e73 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex @@ -0,0 +1,465 @@ +% tkz-obj-eu-points.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-points.tex} +\makeatletter +%add ExCenter +%<--------------------------------------------------------------------------–> +% Specific points +%<--------------------------------------------------------------------------–> +% barycentre +%<--------------------------------------------------------------------------–> +\def\tkzDefBarycentricPoint(#1){% +\begingroup + \path[coordinate] (barycentric cs:#1) coordinate (tkzPointResult); +\endgroup +} +\let\tkzDefBCPoint\tkzDefBarycentricPoint + +\def\tkzDefCentroid(#1){% +\begingroup + \xdef\tkz@arg{} + \foreach \X in {#1} + {% + \ifx\tkzutil@empty\tkz@arg% + \xdef\tkz@arg{\X=1} + \else + \xdef\tkz@arg{\tkz@arg,\X=1} + \fi + } + \path[coordinate] (barycentric cs:\tkz@arg) coordinate (tkzPointResult); +\endgroup +} + +%<--------------------------------------------------------------------------–> +% milieu de deux points +%<--------------------------------------------------------------------------–> +% possible \coordinate (#3) at ($(#1)!0.5!(#2)$); +%<--------------------------------------------------------------------------–> +% \def\tkzDefMidPoint(#1,#2){% +% \begingroup +% \path (#1) -- (#2) coordinate[pos=.5](tkzPointResult); +% \endgroup +% } +\def\tkzDefMidPoint(#1,#2){% +\begingroup + \pgf@process{\pgfpointanchor{#1}{center}}% + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \pgf@process{\pgfpointanchor{#2}{center}}% + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \advance\tkz@bx by\tkz@ax\relax% + \advance\tkz@by by\tkz@ay\relax% + \divide\tkz@bx by2\relax% + \divide\tkz@by by2\relax + \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz@bx}{\tkz@by}} +\endgroup +} +\def\tkz@DefMidPoint(#1,#2,#3,#4){% +\begingroup + \tkz@ax#1% + \tkz@ay#2% + \tkz@bx#3% + \tkz@by#4% + \advance\tkz@bx by\tkz@ax\relax% + \advance\tkz@by by\tkz@ay\relax% + \divide\tkz@bx by2\relax% + \divide\tkz@by by2\relax + \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz@bx}{\tkz@by}} +\endgroup +} +%<--------------------------------------------------------------------------–> +% Internal Similitude center +% Two circles have two similitude centers namely the internal center of similitude Si and the external similitude center Se. +%<--------------------------------------------------------------------------–> +\def\tkzDefIntSimilitudeCenter(#1,#2)(#3,#4){% +\begingroup + \path[coordinate](barycentric cs:#1=#4,#3=#2)coordinate (tkzPointResult); +\endgroup +} +\let\tkzIntSimilitudeCenter\tkzDefIntSimilitudeCenter +%<--------------------------------------------------------------------------–> +% External Similitude center +%<--------------------------------------------------------------------------–> +\def\tkzDefExtSimilitudeCenter(#1,#2)(#3,#4){% +\begingroup + \path[coordinate](barycentric cs:#1=-#4,#3=#2) coordinate(tkzPointResult); +\endgroup +} +\let\tkzExtSimilitudeCenter\tkzDefExtSimilitudeCenter +%<--------------------------------------------------------------------------–> +% triangle center +%<--------------------------------------------------------------------------–> + +\def\tkz@numtc{0} +\pgfkeys{/tkzDefTriangleCenter/.cd, + ortho/.code = \def\tkz@numtc{0}, + centroid/.code = \def\tkz@numtc{1}, + median/.code = \def\tkz@numtc{1}, + circum/.code = \def\tkz@numtc{2}, + in/.code = \def\tkz@numtc{3}, + ex/.code = \def\tkz@numtc{4}, + euler/.code = \def\tkz@numtc{5}, + symmedian/.code = \def\tkz@numtc{6}, + lemoine/.code = \def\tkz@numtc{6}, + grebe/.code = \def\tkz@numtc{6}, + spieker/.code = \def\tkz@numtc{7}, + gergonne/.code = \def\tkz@numtc{8}, + nagel/.code = \def\tkz@numtc{9}, + mittenpunkt/.code = \def\tkz@numtc{10}, + feuerbach/.code = \def\tkz@numtc{11}, + circum +} +\def\tkzDefTriangleCenter{\pgfutil@ifnextchar[{\tkz@DefTriangleCenter}{\tkz@DefTriangleCenter[]}} +\def\tkz@DefTriangleCenter[#1](#2){% +\begingroup +\pgfqkeys{/tkzDefTriangleCenter}{#1} +\ifcase\tkz@numtc% + \tkzOrthoCenter(#2) + \or% 1 + \tkzCentroid(#2) + \or% 2 + \tkzCircumCenter(#2) + \or% 3 + \tkzInCenter(#2) + \or% 4 + \tkzExCenter(#2) + \or% 5 + \tkzEulerCenter(#2) + \or% 6 + \tkzSymmedianCenter(#2) + \or% 7 + \tkzSpiekerCenter(#2) + \or% 8 + \tkzGergonneCenter(#2) + \or%9 + \tkzNagelCenter(#2) + \or%10 + \tkzMittenpunktCenter(#2) + \or%11 + \tkzFeuerbachCenter(#2) + \fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% OrthoCenter +%<--------------------------------------------------------------------------–> +\def\tkzOrthoCenter(#1,#2,#3){% H orthocentre +\begingroup + \tkzUProjection(#1,#2)(#3) + \pgfnodealias{ort@pta}{tkzPointResult} + \tkzUProjection(#1,#3)(#2) + \pgfnodealias{ort@ptb}{tkzPointResult} + \tkzInterLL(#2,ort@ptb)(#3,ort@pta) +\endgroup +} +\let\tkzDefOrthoCenter\tkzOrthoCenter +%<--------------------------------------------------------------------------–> +% GravityCenter +%<--------------------------------------------------------------------------–> +% \def\tkzCentroid(#1,#2,#3){% +% \begingroup +% \path[coordinate](barycentric cs:#1=1,#2=1,#3=1)coordinate (tkzPointResult); +% \endgroup +% } +\def\tkzCentroid(#1,#2,#3){% +\begingroup + \pgf@process{\pgfpointanchor{#1}{center}}% + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \pgf@process{\pgfpointanchor{#2}{center}}% + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \pgf@process{\pgfpointanchor{#3}{center}}% + \tkz@cx\pgf@x% + \tkz@cy\pgf@y% + \advance\tkz@cx by\tkz@ax\relax% + \advance\tkz@cy by\tkz@ay\relax% + \advance\tkz@cx by\tkz@bx\relax% + \advance\tkz@cy by\tkz@by\relax% + \divide\tkz@cx by3\relax% + \divide\tkz@cy by3\relax + \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz@cx}{\tkz@cy}} + %\path[coordinate](barycentric cs:#1=1,#2=1,#3=1)coordinate (tkzPointResult); +\endgroup +} +\let\tkzBaryCenter\tkzCentroid + +%<--------------------------------------------------------------------------–> +% CircumCenter +%<--------------------------------------------------------------------------–> +\def\tkzCircumCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzDefMediatorLine(#1,#2) + \pgf@process{\pgfpointanchor{tkzFirstPointResult}{center}}% + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \pgf@process{\pgfpointanchor{tkzSecondPointResult}{center}}% + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \tkzDefMediatorLine(#1,#3) + \pgf@process{\pgfpointanchor{tkzFirstPointResult}{center}}% + \tkz@cx\pgf@x% + \tkz@cy\pgf@y% + \pgf@process{\pgfpointanchor{tkzSecondPointResult}{center}}% + \tkz@dx\pgf@x% + \tkz@dy\pgf@y% + \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)(\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% +\endpgfinterruptboundingbox +\endgroup +} +\let\tkzDefCircumCenter\tkzCircumCenter +%<--------------------------------------------------------------------------–> +% InCenter +%<--------------------------------------------------------------------------–> +\def\tkzInCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzDefBisectorLine(#3,#1,#2) + \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \tkzDefBisectorLine(#3,#2,#1) + \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% + \tkz@dx\pgf@x% + \tkz@dy\pgf@y% + \pgf@process{\pgfpointanchor{#1}{center}}% + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \pgf@process{\pgfpointanchor{#2}{center}}% + \tkz@cx\pgf@x% + \tkz@cy\pgf@y% + \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)% + (\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% + \endpgfinterruptboundingbox +\endgroup +} +\let\tkzDefInCenter\tkzInCenter +%<--------------------------------------------------------------------------–> +% ExCenter +%<--------------------------------------------------------------------------–> +\def\tkzExCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzDefBisectorOutLine(#2,#1,#3) + \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% + \tkz@bx\pgf@x% + \tkz@by\pgf@y% + \tkzDefBisectorOutLine(#2,#3,#1) + \pgf@process{\pgfpointanchor{tkzPointResult}{center}}% + \tkz@dx\pgf@x% + \tkz@dy\pgf@y% + \pgf@process{\pgfpointanchor{#1}{center}}% + \tkz@ax\pgf@x% + \tkz@ay\pgf@y% + \pgf@process{\pgfpointanchor{#3}{center}}% + \tkz@cx\pgf@x% + \tkz@cy\pgf@y% + \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)% + (\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% + \endpgfinterruptboundingbox +\endgroup +} +\let\tkzDefExCenter\tkzExCenter +%<--------------------------------------------------------------------------–> +% EulerCenter neuf points +%<--------------------------------------------------------------------------–> +\def\tkzEulerCenter(#1,#2,#3){% +% mileu de orthocentre et centre cercle circonscrit +% passe par les midpoints par les pieds des hauteurs +\begingroup +\pgfinterruptboundingbox + \tkzDefMidPoint(#1,#2) + \pgfnodealias{eu@mic}{tkzPointResult} + \tkzDefMidPoint(#1,#3) + \pgfnodealias{eu@mib}{tkzPointResult} + \tkzDefMidPoint(#2,#3) + \pgfnodealias{eu@mia}{tkzPointResult} + \tkzCircumCenter(eu@mia,eu@mib,eu@mic) +\endpgfinterruptboundingbox +\endgroup +} +\let\tkzNinePointCenter\tkzEulerCenter +\let\tkzDefEulerCenter\tkzEulerCenter +%<--------------------------------------------------------------------------–> +%Symmedian center Lemoine point Grebe point K +%<--------------------------------------------------------------------------–> +\def\tkzSymmedianCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzDefMidPoint(#2,#3) + \pgfnodealias{eu@mic}{tkzPointResult} + \tkzDefMidPoint(#1,#3) + \pgfnodealias{eu@mib}{tkzPointResult} + \tkzUProjection(#2,#3)(#1) + \pgfnodealias{ort@pta}{tkzPointResult} + \tkzDefMidPoint(#1,ort@pta) + \pgfnodealias{eu@mid}{tkzPointResult} + \tkzUProjection(#1,#3)(#2) + \pgfnodealias{ort@ptb}{tkzPointResult} + \tkzDefMidPoint(#2,ort@ptb) + \pgfnodealias{eu@mie}{tkzPointResult} + \tkzInterLL(eu@mic,eu@mid)(eu@mib,eu@mie) +\endpgfinterruptboundingbox +\endgroup +} +\let\tkzLemoinePoint\tkzSymmedianCenter +\let\tkzGrebePoint\tkzSymmedianCenter +\let\tkzDefLemoinePoint\tkzLemoinePoint +%<--------------------------------------------------------------------------–> +% Spieker center +%<--------------------------------------------------------------------------–> +\def\tkzSpiekerCenter(#1,#2,#3){% +\begingroup +% we need to get the midpoints +\pgfcoordinate{tkz@m3}{% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}}}% +\pgfcoordinate{tkz@m2}{% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#3}{center}}}}% +\pgfcoordinate{tkz@m1}{% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#2}{center}}% + {\pgfpointanchor{#3}{center}}}}% +\tkzInCenter(tkz@m1,tkz@m2,tkz@m3) +\endgroup +} +\let\tkzDefSpiekerCenter\tkzSpiekerCenter +%<--------------------------------------------------------------------------–> +% Gergonne center Ge +%<--------------------------------------------------------------------------–> +\def\tkzGergonneCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzInCenter(#1,#2,#3) + \pgfnodealias{tkz@ptin}{tkzPointResult} + \tkzUProjection(#2,#3)(tkz@ptin) + \pgfnodealias{tkz@oca}{tkzPointResult} + \tkzUProjection(#1,#3)(tkz@ptin) + \pgfnodealias{tkz@ocb}{tkzPointResult} + \tkzInterLL(#1,tkz@oca)(#2,tkz@ocb) +\endpgfinterruptboundingbox +\endgroup +} +\let\tkzDefGergonneCenter\tkzGergonneCenter +%<--------------------------------------------------------------------------–> +% Nagel center Na +%<--------------------------------------------------------------------------–> +% INa = 3 IG. Nagel point +\def\tkzNagelCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzInCenter(#1,#2,#3) + \pgfnodealias{tkz@ptin}{tkzPointResult} + \tkzCentroid(#1,#2,#3) + \pgfnodealias{tkz@cen}{tkzPointResult} + \tkz@VecCoLinear(tkz@ptin,tkz@cen,tkz@ptin) +\endpgfinterruptboundingbox +\endgroup +} +\let\tkzDefNagelCenter\tkzNagelCenter +%<--------------------------------------------------------------------------–> +% Mittenpunkt +%<--------------------------------------------------------------------------–> +\def\tkzMittenpunktCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzExCenter(#2,#3,#1) + \pgfnodealias{tkz@a}{tkzPointResult} + \tkzExCenter(#3,#1,#2) + \pgfnodealias{tkz@b}{tkzPointResult} + \pgfcoordinate{tkz@ma}{% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}}% + \pgfcoordinate{tkz@mb}{% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}}% + \tkzInterLL(tkz@a,tkz@ma)(tkz@b,tkz@mb) + \endpgfinterruptboundingbox +\endgroup +} +\let\tkzDefMittenpunktCenter\tkzMittenpunktCenter +\let\tkzDefMiddlespoint\tkzMittenpunktCenter +%<--------------------------------------------------------------------------–> +% Feuerbach point +%<--------------------------------------------------------------------------–> +\def\tkzFeuerbachCenter(#1,#2,#3){% +\begingroup +\pgfinterruptboundingbox + \tkzEulerCenter(#1,#2,#3) + \pgfnodealias{tkz@euler}{tkzPointResult} + \tkzInCenter(#1,#2,#3) + \pgfnodealias{tkz@in}{tkzPointResult} + \tkzUProjection(#2,#3)(tkzPointResult) + \tkzInterLC(tkz@in,tkz@euler)(tkz@in,tkzPointResult)\tkzGetFirstPoint{tkz@fe} + \tkzRenamePoint(tkz@fe){tkzPointResult} + \endpgfinterruptboundingbox +\endgroup +} +\let\tkzDefFeuerbachCenter\tkzFeuerbachCenter +%<--------------------------------------------------------------------------–> +% Orthogonal center +%<--------------------------------------------------------------------------–> +\def\tkzOrthogonalCenter(#1,#2){% +\begingroup +\pgfinterruptboundingbox + \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult) +\endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> +% End Triangle center +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% Projection center of excircles +%<--------------------------------------------------------------------------–> +\def\tkzDefProjExcenter{\pgfutil@ifnextchar[{% + \tkz@DefProjExcenter}{% + \tkz@DefProjExcenter[]} + } +\def\tkz@DefProjExcenter[#1](#2,#3,#4)(#5)#6{ +\begingroup + \SetUpPTTR{#1} + \foreach \name [count=\i] in {#5} {% + \global\expandafter\edef\csname tkz@pt\i\endcsname{\name} + } + \foreach \name [count=\i] in {#6} {% + \global\expandafter\edef\csname tkz@ppt\i\endcsname{\name} + } +\tkzDefPointBy[projection=onto #3--#4 ](\tkz@pttr@name \csname tkz@pt1\endcsname) +\pgfnodealias{\csname tkz@ppt1\endcsname\csname tkz@pt1\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #3--#4 ](\tkz@pttr@name \csname tkz@pt2\endcsname) +\pgfnodealias{\csname tkz@ppt1\endcsname\csname tkz@pt2\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #3--#4 ](\tkz@pttr@name \csname tkz@pt3\endcsname) +\pgfnodealias{\csname tkz@ppt1\endcsname\csname tkz@pt3\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #2--#4 ](\tkz@pttr@name \csname tkz@pt1\endcsname) +\pgfnodealias{\csname tkz@ppt2\endcsname\csname tkz@pt1\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #2--#4 ](\tkz@pttr@name \csname tkz@pt2\endcsname) +\pgfnodealias{\csname tkz@ppt2\endcsname\csname tkz@pt2\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #2--#4 ](\tkz@pttr@name \csname tkz@pt3\endcsname) +\pgfnodealias{\csname tkz@ppt2\endcsname\csname tkz@pt3\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #3--#2 ](\tkz@pttr@name \csname tkz@pt1\endcsname) +\pgfnodealias{\csname tkz@ppt3\endcsname\csname tkz@pt1\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #3--#2 ](\tkz@pttr@name \csname tkz@pt2\endcsname) +\pgfnodealias{\csname tkz@ppt3\endcsname\csname tkz@pt2\endcsname}{tkzPointResult} +\tkzDefPointBy[projection=onto #3--#2 ](\tkz@pttr@name \csname tkz@pt3\endcsname) +\pgfnodealias{\csname tkz@ppt3\endcsname\csname tkz@pt3\endcsname}{tkzPointResult} +\endgroup +} + + +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex new file mode 100644 index 00000000000..56d0b86fdf2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex @@ -0,0 +1,113 @@ +% tkz-obj-eu-polygons.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-polygons.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% Polygon +%<--------------------------------------------------------------------------–> +%<--------------------------- square ------------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkzDefSquare(#1,#2){ +\begingroup + \tkzURotateAngle(#2,-90)(#1) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzURotateAngle(#1, 90)(#2) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} +\endgroup +} +%<--------------------- parallélogramme ---------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkzDefParallelogram(#1,#2,#3){ +\begingroup +\tkzDefPointWith[colinear= at #3](#2,#1) +\endgroup +} + +%<-------------------------- gold rectangle -------------------------------–> +% +%<--------------------------------------------------------------------------–> + +\def\tkzDefGoldRectangle(#1,#2){ +\begingroup + \tkzVecKOrth[-\tkzInvPhi](#2,#1) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzVecKOrth[\tkzInvPhi](#1,#2) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} +\endgroup +} +\def\tkzDrawGoldRectangle{\pgfutil@ifnextchar[{\tkz@DrawGoldRectangle}{% + \tkz@DrawGoldRectangle[]}} + +%<---------------------------- Regular Polygon -------------------------–> +\def\tkz@numregpol{0} +\pgfkeys{/defregpoly/.cd, + name/.store in = \tkz@regpolname, + sides/.store in = \tkz@regpolsides, + center/.code = \def\tkz@numregpol{0}, + side/.code = \def\tkz@numregpol{1}, + center, + name = P, + sides = 5 +} +\def\tkzDefRegPolygon{\pgfutil@ifnextchar[{\tkz@DefRegPolygon}{% + \tkz@DefRegPolygon[]}} +\def\tkz@DefRegPolygon[#1](#2,#3){% +\begingroup +\pgfqkeys{/defregpoly}{#1} +\ifcase\tkz@numregpol% + \tkzRegPolygonCenter(#2,#3) + \or% + \tkzRegPolygonSide(#2,#3) + \fi +\endgroup +} +\def\tkzRegPolygonCenter(#1,#2){ +\begingroup + \foreach \v in {1,2,...,\tkz@regpolsides} + {% + \pgfmathsetmacro{\tkz@regangle}{360/\tkz@regpolsides*(\v-1)} + \tkzDefPointBy[rotation= center #1 angle \tkz@regangle](#2) + \pgfnodealias{\tkz@regpolname\v}{tkzPointResult} + } +\endgroup +} +\def\tkzRegPolygonSide(#1,#2){ +\begingroup +% get the center +\pgfmathsetmacro{\tkz@regangle}{360/\tkz@regpolsides*(\tkz@regpolsides-1)} +\pgfmathsetmacro{\tkz@regangleside}{(180-\tkz@regangle)/2} +\tkzDefMidPoint(#1,#2) +\pgfnodealias{tkz@tempPt}{tkzPointResult} +\tkzCalcLength[cm](tkz@tempPt,B) \tkzGetLength{tkz@len} +\pgfmathsetmacro{\tkz@inscriberadius}{% + \tkz@len*tan(90*(\tkz@regpolsides-2)/\tkz@regpolsides)} +\tkzDefPointWith[orthogonal normed,K=\tkz@inscriberadius](tkz@tempPt,#2) +\pgfnodealias{tkz@RegPolCenter}{tkzPointResult} +\tkzRegPolygonCenter(tkz@RegPolCenter,#1) +\pgfnodealias{tkzPointResult}{tkz@RegPolCenter} +\endgroup +} + +%<---------------------------- CLIP --------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkzClipPolygon(#1,#2){% +\path[clip] (#1) + \foreach \pt in {#1,#2}{--(\pt)}--cycle; +} + + \def\tkzClipOutPolygon(#1,#2){\clip[tkzreverseclip] (#1) + \foreach \pt in {#1,#2}{--(\pt)}--cycle; +} + + + +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-protractor.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex index 04d4e3b3b95..eaeca969fc1 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-protractor.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex @@ -1,18 +1,15 @@ +% tkz-obj-eu-protractor.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{1.16 c} -\def\filedate{2011/06/01} - +\def\fileversion{3.01c} +\def\filedate{2020/01/23} + \typeout{2020/01/23 3.01c tkz-obj-eu-protractor.tex} +\makeatletter %<--------------------------------------------------------------------------–> % !!! idea from Y. Combe !!! %<--------------------------------------------------------------------------–> -% % \tkzProtractor Protractor % % Rapporteur ajustable et positionable @@ -31,49 +28,11 @@ % lw : line width (épaisseur des lignes) % ce paramètre subit le facteur d'échelle. %<--------------------------------------------------------------------------–> -\def\HalfProtractor{% -\tkzActivOff - \draw [fill=black!50!blue!20!,even odd rule,semitransparent](-160:5cm) -- (-20:5cm) arc (-20:200:5cm) -- cycle % - (-180:3.5cm) -- (0:3.5cm) arc (0:180:3.5cm) -- cycle;% - - \draw (-90:0.3cm) -- (0,0) - (-135:0.3cm) -- (0,0) - (-45:0.3cm) -- (0,0); -\foreach \MO@i in {0,1,...,180} -\pgfmathparse{ 4.8 * (mod(\MO@i ,5)==0) + 4.9 * (mod(\MO@i ,5)>0) } -\draw (\MO@i:\pgfmathresult cm)--(\MO@i:5cm); - - \foreach \d in {0,1,...,180} - \pgfmathparse{3.7 * (mod(\d,5)==0) + 3.6 * (mod(\d,5)>0)} - \draw (\d:\pgfmathresult cm)--(\d:3.5cm); - -\draw (0: 4.6cm) node[font=\small] {0} - (0: 4cm) node[font=\small] {180}; - -\foreach \d in {10,20,...,80} - \pgfmathtruncatemacro{\rang}{180 - \d } - \draw (\d:3.9 cm) node[font=\tiny] {\rang} - (\d:4.6 cm) node[font=\tiny] {\d}; - -\draw (90: 4.25cm) node[font=\small] {90}; -\draw (90: 4.6 cm) -- (90:5cm) - (90: 3.9 cm) -- (90:3.5cm) ; - -\foreach \d in {100,110,...,170} - \pgfmathtruncatemacro{\rang}{180 - \d } - \draw (\d:3.9 cm) node[font=\tiny] {\rang} - (\d:4.6 cm) node[font=\tiny] {\d}; - - \draw (180: 4.5cm) node[font=\small] {180} - (180: 3.9cm) node[font=\small] {0}; -\tkzActivOn -} - \def\FullProtractor{% -\tkzActivOff \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 (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}{% @@ -90,10 +49,9 @@ } \def\FullProtractorReturn{% -\tkzActivOff -\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!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}{% @@ -108,65 +66,35 @@ \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); -\tkzActivOn } - -\newif\iftkz@RappReturn -\newif\iftkz@RappFull +\global\let\tkz@@Protractor\FullProtractor \pgfkeys{ protractor/.cd, - with/.is choice, - with/full/.code = {\global\let\tkz@@Protractor\FullProtractor - \tkz@RappFulltrue}, - with/half/.code = {\global\let\tkz@@Protractor\HalfProtractor - \tkz@RappFullfalse}, - with/.default = full, 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/.default = true + return/.default = true, + /protractor/.search also={/tikz} } -\def\tkzOriProtractor{\pgfutil@ifnextchar[{\tkz@OriProtractor}{% - \tkz@OriProtractor[]}} -\def\tkz@OriProtractor[#1]{ - \pgfkeys{/protractor/.cd, - with=full, - shift={(0,0)}, - rotate=0, - lw=0.4pt, - scale =1, - return=false - } - \pgfqkeys{/protractor}{#1} - \pgfmathsetlengthmacro{\MO@lw}{\cmdMO@Rap@lw * \cmdMO@Rap@scale} - \begin{scope}[shift = \cmdMO@Rap@shift,% - 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} -} + + \def\tkzProtractor{\pgfutil@ifnextchar[{\tkz@Protractor}{\tkz@Protractor[]}} -\def\tkz@Protractor[#1](#2,#3){ - \pgfkeys{/protractor/.cd, - with=full, - shift={(0,0)}, - rotate=0, - lw=0.4pt, - scale =1, - return=false +\def\tkz@Protractor[#1](#2,#3){% + \pgfkeys{% + /protractor/.cd, + shift={(0,0)}, + rotate=0, + lw=0.4pt, + scale =1, + return=false } \pgfqkeys{/protractor}{#1} \tkz@@extractxy{#2} \global\tkz@ax\pgf@x \global\tkz@ay\pgf@y \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{cmdMO@Rap@rotate}% -\iftkz@RappFull \iftkz@RappReturn \global\let\tkz@@Protractor\FullProtractorReturn \fi @@ -179,25 +107,10 @@ line width=\MO@lw]% \tkz@@Protractor \end{scope} -\else - \iftkz@RappReturn% - \pgfmathsubtract{\cmdMO@Rap@rotate}{180} - \let\cmdMO@Rap@rotate\pgfmathresult - \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} -\fi } - %<--------------------------------------------------------------------------–> % fin de \tkzProtractor %<--------------------------------------------------------------------------–> +\makeatother \endinput diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-sectors.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex index 9934a6e3975..538a8f34f9b 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-sectors.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex @@ -1,35 +1,27 @@ +% tkz-obj-eu-sectors.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{1.16 c} -\def\filedate{2011/06/01} - -%<--------------------------------------------------------------------------–> +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-eu-sectors.tex} +\makeatletter %<----------------------- Sectors ------------------------------–> -%<--------------------------------------------------------------------------–> \tikzset{sstyle/.style={#1}} - - -\global\def\tkz@nums{0} +\gdef\tkz@nums{0} \pgfkeys{/drawsector/.cd, -towards/.code = {\global\def\tkz@nums{0}}, -rotate/.code = {\global\def\tkz@nums{1}}, -R/.code = {\global\def\tkz@nums{2}}, -R with nodes/.code = {\global\def\tkz@nums{3}}, -/drawsector/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} + towards/.code = {\def\tkz@nums{0}}, + rotate/.code = {\def\tkz@nums{1}}, + R/.code = {\def\tkz@nums{2}}, + R with nodes/.code = {\def\tkz@nums{3}}, + towards, + /drawsector/.search also = {/tikz}, } \def\tkzDrawSector{\pgfutil@ifnextchar[{\tkz@DrawSector}{\tkz@DrawSector[]}} \def\tkz@DrawSector[#1](#2,#3)(#4){% \begingroup -\pgfkeys{/drawsector/.cd,towards} \pgfqkeys{/drawsector}{#1} \ifcase\tkz@nums% \tkzDrawSectorN[#1](#2,#3)(#4) @@ -42,8 +34,6 @@ R with nodes/.code = {\global\def\tkz@nums{3}}, \fi \endgroup } - - \def\tkzDrawSectorRAngles{\pgfutil@ifnextchar[{\tkz@DrawSectorRAngles}{% \tkz@DrawSectorRAngles[]}} \def\tkz@DrawSectorRAngles[#1](#2,#3)(#4,#5){% @@ -68,7 +58,7 @@ R with nodes/.code = {\global\def\tkz@nums{3}}, (#2) --(\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3)--cycle; \endgroup } % revoir il y a plus simple que ce shift !!! - %<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> % \tkzDrawSectorN(O,A)(B) %<--------------------------------------------------------------------------–> \def\tkzDrawSectorN{\pgfutil@ifnextchar[{\tkz@DrawSectorN}{% @@ -116,8 +106,8 @@ R with nodes/.code = {\global\def\tkz@nums{3}}, % \tkzDrawSectorRwithNodesAngles(O,A,B)(ang1,ang2) %<--------------------------------------------------------------------------–> \def\tkzDrawSectorRwithNodesAngles{\pgfutil@ifnextchar[{% - \tkz@DrawSectorRwithNodesAngles}{% - \tkz@DrawSectorRwithNodesAngles[]}} + \tkz@DrawSectorRwithNodesAngles}{% + \tkz@DrawSectorRwithNodesAngles[]}} \def\tkz@DrawSectorRwithNodesAngles[#1](#2,#3,#4)(#5,#6){% \begingroup \tkzCalcLength(#3,#4)\tkzGetLength{tkz@radius} @@ -155,23 +145,20 @@ R with nodes/.code = {\global\def\tkz@nums{3}}, % Fill %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> -\global\def\tkz@nums{0} -\pgfkeys{/fillsector/.cd, -towards/.code = {\global\def\tkz@nums{0}}, -rotate/.code = {\global\def\tkz@nums{1}}, -R/.code = {\global\def\tkz@nums{2}}, -R with nodes/.code = {\global\def\tkz@nums{3}}, -color/.code = {\global\def\tkz@fillcolor{#1}}, -/fillsector/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} +\gdef\tkz@nums{0} +\pgfkeys{/@fillsector/.cd, + towards/.code = {\def\tkz@nums{0}}, + rotate/.code = {\def\tkz@nums{1}}, + R/.code = {\def\tkz@nums{2}}, + R with nodes/.code = {\def\tkz@nums{3}}, + towards, + /@fillsector/.search also={/tikz}, } \def\tkzFillSector{\pgfutil@ifnextchar[{\tkz@FillSector}{\tkz@FillSector[]}} \def\tkz@FillSector[#1](#2,#3)(#4){% \begingroup -\pgfkeys{/fillsector/.cd,towards} -\pgfqkeys{/fillsector}{#1} +\pgfqkeys{/@fillsector}{#1} \ifcase\tkz@nums% \tkzFillSectorN[#1](#2,#3)(#4) \or% 1 @@ -208,7 +195,7 @@ color/.code = {\global\def\tkz@fillcolor{#1}}, \edef\tkz@FirstAngle{\pgfmathresult}% \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} \edef\tkz@SecondAngle{\pgfmathresult} - \path[shift = {(#2)},/fillsector/.cd,fill=\tkz@fillcolor,#1] (#2) -- % + \path[shift = {(#2)},/@fillsector/.cd,fill=\tkz@fillcolor,#1] (#2) -- % (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3)--cycle; \endgroup } @@ -247,9 +234,9 @@ color/.code = {\global\def\tkz@fillcolor{#1}}, %<--------------------------------------------------------------------------–> % \tkzFillSectorAngles(O,A)(ang1,ang2) %<--------------------------------------------------------------------------–> -\def\tkzDrawSectorAngles{\pgfutil@ifnextchar[{\tkz@illSectorAngles}{% - \tkz@illSectorAngles[]}} -\def\tkz@illSectorAngles[#1](#2,#3)(#4,#5){% +\def\tkzFillSectorAngles{\pgfutil@ifnextchar[{\tkz@FillSectorAngles}{% + \tkz@FillSectorAngles[]}} +\def\tkz@FillSectorAngles[#1](#2,#3)(#4,#5){% \begingroup \tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius} \tkz@FillSectorRAngles[#1](#2,\tkz@radius pt)(#4,#5) @@ -324,11 +311,10 @@ color/.code = {\global\def\tkz@fillcolor{#1}}, %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> \def\tkz@numcs{0} -\pgfkeys{ -/clipsector/.cd, -towards/.code = {\global\def\tkz@numcs{0}}, -rotate/.code = {\global\def\tkz@numcs{1}}, -R/.code = {\global\def\tkz@numcs{2}}, +\pgfkeys{/clipsector/.cd, + towards/.code = {\def\tkz@numcs{0}}, + rotate/.code = {\def\tkz@numcs{1}}, + R/.code = {\def\tkz@numcs{2}}, } %<--------------------------------------------------------------------------–> \def\tkzClipSector{\pgfutil@ifnextchar[{\tkz@ClipSector}{% @@ -347,5 +333,6 @@ R/.code = {\global\def\tkz@numcs{2}}, \fi \endgroup } +\makeatother \endinput
\ No newline at end of file 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 diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex new file mode 100644 index 00000000000..0abc2e8166d --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex @@ -0,0 +1,509 @@ +% tkz-obj-eu-triangles.tex +% Copyright 2019 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-triangles.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% Triangle Equilateral +%<--------------------------------------------------------------------------–> +\def\tkzDefEquilateral(#1,#2){ +\begingroup +\tkzDefMidPoint(#1,#2) + \tkzURotateAngle(#1,60)(#2) +\endgroup +} +%<--------------------------------------------------------------------------–> + +\def\tkzDrawEquilateral{\pgfutil@ifnextchar[{\tkz@Equilateral}{% + \tkz@Equilateral[]}} + +\def\tkz@Equilateral[#1](#2,#3){% +\begingroup + \tkzURotateAngle(#2,60)(#3) + \tkzDrawPolygon[#1](#2,#3,tkzPointResult) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Triangle OneTwo +%<--------------------------------------------------------------------------–> +\def\tkzPhi{1.618034} +\def\tkzInvPhi{0.618034} +\def\tkzSqrtPhi{1.27202} + +\def\tkzDefTwoOne(#1,#2){ +\begingroup + \tkzVecKOrth[-.5](#2,#1) + \endgroup +} +\def\tkzDefPythagore(#1,#2){ +\begingroup + \tkzVecKOrth[-0.75](#2,#1) +\endgroup +} +\def\tkzDefSchoolTriangle(#1,#2){ +\begingroup + \tkzVecKOrth[-1](#2,#1) + \pgfnodealias{tkz@a}{tkzPointResult} + \tkzURotateAngle(#1,30)(#2) + \tkzInterLL(#1,tkzPointResult)(#2,tkz@a) +\endgroup +} +\def\tkzDefGoldTriangle(#1,#2){ +\begingroup + \tkzURotateAngle(#1,36)(#2) +\endgroup +} +\def\tkzDefEuclideTriangle(#1,#2){ +\begingroup + \tkzURotateAngle(#1,72)(#2) + \tkzUHomo(#1,\tkzPhi)(tkzPointResult) +\endgroup +} +\def\tkzDefGoldenTriangle(#1,#2){ +\begingroup + \tkzVecKOrth[-\tkzInvPhi](#2,#1) +\endgroup +} +\def\tkzDefCheopsTriangle(#1,#2){ +\begingroup +\tkzDefMidPoint(#1,#2) + \tkzVecKOrth[-\tkzSqrtPhi](tkzPointResult,#1) +\endgroup +} +\def\tkzDefTwoAnglesTriangle(#1,#2){ +\begingroup + \tkzURotateAngle(#1,\tkz@alpha)(#2) + \pgfnodealias{tkz@pta}{tkzPointResult} + \tkzURotateAngle(#2,-\tkz@beta)(#1) + \pgfnodealias{tkz@ptb}{tkzPointResult} + \tkzInterLL(#1,tkz@pta)(#2,tkz@ptb) +\endgroup +} +%<--------------------------------------------------------------------------–> +% Triangles +%<--------------------------------------------------------------------------–> + +\def\tkz@numtr{0} +\pgfkeys{% + /deftriangle/.cd, + equilateral/.code = \def\tkz@numtr{0}, + half/.code = \def\tkz@numtr{1}, + pythagore/.code = \def\tkz@numtr{2}, + school/.code = \def\tkz@numtr{3}, + golden/.code = \def\tkz@numtr{4}, + sublime/.code = \def\tkz@numtr{4}, + euclide/.code = \def\tkz@numtr{5}, + gold/.code = \def\tkz@numtr{6}, + cheops/.code = \def\tkz@numtr{7}, + two angles/.code args = {#1 and #2} { \def\tkz@numtr{8}% + \def\tkz@alpha{#1}% + \def\tkz@beta{#2}} +} + +\def\tkzDefTriangle{\pgfutil@ifnextchar[{\tkz@DefTriangle}{\tkz@DefTriangle[]}} +\def\tkz@DefTriangle[#1](#2,#3){% +\begingroup +\pgfkeys{/deftriangle/.cd,equilateral} +\pgfqkeys{/deftriangle}{#1} +\ifcase\tkz@numtr% + \tkzDefEquilateral(#2,#3) + \or% 1 + \tkzDefTwoOne(#2,#3) + \or% 2 + \tkzDefPythagore(#2,#3) + \or% 3 + \tkzDefSchoolTriangle(#2,#3) + \or% 4 + \tkzDefGoldenTriangle(#2,#3) + \or% 5 + \tkzDefEuclideTriangle(#2,#3) + \or% 6 + \tkzDefGoldTriangle(#2,#3) + \or% 7 + \tkzDefCheopsTriangle(#2,#3) + \or% 8 + \tkzDefTwoAnglesTriangle(#2,#3) \fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% Draw Triangles +%<--------------------------------------------------------------------------–> + +\def\tkz@numdtr{0} +\pgfkeys{/drawtriangle/.cd, + equilateral/.code = {\def\tkz@numdtr{0}}, + half/.code = {\def\tkz@numdtr{1}}, + pythagore/.code = {\def\tkz@numdtr{2}}, + school/.code = {\def\tkz@numdtr{3}}, + golden/.code = {\def\tkz@numdtr{4}}, + sublime/.code = {\def\tkz@numdtr{4}}, + euclide/.code = {\def\tkz@numdtr{5}}, + gold/.code = {\def\tkz@numdtr{6}}, + cheops/.code = {\def\tkz@numdtr{7}}, + two angles/.code args = {#1 and #2}{\def\tkz@numdtr{8}% + \def\tkz@alpha{#1}% + \def\tkz@beta{#2}}, + equilateral, + /drawtriangle/.search also={/tikz} +} + +\def\tkzDrawTriangle{\pgfutil@ifnextchar[{\tkz@DrawTriangle}{% + \tkz@DrawTriangle[]}} +\def\tkz@DrawTriangle[#1](#2,#3){% +\begingroup +\pgfkeys{/drawtriangle/.cd,equilateral} +\pgfqkeys{/drawtriangle}{#1} +\ifcase\tkz@numdtr% + \tkzDefEquilateral(#2,#3) +\or% 1 + \tkzDefTwoOne(#2,#3) +\or% 2 + \tkzDefPythagore(#2,#3) +\or% 3 + \tkzDefSchoolTriangle(#2,#3) +\or% 4 + \tkzDefGoldenTriangle(#2,#3) +\or% 5 + \tkzDefEuclideTriangle(#2,#3) +\or% 6 + \tkzDefGoldTriangle(#2,#3) +\or% 7 + \tkzDefCheopsTriangle(#2,#3) +\or% 8 + \tkzDefTwoAnglesTriangle(#2,#3) +\fi + \draw[/drawtriangle/.cd,line style,#1] (#2)--(#3)--(tkzPointResult)--cycle; +\endgroup +} + +%<--------------------------------------------------------------------------–> +% les triangles sspécifiques +%<--------------------------------------------------------------------------–> + +%<--------------------------------------------------------------------------– +\def\tkz@numtspc{0} +\pgfkeys{/tkzDefSpcTriangle/.cd, + in/.code = \def\tkz@numtspc{0}, + incentral/.code = \def\tkz@numtspc{0}, + ex/.code = \def\tkz@numtspc{1}, + excentral/.code = \def\tkz@numtspc{1}, + extouch/.code = \def\tkz@numtspc{2}, + intouch/.code = \def\tkz@numtspc{3}, + contact/.code = \def\tkz@numtspc{3}, + centroid/.code = \def\tkz@numtspc{4}, + medial/.code = \def\tkz@numtspc{4}, + orthic/.code = \def\tkz@numtspc{5}, + ortho/.code = \def\tkz@numtspc{5}, + feuerbach/.code = \def\tkz@numtspc{6}, + euler/.code = \def\tkz@numtspc{7}, + tangential/.code = \def\tkz@numtspc{8}, + symmedian/.code = \def\tkz@numtspc{9}, + name/.store in = \tkz@pttr@name, + name = {}, + centroid, + } +\def\tkzDefSpcTriangle{\pgfutil@ifnextchar[{\tkz@DefSpcTriangle}{% + \tkz@DefSpcTriangle[]}} +\def\tkz@DefSpcTriangle[#1](#2)#3{% +\begingroup +\pgfqkeys{/tkzDefSpcTriangle}{#1} +\ifcase\tkz@numtspc% + \tkzDefIncentralTriangle(#2){#3} + \or% 1 + \tkzDefExcentralTriangle(#2){#3} + \or% 2 + \tkzDefExtouchTriangle(#2){#3} + \or% 3 + \tkzDefIntouchTriangle(#2){#3} + \or% 4 + \tkzDefCentroidTriangle(#2){#3} + \or% 5 + \tkzDefOrthicTriangle(#2){#3} + \or% 6 + \tkzDefFeuerbachTriangle(#2){#3} + \or% 7 + \tkzDefEulerTriangle(#2){#3} + \or% 8 + \tkzDefTangentialTriangle(#2){#3} + \or% 8 + \tkzDefSymmedianTriangle(#2){#3} + \fi +\endgroup +} + + +\pgfkeys{/setuppttr/.is family} +\def\SetUpPTTR#1{\pgfqkeys{/setuppttr}{#1}} +\pgfkeys{/setuppttr/.cd, + name/.store in = \tkz@pttr@name, + name = {} +} +\def\tkz@recuplast(#1,#2){\def\tkz@last{#1}} +\def\tkz@stop{\tkz@stop} +%<--------------------------------------------------------------------------– +% InCentral +%<--------------------------------------------------------------------------– +% The Incentral triangle is the triangle whose vertices are determined by +% theintersections of the reference triangle’s angle bisectors with the +% respective opposite sides. +%<--------------------------------------------------------------------------–> +\def\@DefIncentralTriangle(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \tkz@recuplast(#3) + \tkzDefBisectorLine(#2,#1,\tkz@last) + \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult) + \pgfnodealias{#4}{tkzPointResult} + \ifx\tkz@tmp\tkz@stop\else\@DefIncentralTriangle(#2,#3)(#5)\fi + \pgfnodealias{\tkz@pttr@name#4}{#4} +} + + +\def\tkzDefIncentralTriangle{\pgfutil@ifnextchar[{% + \tkz@DefIncentralTriangle}{% + \tkz@DefIncentralTriangle[]}} + +\def\tkz@DefIncentralTriangle[#1](#2)#3{% +\begingroup + \SetUpPTTR{#1} + \pgfinterruptboundingbox + \@DefIncentralTriangle(#2,#2)(#3,\tkz@stop) + \endpgfinterruptboundingbox +\endgroup +} +\let\tkzIncentralTriangle\tkzInExcentralTriangle +%<--------------------------------------------------------------------------– +% ExCentral +%<--------------------------------------------------------------------------– + +%<--------------------------------------------------------------------------–> +\def\@DefExcentralTriangle(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \tkz@recuplast(#3) + \tkzDefExCircle(#2,#1,\tkz@last) + \pgfnodealias{#4}{tkzPointResult} + \ifx\tkz@tmp\tkz@stop\else\@DefExcentralTriangle(#2,#3)(#5)\fi + \pgfnodealias{\tkz@pttr@name#4}{#4} +} + +\def\tkzDefExcentralTriangle{\pgfutil@ifnextchar[{% + \tkz@DefExcentralTriangle}{% + \tkz@DefExcentralTriangle[]}} + +\def\tkz@DefExcentralTriangle[#1](#2)#3{% +\begingroup + \SetUpPTTR{#1} + \@DefExcentralTriangle(#2,#2)(#3,\tkz@stop) +\endgroup +} +\let\tkzExcentralTriangle\tkzDefExcentralTriangle +%<--------------------------------------------------------------------------–> +% Intouch Triangle +% The contact triangle of a triangle ABC, also called the intouch triangle, is the triangle formed by the points of tangency of the incircle of ABC with ABC. +%<--------------------------------------------------------------------------–> +\def\@DefIntouchTriangle(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \tkz@recuplast(#3) + \tkzUProjection(#2,\tkz@last)(tkz@pt) + \pgfnodealias{#4}{tkzPointResult} + \ifx\tkz@tmp\tkz@stop\else\@DefIntouchTriangle(#2,#3)(#5)\fi + \pgfnodealias{\tkz@pttr@name#4}{#4} +} + +\def\tkzDefIntouchTriangle{\pgfutil@ifnextchar[{% + \tkz@DefIntouchTriangle}{% + \tkz@DefIntouchTriangle[]}} + +\def\tkz@DefIntouchTriangle[#1](#2)#3{% +\begingroup + \SetUpPTTR{#1} + \tkzInCenter(#2) + \pgfnodealias{tkz@pt}{tkzPointResult} + \@DefIntouchTriangle(#2,#2)(#3,\tkz@stop) +\endgroup +} +\let\tkzDefContactTriangle\tkzDefIntouchTriangle +%<--------------------------------------------------------------------------–> +% Extouch Triangle +% The extouch triangle T_1T_2T_3 is the triangle formed by the points of tangency of a triangle A_1A_2A_3 with its excircles J_1, J_2, and J_3. +%<--------------------------------------------------------------------------–> +\def\tkzDefExtouchTriangle{\pgfutil@ifnextchar[{% + \tkz@DefExtouchTriangle}{% + \tkz@DefExtouchTriangle[]}} + +\def\tkz@DefExtouchTriangle[#1](#2,#3,#4)#5{% +\begingroup + \SetUpPTTR{#1} + \foreach \name [count=\i] in {#5} {% + \global\expandafter\edef\csname tkz@point\i\endcsname{\name} + } + \tkzDefExcentralTriangle(#2,#3,#4){tkz@a,tkz@b,tkz@c} + \tkzUProjection(#3,#4)(tkz@a) + \pgfnodealias{\tkz@pttr@name\csname tkz@point1\endcsname}{tkzPointResult} + \tkzUProjection(#2,#3)(tkz@c) + \pgfnodealias{\tkz@pttr@name\csname tkz@point3\endcsname}{tkzPointResult} + \tkzUProjection(#2,#4)(tkz@b) + \pgfnodealias{\tkz@pttr@name\csname tkz@point2\endcsname}{tkzPointResult} +\endgroup +} + +%<--------------------------------------------------------------------------–> +% Feuerbach triangle The Feuerbach triangle is the triangle formed by the three points of tangency of the nine-point circle with the excircles + +\def\tkzDefFeuerbachTriangle{\pgfutil@ifnextchar[{% + \tkz@DefFeuerbachTriangle}{\tkz@DefFeuerbachTriangle[]}} + +\def\tkz@DefFeuerbachTriangle[#1](#2,#3,#4)#5{% +\begingroup + \SetUpPTTR{#1} + \foreach \name [count=\i] in {#5} {% + \global\expandafter\edef\csname tkz@point\i\endcsname{\name} + } + \tkzDefExCircle(#2,#3,#4) + \pgfnodealias{tkz@b}{tkzPointResult} \tkzGetLength{tkz@rb} + \tkzDefExCircle(#3,#4,#2) + \pgfnodealias{tkz@c}{tkzPointResult} \tkzGetLength{tkz@rc} + \tkzDefExCircle(#4,#2,#3) + \pgfnodealias{tkz@a}{tkzPointResult} \tkzGetLength{tkz@ra} + \tkzInterLC[R](#3,tkz@b)(tkz@b,\tkz@rb pt) + \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point2\endcsname} + \tkzInterLC[R](#4,tkz@c)(tkz@c,\tkz@rc pt) + \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point3\endcsname} + \tkzInterLC[R](#2,tkz@a)(tkz@a,\tkz@ra pt) + \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point1\endcsname} +\endgroup +} +%<--------------------------------------------------------------------------–> +% Centroid +%<--------------------------------------------------------------------------–> +% The medial triangle or midpoint triangle of a triangle ABC +\def\@DefCentroidTriangle(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \tkz@recuplast(#3) + \pgfcoordinate{#4}{% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#2}{center}}% + {\pgfpointanchor{\tkz@last}{center}}} + }% + \ifx\tkz@tmp\tkz@stop\else\@DefCentroidTriangle(#2,#3)(#5)\fi + \pgfnodealias{\tkz@pttr@name#4}{#4} + } +\def\tkzDefCentroidTriangle{\pgfutil@ifnextchar[{\tkz@DefCentroidTriangle} + {\tkz@DefCentroidTriangle[]}} +\def\tkz@DefCentroidTriangle[#1](#2)#3{% +\begingroup + \SetUpPTTR{#1} + \@DefCentroidTriangle(#2,#2)(#3,\tkz@stop) +\endgroup +} +\let\tkzDefMedialTriangle\tkzDefCentroidTriangle +\let\tkzDefMidpointTriangle\tkzDefCentroidTriangle +%<--------------------------------------------------------------------------–> +% OrthicTriangle H Ha Hb Hc +%<--------------------------------------------------------------------------–> +% Orthic Triangle +%<--------------------------------------------------------------------------–> +\def\@DefOrthicTriangle(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \tkz@recuplast(#3) + \tkzUProjection(#2,\tkz@last)(#1) + \pgfnodealias{#4}{tkzPointResult} + \ifx\tkz@tmp\tkz@stop\else\@DefOrthicTriangle(#2,#3)(#5)\fi + \pgfnodealias{\tkz@pttr@name#4}{#4} +} + +\def\tkzDefOrthicTriangle{\pgfutil@ifnextchar[{\tkz@DefOrthicTriangle} + {\tkz@DefOrthicTriangle[]}} +\def\tkz@DefOrthicTriangle[#1](#2)#3{% +\begingroup + \SetUpPTTR{#1} + \@DefOrthicTriangle(#2,#2)(#3,\tkz@stop) +\endgroup +} +\let\tkzDefAltitudeTriangle\tkzDefOrthicTriangle + +%<--------------------------------------------------------------------------–> +% The Euler triangle of a triangle ABC is the triangle E_AE_BE_C whose vertices are the midpoints of the segments joining the orthocenter H with the respective vertices. The vertices of the triangle are known as the Euler points, and lie on the nine-point circle. + +\def\tkzDefEulerTriangle{\pgfutil@ifnextchar[{% + \tkz@DefEulerTriangle}{\tkz@DefEulerTriangle[]}} +\def\tkz@DefEulerTriangle[#1](#2,#3,#4)#5{% +\begingroup + \SetUpPTTR{#1} + \pgfinterruptboundingbox + \tkzOrthoCenter(#2,#3,#4) + \pgfnodealias{tkz@e}{tkzPointResult} + \tkzDefMidPoint(#2,tkz@e) + \pgfnodealias{tkz@m1}{tkzPointResult} + \tkzDefMidPoint(#3,tkz@e) + \pgfnodealias{tkz@m2}{tkzPointResult} + \tkzDefMidPoint(#4,tkz@e) + \pgfnodealias{tkz@m3}{tkzPointResult} + \endpgfinterruptboundingbox + \foreach \name [count=\i] in {#5} {% + \coordinate (\tkz@pttr@name\name) at (tkz@m\i); + } +\endgroup +} +%<--------------------------------------------------------------------------–> +% +%<--------------------------------------------------------------------------–> +\def\tkzDefTangentialTriangle{\pgfutil@ifnextchar[{% + \tkz@DefTangentialTriangle}{\tkz@DefTangentialTriangle[]}} +\def\tkz@DefTangentialTriangle[#1](#2,#3,#4)#5{% +\begingroup + \SetUpPTTR{#1} + \tkzCircumCenter(#2,#3,#4) + \pgfnodealias{tkz@circ}{tkzPointResult} + \tkzDefLine[orthogonal=through #2](tkz@circ,#2) + \pgfnodealias{tkz@pta}{tkzPointResult} + \tkzDefLine[orthogonal=through #3](tkz@circ,#3) + \pgfnodealias{tkz@ptb}{tkzPointResult} + \tkzDefLine[orthogonal=through #4](tkz@circ,#4) + \pgfnodealias{tkz@ptc}{tkzPointResult} + \tkzInterLL(#2,tkz@pta)(#3,tkz@ptb) + \pgfnodealias{tkz@tg3}{tkzPointResult} + \tkzInterLL(#3,tkz@ptb)(#4,tkz@ptc) + \pgfnodealias{tkz@tg1}{tkzPointResult} + \tkzInterLL(#4,tkz@ptc)(#2,tkz@pta) + \pgfnodealias{tkz@tg2}{tkzPointResult} + \foreach \name [count=\i] in {#5} {% + \coordinate (\tkz@pttr@name\name) at (tkz@tg\i); + } +\endgroup +} +%<--------------------------------------------------------------------------– +% tkzDefSymmedianLine +%<--------------------------------------------------------------------------– +% The Incentral triangle is the triangle whose vertices are determined by +% theintersections of the reference triangle’s angle bisectors with the +% respective opposite sides. +%<--------------------------------------------------------------------------–> +\def\@DefSymmedianTriangle(#1,#2,#3)(#4,#5){% + \def\tkz@tmp{#5}% + \tkz@recuplast(#3) + \tkzDefSymmedianLine(#2,#1,\tkz@last) + \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult) + \pgfnodealias{#4}{tkzPointResult} + \ifx\tkz@tmp\tkz@stop\else\@DefSymmedianTriangle(#2,#3)(#5)\fi + \pgfnodealias{\tkz@pttr@name#4}{#4} +} + +\def\tkzDefSymmedianTriangle{\pgfutil@ifnextchar[{% + \tkz@DefSymmedianTriangle}{% + \tkz@DefSymmedianTriangle[]}} + +\def\tkz@DefSymmedianTriangle[#1](#2)#3{% +\begingroup + \SetUpPTTR{#1} + \pgfinterruptboundingbox + \@DefSymmedianTriangle(#2,#2)(#3,\tkz@stop) + \endpgfinterruptboundingbox +\endgroup +} + +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex deleted file mode 100644 index 6532c7f92bd..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex +++ /dev/null @@ -1,342 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - -%<--------------------------------------------------------------------------–> - -%<--------------------------------------------------------------------------–> -% les lignes -%<--------------------------------------------------------------------------–> -\def\tkz@numl{0} -\pgfkeys{/tkzDefLine/.cd, - mediator/.code ={\global\def\tkz@numl{0}}, - perpendicular/.code args={through #1} {\global\def\tkz@numl{1}% - \global\def\tkz@through{#1}}, - orthogonal/.code args={through #1} {\global\def\tkz@numl{1}% - \global\def\tkz@through{#1}}, - parallel/.code args={through #1}{\global\def\tkz@numl{2}% - \global\def\tkz@through{#1}}, - bisector/.code ={\global\def\tkz@numl{3}}, - bisector out/.code ={\global\def\tkz@numl{4}}, - K/.code =\def\tkz@koeff{#1} -} - -\def\tkzDefLine{\pgfutil@ifnextchar[{\tkz@DefLine}{% - \tkz@DefLine[]}} -\def\tkz@DefLine[#1](#2){% -\begingroup -\pgfkeys{/tkzDefLine/.cd,K=1} -\pgfqkeys{/tkzDefLine}{#1} -\ifcase\tkz@numl% - % first case 0 - \tkzDefMediatorLine(#2) - \or% 1 - \tkzDefOrthLine[\tkz@koeff](#2) - \or% 2 - \tkzDefLineLL(#2) - \or% 3 - \tkzDefBisectorLine(#2) - \or% 4 - \tkzDefBisectorOutLine(#2) - \fi -\endgroup -} -%<--------------------------------------------------------------------------–> -% tkzLineLL revoir out !! -%<--------------------------------------------------------------------------–> -\def\tkzDefLineLL(#1,#2){% -\begingroup% recherche d'un vecteur tq #2#3=#4tkz@point - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \path[coordinate](\tkz@through)--+(\pgf@xa,\pgf@ya)% - coordinate (tkzPointResult); -\endgroup}% -%<--------------------------------------------------------------------------–> -% tkzOrthLine -%<--------------------------------------------------------------------------–> -\def\tkzDefOrthLine{\pgfutil@ifnextchar[{\tkz@DefOrthLine}{% - \tkz@DefOrthLine[1]}} - \def\tkz@DefOrthLine[#1](#2,#3){% -\begingroup - \tkzVecKOrth(#2,#3){tkz@OLtmp} - \tkz@VecKCoLinear[#1](#2,tkz@OLtmp,\tkz@through){tkzPointResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% tkzMediatorLine -%<--------------------------------------------------------------------------–> -\def\tkzDefMediatorLine(#1,#2){% -\begingroup - \path (#1) -- (#2) coordinate[pos=.5](tkzPointResult); - \tkzURotateAngle(#1,60)(#2) \tkzGetPoint{tkzFirstPointResult} - \tkzURotateAngle(#2,60)(#1) \tkzGetPoint{tkzSecondPointResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% BisectorLine % pb avec un angle plat -%<--------------------------------------------------------------------------–> -\def\tkzDefBisectorLine(#1,#2,#3){% -\begingroup - \tkzDuplicateLen(#2,#1)(#2,#3) \tkzGetPoint{tkz@tmp} - \tkzURotateAngle(tkz@tmp,60)(#1) \tkzGetPoint{tkzPointResult} - % \tkzVecKNorm[5](#2,#1){tkz@pt1} - % \tkzVecKNorm[5](#2,#3){tkz@pt2} - % \tkzDefEquilateral(tkz@pt2,tkz@pt1) - % \tkzVecKNorm(#2,tkzPointResult){tkzPointResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% Out BisectorLine -%<--------------------------------------------------------------------------–> -\def\tkzDefBisectorOutLine(#1,#2,#3){% -\begingroup - \tkzVecKNorm(#2,#1){tkz@pt1} - \tkzVecKNorm[-1](#2,#3){tkz@pt2} - \tkzDefEquilateral(tkz@pt2,tkz@pt1)\tkzGetPoint{tkz@pt3} - \tkzVecKNorm(#2,tkz@pt3){tkzPointResult} -\endgroup -} -%<-------------------------------------------------------------------------–> -\def\tkzLabelLine{\pgfutil@ifnextchar[{\tkz@AddLabelLine}{% - \tkz@AddLabelLine[]}} -\def\tkz@AddLabelLine[#1](#2,#3)#4{ - \path (#2) to node[#1]{#4}(#3); -} -%<--------------------------------------------------------------------------–> -% Setup Line -%<--------------------------------------------------------------------------–> - -\tikzset{line style/.style={% - line width = \tkz@euc@linewidth, - color = \tkz@euc@linecolor, - style = \tkz@euc@linestyle, - add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}}} -\pgfkeys{% -setupline/.cd, -line width/.code = {\global\edef\tkz@line@lw{#1}}, -color/.code = {\global\edef\tkz@line@color{#1}}, -style/.code = {\global\edef\tkz@line@style{#1}}, -add/.code args = {#1 and #2} {\global\edef\tkz@line@left{#1}% - \global\edef\tkz@line@right{#2} } -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpLine}{% - \tkzActivOff\tkz@SetUpLine[]}} -%<--------------------------------------------------------------------------–> -\def\tkz@SetUpLine[#1]{% -\tkzActivOff -\pgfkeys{% -setupline/.cd, -line width = \tkz@euc@linewidth, -color = \tkz@euc@linecolor, -style = \tkz@euc@linestyle, -add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}} -\pgfqkeys{/setupline}{#1} -\tikzset{line style/.style={% - color = \tkz@line@color, - line width = \tkz@line@lw, - style = \tkz@line@style, - add = {\tkz@line@left} and {\tkz@line@right} - }} -}% -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% Draw line -%<--------------------------------------------------------------------------–> -\pgfkeys{% -tkzdrawline/.cd, -start/.code = {\def\tkz@line@start{#1}},% -end/.code = {\def\tkz@line@end{#1}}, -start style/.code ={\tikzset{tkzstartstyle/.style={#1}}}, -end style/.code ={\tikzset{tkzendstyle/.style={#1}}}, - /tkzdrawline/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} - } - -\def\tkzDrawLine{\pgfutil@ifnextchar[{\tkz@DrawLine}{% - \tkz@DrawLine[]}} -\def\tkz@DrawLine[#1](#2,#3){% -\begingroup -\pgfkeys{% -tkzdrawline/.cd, -start = {} , -end = {} , -start style={}, -end style={},} -\pgfqkeys{/tkzdrawline}{#1} -\draw[ line style,/tkzdrawline/.cd,#1] (#2) to% - node [at start,left,/tkzdrawline/.cd,tkzstartstyle] {\tkz@line@start}% - node [at end,right,/tkzdrawline/.cd,tkzendstyle] {\tkz@line@end} (#3); -\endgroup -}% -%<--------------------------------------------------------------------------–> -\def\tkz@multiLines#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzDrawLine[\tkz@optline](#1)}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -%<--------------------------------------------------------------------------–> -\def\tkzDrawLines{\pgfutil@ifnextchar[{\tkz@DrawLines}{% - \tkz@DrawLines[]}} -\def\tkz@DrawLines[#1](#2){% -\global\edef\tkz@optline{#1} -\begingroup - \let\next\tkz@multiLines - \next#2 \@nil % -\endgroup -}% - - %<--------------------------------------------------------------------------–> -%<--------------------------- The SHOW --------------------------------–> -%<--------------------------------------------------------------------------–> -\global\def\tkz@numsh{0} -\pgfkeys{/show/.cd, - mediator/.code =\global\def\tkz@numsh{0}, - perpendicular/.code args={through #1} {\global\def\tkz@numsh{1}% - \global\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)\tkzGetPoint{tkzFirstPointResult} - \tkzURotateAngle(#3,60)(#2)\tkzGetPoint{tkzSecondPointResult} - \tkz@VecKOrthNorm[1](tkzmidpoint,#2){MED@tmp1} - \tkz@VecKOrthNorm[1](tkzmidpoint,#3){MED@tmp2} - \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp1){MED@1} - \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp2){MED@2} - \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){tkz@lltmp} - \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){tkz@OLtmp} - \tkz@VecKCoLinear[1](#2,tkz@OLtmp,#4){tkzPointCo} - \tkzInterLL(#2,#3)(#4,tkzPointCo)\tkzGetPoint{tkzPOpoint} - \tkzCalcLength(#4,tkzPOpoint)\tkzGetLength{tkz@mathLen} - \tkz@VecKNorm[1](#2,#3){PO@tmp} - \tkz@VecKCoLinear[1](#2,PO@tmp,tkzPOpoint){PO@tmp2} - \tkz@VecKCoLinear[-1](#2,PO@tmp,tkzPOpoint){PO@tmp1} - \tkz@VecKCoLinear[2](tkzPOpoint,PO@tmp1,tkzPOpoint){PO@1} - \tkz@VecKCoLinear[2](tkzPOpoint,PO@tmp2,tkzPOpoint){PO@2} - \ifdim\tkz@mathLen pt>10 pt\relax - \tkz@VecKNorm[1](#4,tkzPOpoint){PO@tmp1} - \else - \tkz@VecKOrthNorm[1](tkzPOpoint,PO@2){PO@tmp1} - \fi - \tkz@VecKCoLinear[-\tkz@show@gap](PO@tmp1,tkzPOpoint,tkzPOpoint){PO@3} - \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){tkz@pt1} - \tkzVecKNorm(#3,#4){tkz@pt2} - \tkzDefEquilateral(tkz@pt2,tkz@pt1)\tkzGetPoint{tkz@pt3} - \tkzVecKNorm(#3,tkz@pt3){tkzBisPoint} - \tkzVecKNorm[\tkz@show@size](#3,#2){BI@1} - \tkzVecKNorm[\tkz@show@size](#3,#4){BI@2} - \tkzVecK[\tkz@show@gap](#3,tkzBisPoint){tkzBisPoint} - \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 -} - -%<-------------------------------------------------------------------------–> -%<-------------------------------------------------------------------------–> - -\endinput diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-polygons.tex deleted file mode 100644 index 6f7f5441bff..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-polygons.tex +++ /dev/null @@ -1,278 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - -%<--------------------------------------------------------------------------–> -% Polygon -%<--------------------------------------------------------------------------–> -\def\tkzDrawPolygon{\pgfutil@ifnextchar[{\tkz@DrawPolygon}{% - \tkz@DrawPolygon[]}} -\def\tkz@DrawPolygon[#1](#2,#3){% -\begingroup -\draw[line style,#1] (#2) - \foreach \tkz@pt in {#3}{--(\tkz@pt)}--cycle;% -\endgroup -} -%<---------------------------- CLIP --------------------------------–> -% -%<--------------------------------------------------------------------------–> -\def\tkzClipPolygon(#1,#2){\path[clip] (#1) - \foreach \pt in {#2}{--(\pt)}--cycle; -} -%<---------------------------- FILL --------------------------------–> -% -%<--------------------------------------------------------------------------–> -\def\tkzFillPolygon{\pgfutil@ifnextchar[{\tkz@FillPolygon}{% - \tkz@FillPolygon[]}} -\def\tkz@FillPolygon[#1](#2,#3){% - \begingroup - \fill[#1] (#2) -\foreach \tkz@pt in {#3}{--(\tkz@pt)}--cycle;% -\endgroup -} - -%<--------------------------------------------------------------------------–> -% Triangle Equilateral -%<--------------------------------------------------------------------------–> -\def\tkzDefEquilateral(#1,#2){ -\begingroup - \tkzURotateAngle(#1,60)(#2) -\endgroup -} -%<--------------------------------------------------------------------------–> - -\def\tkzDrawEquilateral{\pgfutil@ifnextchar[{\tkz@Equilateral}{% - \tkz@Equilateral[]}} - -\def\tkz@Equilateral[#1](#2,#3){% -\begingroup - \tkzURotateAngle(#2,60)(#3) - \tkzDrawPolygon[#1](#2,#3,tkzPointResult) -\endgroup -} -%<--------------------------------------------------------------------------–> -% Triangle OneTwo -%<--------------------------------------------------------------------------–> -\def\tkzPhi{1.618034} -\def\tkzInvPhi{0.618034} -\def\tkzSqrtPhi{1.27202} - -\def\tkzDefTwoOne(#1,#2){ -\begingroup - \tkzVecKOrth[-.5](#2,#1){tkzPointResult} -\endgroup -} -\def\tkzDefPythagore(#1,#2){ -\begingroup - \tkzVecKOrth[-0.75](#2,#1){tkzPointResult} -\endgroup -} -\def\tkzDefSchoolTriangle(#1,#2){ -\begingroup - \tkzURotateAngle(#1,30)(#2) - \tkzVecKOrth[-1](#2,#1){tkz@a} - \tkzInterLL(#1,tkzPointResult)(#2,tkz@a) -\endgroup -} -\def\tkzDefGoldTriangle(#1,#2){ -\begingroup - \tkzURotateAngle(#1,36)(#2) -\endgroup -} -\def\tkzDefEuclideTriangle(#1,#2){ -\begingroup - \tkzURotateAngle(#1,72)(#2) - \tkzUHomo(#1,\tkzPhi)(tkzPointResult) -\endgroup -} -\def\tkzDefGoldenTriangle(#1,#2){ -\begingroup - \tkzVecKOrth[-\tkzInvPhi](#2,#1){tkzPointResult} -\endgroup -} -\def\tkzDefCheopsTriangle(#1,#2){ -\begingroup -\tkzDefMidPoint(#1,#2) - \tkzVecKOrth[-\tkzSqrtPhi](tkzPointResult,#1){tkzPointResult} -\endgroup -} -\def\tkzDefTwoAnglesTriangle(#1,#2){ -\begingroup - \tkzURotateAngle(#1,\tkz@alpha)(#2) \tkzGetPoint{tkz@pta} - \tkzURotateAngle(#2,-\tkz@beta)(#1) \tkzGetPoint{tkz@ptb} - \tkzInterLL(#1,tkz@pta)(#2,tkz@ptb) -\endgroup -} -\def\tkz@numtr{0} -\pgfkeys{/deftriangle/.cd, -equilateral/.code = \global\def\tkz@numtr{0}, -half/.code = \global\def\tkz@numtr{1}, -pythagore/.code = \global\def\tkz@numtr{2}, -school/.code = \global\def\tkz@numtr{3}, -golden/.code = \global\def\tkz@numtr{4}, -euclide/.code = \global\def\tkz@numtr{5}, -gold/.code = \global\def\tkz@numtr{6}, -cheops/.code = \global\def\tkz@numtr{7}, -two angles/.code args={#1 and #2} { \global\def\tkz@numtr{8}% - \global\def\tkz@alpha{#1}% - \global\def\tkz@beta{#2}} -} - -\def\tkzDefTriangle{\pgfutil@ifnextchar[{\tkz@DefTriangle}{% - \tkz@DefTriangle[]}} -\def\tkz@DefTriangle[#1](#2,#3){% -\begingroup -\pgfkeys{/deftriangle/.cd,equilateral} -\pgfqkeys{/deftriangle}{#1} -\ifcase\tkz@numtr% - \tkzDefEquilateral(#2,#3) - \or% 1 - \tkzDefTwoOne(#2,#3) - \or% 2 - \tkzDefPythagore(#2,#3) - \or% 3 - \tkzDefSchoolTriangle(#2,#3) - \or% 4 - \tkzDefGoldenTriangle(#2,#3) - \or% 5 - \tkzDefEuclideTriangle(#2,#3) - \or% 6 - \tkzDefGoldTriangle(#2,#3) - \or% 7 - \tkzDefCheopsTriangle(#2,#3) - \or% 8 - \tkzDefTwoAnglesTriangle(#2,#3) \fi -\endgroup -} - -\def\tkz@numdtr{0} -\pgfkeys{/drawtriangle/.cd, -equilateral/.code = {\global\def\tkz@numdtr{0}}, -half/.code = {\global\def\tkz@numdtr{1}}, -pythagore/.code = {\global\def\tkz@numdtr{2}}, -school/.code = {\global\def\tkz@numdtr{3}}, -golden/.code = {\global\def\tkz@numdtr{4}}, -euclide/.code = {\global\def\tkz@numdtr{5}}, -gold/.code = {\global\def\tkz@numdtr{6}}, -cheops/.code = {\global\def\tkz@numdtr{7}}, -two angles/.code args={#1 and #2} { \global\def\tkz@numdtr{8}% - \global\def\tkz@alpha{#1}% - \global\def\tkz@beta{#2}}, -/drawtriangle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} -} - -\def\tkzDrawTriangle{\pgfutil@ifnextchar[{\tkz@DrawTriangle}{% - \tkz@DrawTriangle[]}} -\def\tkz@DrawTriangle[#1](#2,#3){% -\begingroup -\pgfkeys{/drawtriangle/.cd,equilateral} -\pgfqkeys{/drawtriangle}{#1} -\ifcase\tkz@numdtr% -\tkzDefEquilateral(#2,#3) -\or% 1 -\tkzDefTwoOne(#2,#3) -\or% 2 -\tkzDefPythagore(#2,#3) -\or% 3 -\tkzDefSchoolTriangle(#2,#3) -\or% 4 -\tkzDefGoldenTriangle(#2,#3) -\or% 5 -\tkzDefEuclideTriangle(#2,#3) -\or% 6 -\tkzDefGoldTriangle(#2,#3) -\or% 7 -\tkzDefCheopsTriangle(#2,#3) -\or% 8 -\tkzDefTwoAnglesTriangle(#2,#3) -\fi - \draw[/drawtriangle/.cd,line style,#1] (#2)--(#3)--(tkzPointResult)--cycle;% -\endgroup -} - -%<--------------------------------------------------------------------------–> -% Droites particulières d'un triangle -%<--------------------------------------------------------------------------–> -% median -%<--------------------------------------------------------------------------–> -\def\tkzDrawMedian{\pgfutil@ifnextchar[{\tkz@Median}{\tkz@Median[]}} -\def\tkz@Median[#1](#2,#3)(#4){% -\begingroup - \tkzDefMidPoint(#3,#2) - \tkzDrawLine[add= 0 and 0,#1](#4,tkzPointResult) -\endgroup -} - -%<--------------------------------------------------------------------------–> -% altitude -%<--------------------------------------------------------------------------–> -\def\tkzDrawAltitude{\pgfutil@ifnextchar[{\tkz@Altitude}{\tkz@Altitude[]}} -\def\tkz@Altitude[#1](#2,#3)(#4){% -\begingroup - \tkzUProjection(#2,#3)(#4) - \tkzDrawLine[add= 0 and 0,#1](#4,tkzPointResult) -\endgroup -} -%<--------------------------------------------------------------------------–> -% bisector -%<--------------------------------------------------------------------------–> -\def\tkzDrawBisector{\pgfutil@ifnextchar[{\tkz@Bisector}{\tkz@Bisector[]}} -\def\tkz@Bisector[#1](#2,#3,#4){% -\begingroup - \tkzDefBisectorLine(#2,#3,#4) - \tkzInterLL(#2,#4)(#3,tkzPointResult) - \tkzDrawLine[add= 0 and 0,#1](#3,tkzPointResult) -\endgroup -} - - -%<--------------------------- square ---------------------------------–> -% -%<--------------------------------------------------------------------------–> -\def\tkzDefSquare(#1,#2){ -\begingroup - \tkzURotateAngle(#2,-90)(#1)\tkzGetPoint{tkzFirstPointResult} - \tkzURotateAngle(#1, 90)(#2)\tkzGetPoint{tkzSecondPointResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDrawSquare{\pgfutil@ifnextchar[{\tkz@DrawSquare}{% - \tkz@DrawSquare[]}} - -\def\tkz@DrawSquare[#1](#2,#3){% -\begingroup - \tkzDefSquare(#2,#3) - \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) -\endgroup -} -%<--------------------------- gold rectangle -------------------------------–> -% -%<--------------------------------------------------------------------------–> - -\def\tkzDefGoldRectangle(#1,#2){ -\begingroup - \tkzVecKOrth[-\tkzInvPhi](#2,#1){tkzFirstPointResult} - \tkzVecKOrth[\tkzInvPhi](#1,#2){tkzSecondPointResult} -\endgroup -} -\def\tkzDrawGoldRectangle{\pgfutil@ifnextchar[{\tkz@DrawGoldRectangle}{% - \tkz@DrawGoldRectangle[]}} - -\def\tkz@DrawGoldRectangle[#1](#2,#3){ -\begingroup - \tkzDefGoldRectangle(#2,#3) - \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult) -\endgroup -} - -\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-vectors.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-vectors.tex deleted file mode 100644 index 15637a8e975..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-vectors.tex +++ /dev/null @@ -1,119 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - %<--------------------------------------------------------------------------–> -% Vectors -%<--------------------------------------------------------------------------–> - -%<-------------------------------------------------------------------------–> -%<-------------------------------------------------------------------------–> -\def\tkzAddVectors(#1,#2)(#3,#4)#5{% - \begingroup - \pgfpointdiff{\pgfpointanchor{#3}{center}}% - {\pgfpointanchor{#4}{center}}% - \pgf@xb=\pgf@x% - \pgf@yb=\pgf@y% - \path[coordinate] (#2)--+(\pgf@xb,\pgf@yb) coordinate (#5); - \endgroup - } -%<--------------------------------------------------------------------------–> -% Draw vector -%<--------------------------------------------------------------------------–> -\tikzset{vector style/.style={>=latex,->}} -\pgfkeys{ -/tkzvec/.cd, -mark options/.code =\tikzset{mkstyle/.style={#1}}% - \global\edef\tkz@mk@arg{#1}, -label options/.code =\tikzset{lbstyle/.style={#1}}% - \global\edef\tkz@lb@arg{#1}, - /tkzvec/.unknown/.code ={\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} -} -\def\tkzDrawVector{\pgfutil@ifnextchar[{\tkz@DrawVector}{% - \tkz@DrawVector[]}} - \def\tkz@DrawVector[#1](#2,#3){% -\begingroup -\pgfkeys{/tkzvec/.cd,mark options={},label options={}} -\pgfqkeys{/tkzvec}{#1} -% \ifx\tkzutil@empty\tkz@line@symbol - \draw[vector style,#1] (#2) to (#3); -% \else -% \draw[vector style,line style,add=0 and 0,#1](#2) to node[sloped] -% {\textcolor{\tkz@line@colorsymbol}{\tkz@line@symbol}}(#3); -% \fi -% \ifx\tkzutil@empty\tkz@line@label -% \else -% \path (#2) to node[above=\tkz@line@poslabel]% -% {\textcolor{\tkz@line@colorlabel}{\tkz@line@label}}(#3); -% \fi\fi - \endgroup -} -%<-------------------------------------------------------------------------–> -%<-------------------------------------------------------------------------–> - -\def\tkzLabelVector{\pgfutil@ifnextchar[{\tkz@LabelVector}{% - \tkz@LabelVector[]}} -\def\tkz@LabelVector[#1](#2,#3)#4{% -\begingroup -\path (#2) to node[above,#1]{#4} (#3) ; -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% multiple -\def\tkz@multiLV#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzLabelVector[\tkz@optlv](#1){\tkz@labelvec}}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -%<--------------------------------------------------------------------------–> -% correction 09/12/2010 -\def\tkzLabelVectors{\pgfutil@ifnextchar[{\tkz@LabelVectors}{% - \tkz@LabelVectors[]}} -\def\tkz@LabelVectors[#1](#2)#3{% -\global\edef\tkz@optlv{#1} -\global\def\tkz@labelvec{#3} - \begingroup - \let\next\tkz@multiLV - \next#2 \@nil % -\endgroup -} -%<-------------------------------------------------------------------------–> -%<-------------------------------------------------------------------------–> - - \def\tkz@multiVec#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzDrawVector[\tkz@optvec](#1)}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil - } - -\def\tkzDrawVectors{\pgfutil@ifnextchar[{\tkz@DrawVectors}{% - \tkz@DrawVectors[]}} -\def\tkz@DrawVectors[#1](#2){% -\global\edef\tkz@optvec{#1} - \begingroup - \let\next\tkz@multiVec - \next#2 \@nil % - \endgroup - } - - -%<-------------------------------------------------------------------------–> -\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-angles.tex new file mode 100644 index 00000000000..7385417e27a --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-angles.tex @@ -0,0 +1,65 @@ +% tkz-tools-angles.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-tools-angles.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% thanks karu : http://tex.stackexchange.com/questions/151667/tkzgetangle-strange-behavior/196224#196224 \tkzGetAngle strange behavior +% defines \tkz@FirstAngle and \tkz@SecondAngle sens trigo +%<--------------------------------------------------------------------------–> + \def\tkzNormalizeAngle(#1,#2){% + \begingroup + \pgfmathparse{#1}\xdef\tkz@FirstAngle{\pgfmathresult}% + \pgfmathparse{#2}\xdef\tkz@SecondAngle{\pgfmathresult}% + \pgfmathgreaterthan{\tkz@FirstAngle}{0} + \ifdim\pgfmathresult pt=1 pt\relax% + \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} + \ifdim\pgfmathresult pt=1 pt\relax% + \pgfmathsubtract{\tkz@FirstAngle}{360} + \xdef\tkz@FirstAngle{\pgfmathresult}% + \fi + \else + \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle} + \ifdim\pgfmathresult pt=1 pt\relax% + \pgfmathadd{\tkz@SecondAngle}{360} + \xdef\tkz@SecondAngle{\pgfmathresult}% + \fi + \fi + \endgroup + } +%<--------------------------------------------------------------------------–> +% Angle +% Recherche l'angle formé par #1 et #2 par rapport à l'horizontale +%<--------------------------------------------------------------------------–> +\def\tkzFindSlopeAngle(#1,#2){% +\begingroup + \pgfmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{% + \pgfpointanchor{#2}{center}} + \global\let\tkzAngleResult\pgfmathresult +\endgroup +} +%<--------------------------------------------------------------------------–> +% Angle avec trois nodes +%<--------------------------------------------------------------------------–> +\def\tkzFindAngle(#1,#2,#3){% new code 2016 +\begingroup + \tkzFindSlopeAngle(#2,#1)\tkzGetAngle{tkz@FirstAngle} + \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@SecondAngle} + \tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle) + \edef\tkz@Angle{\fpeval{\tkz@SecondAngle-\tkz@FirstAngle}} + \global\let\tkzAngleResult\tkz@Angle +\endgroup +} +%<--------------------------------------------------------------------------–> +% Find angle +%<--------------------------------------------------------------------------–> +\def\tkzGetAngle#1{% + \global\expandafter\edef\csname #1\endcsname{\tkzAngleResult} +} +\makeatother +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex index 94c65930a41..8937f914fa7 100644 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex +++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex @@ -1,62 +1,79 @@ +% tkz-tools-intersections.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{1.16 c} -\def\filedate{2011/06/01} - +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-intersections.tex} +\makeatletter %<--------------------------------------------------------------------------–> % intersection de deux lignes %<--------------------------------------------------------------------------–> -\def\tkzInterLL(#1,#2)(#3,#4){% méthode avec FP +\def\tkzInterLL(#1,#2)(#3,#4){% méthode avec xfp \tkz@InterLL(#1,#2)(#3,#4){tkzPointResult} } -% méthode with tikz + \def\tkz@InterLL(#1,#2)(#3,#4)#5{% -%\path (intersection of #1--#2 and #3--#4) coordinate(#5);% -\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} -\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} -\tkz@ax\pgf@x % -\tkz@ay\pgf@y % -\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}} +%\path (intersection of #1--#2 and #3--#4) coordinate(#5); +% méthode with tikz +\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}% +\tkz@ax\pgf@x% +\tkz@ay\pgf@y% +\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}% \pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}} -\tkz@bx\pgf@x % -\tkz@by\pgf@y % -\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}} -\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}} -\tkz@cx\pgf@x % -\tkz@cy\pgf@y % -\pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}} -\pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}} -\tkz@dx\pgf@x % -\tkz@dy\pgf@y % -\FPeval\tkz@deltax{\pgf@sys@tonumber{\tkz@ax}-\pgf@sys@tonumber{\tkz@bx}} -\FPdiv\tkz@deltax{\tkz@deltax}{28.45274} -\FPeval\tkz@deltaxx{\pgf@sys@tonumber{\tkz@cx}-\pgf@sys@tonumber{\tkz@dx}} -\FPdiv\tkz@deltaxx{\tkz@deltaxx}{28.45274} -\FPeval\tkz@deltay{\pgf@sys@tonumber{\tkz@ay}-\pgf@sys@tonumber{\tkz@by}} -\FPdiv\tkz@deltay{\tkz@deltay}{28.45274} -\FPeval\tkz@deltayy{\pgf@sys@tonumber{\tkz@cy}-\pgf@sys@tonumber{\tkz@dy}} -\FPdiv\tkz@deltayy{\tkz@deltayy}{28.45274} -\FPeval\tkz@deltaxy{(\pgf@sys@tonumber{\tkz@ax}*\pgf@sys@tonumber{\tkz@by})-(\pgf@sys@tonumber{\tkz@ay}*\pgf@sys@tonumber{\tkz@bx})} -\FPdiv\tkz@deltaxy{\tkz@deltaxy}{28.45274} -\FPdiv\tkz@deltaxy{\tkz@deltaxy}{28.45274} -\FPeval\tkz@deltaxxyy{(\pgf@sys@tonumber{\tkz@cx}*\pgf@sys@tonumber{\tkz@dy})-(\pgf@sys@tonumber{\tkz@cy}*\pgf@sys@tonumber{\tkz@dx})} -\FPdiv\tkz@deltaxxyy{\tkz@deltaxxyy}{28.45274} -\FPdiv\tkz@deltaxxyy{\tkz@deltaxxyy}{28.45274} -\FPeval\tkz@div{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)} -\FPeval\tkz@numx{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)} -\FPeval\tkz@numy{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)} -\FPdiv\tkz@xs{\tkz@numx}{\tkz@div} -\FPdiv\tkz@ys{\tkz@numy}{\tkz@div} -\FPround\tkz@xs{\tkz@xs}{5} -\FPround\tkz@ys{\tkz@ys}{5} +\tkz@bx\pgf@x% +\tkz@by\pgf@y% +\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}% +\tkz@cx\pgf@x% +\tkz@cy\pgf@y% +\pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}}% +\pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}}% +\tkz@dx\pgf@x% +\tkz@dy\pgf@y% + +\edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}} +\edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}} +\edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}} +\edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}} +\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}} +\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}} +\edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}} +\edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}} +\edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}} +\edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}} +\edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}} \path[coordinate](\tkz@xs,\tkz@ys) coordinate (#5); } + + +% méthode with coordinates +\def\tkzInterLLxy(#1,#2,#3,#4)(#5,#6,#7,#8){% +%\path (intersection of #1--#2 and #3--#4) coordinate(#5);% +\tkz@ax#1% +\tkz@ay#2% +\tkz@bx#3% +\tkz@by#4% +\tkz@cx#5% +\tkz@cy#6% +\tkz@dx#7% +\tkz@dy#8% +\edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}} +\edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}} +\edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}} +\edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}} +\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}} +\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}} +\edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}} +\edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}} +\edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}} +\edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}} +\edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}} +\path[coordinate](\tkz@xs,\tkz@ys) coordinate (tkzPointResult); +} + %<--------------------------------------------------------------------------–> % intersection de Ligne Cercle rayon connu %<--------------------------------------------------------------------------–> @@ -96,88 +113,99 @@ % % return(TRUE); % } -%<--------------------------------------------------------------------------–> +%<---------- test ------------------------------------------------------–> +\def\tkzTestInterLC(#1,#2)(#3,#4){% +\tkz@Projection(#1,#2)(#3){tkz@pth}% distance centre à la ligne +\tkz@@CalcLength(#3,tkz@pth){tkz@mathLen}% +\tkzCalcLength(#3,#4) +\ifdim\tkz@mathLen pt>\tkzLengthResult pt\relax% +\def\tkzflagLC{-1} +\else +\def\tkzflagLC{1} +\fi +} %<--------------------------------------------------------------------------–> \def\tkz@numlc{0} -\pgfkeys{ -/linecircle/.cd, - node/.code = \def\tkz@numlc{0}, - R/.code = \def\tkz@numlc{1}, - with nodes/.code = \def\tkz@numlc{2} +\pgfkeys{/linecircle/.cd, + node/.code = \def\tkz@numlc{0}, + R/.code = \def\tkz@numlc{1}, + with nodes/.code = \def\tkz@numlc{2}, + node } %<--------------------------------------------------------------------------–> -\def\tkzInterLC{\pgfutil@ifnextchar[{\tkz@InterLC}{% - \tkz@InterLC[]}} +\def\tkzInterLC{\pgfutil@ifnextchar[{\tkz@InterLC}{\tkz@InterLC[]}} \def\tkz@InterLC[#1](#2,#3)(#4,#5){% \begingroup -\pgfkeys{/linecircle/.cd,node} \pgfqkeys{/linecircle}{#1} + \pgfinterruptboundingbox \ifcase\tkz@numlc% - % first case 0 -\tkzCalcLength(#4,#5) -\tkzInterLCR(#2,#3)(#4,\tkzLengthResult pt){% - tkzFirstPointResult}{tkzSecondPointResult} - \or% 1 -\tkzInterLCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}% - \or% 2 -\tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}% -\fi + % first case 0 + \tkzCalcLength(#4,#5) + \tkzInterLCR(#2,#3)(#4,\tkzLengthResult pt){tkzFirstPointResult}% + {tkzSecondPointResult} +\or% 1 + \tkzInterLCR(#2,#3)(#4,#5){tkzFirstPointResult} + {tkzSecondPointResult}% +\or% 2 + \tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}% + {tkzSecondPointResult}% +\fi +\endpgfinterruptboundingbox \endgroup } %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> \def\tkzInterLCR(#1,#2)(#3,#4)#5#6{% \begingroup - \tkz@radi=#4% - \tkz@@extractxy{#3} - \tkz@bx =\pgf@x\relax% - \tkz@by =\pgf@y\relax% - \tkz@Projection(#1,#2)(#3){tkz@pth} - \tkz@@CalcLength(#3,tkz@pth){tkz@mathLen} - \ifdim\tkz@mathLen pt<0.05pt\relax% - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% - \tkz@ax=\pgf@x% - \tkz@ay=\pgf@y% - \tkzpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}% - {\pgfpoint{\tkz@radi}{\tkz@radi}} - \tkz@ax=\pgf@x\relax% - \tkz@ay=\pgf@y\relax% - \advance\tkz@bx by\tkz@ax\relax% - \advance\tkz@by by\tkz@ay\relax% - \path[coordinate] (\tkz@bx,\tkz@by) coordinate (#6); - \tkzCSym(#3)(#6){#5} - \else - \FPdiv\pgfmathresult{\tkz@mathLen}{\pgfmath@tonumber{\tkz@radi}} - %\pgfmathparse{\tkz@mathLen / \tkz@radi} - \pgfmathacos@{\pgfmathresult}% - \let\tkz@angle\pgfmathresult% - \pgfpointdiff{\pgfpointanchor{#3}{center}}% - {\pgfpointanchor{tkz@pth}{center}}% - \tkz@ax=\pgf@x% - \tkz@ay=\pgf@y% - \tkzpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}% - {\pgfpoint{\tkz@radi}{\tkz@radi}} - \tkz@ax =\pgf@x\relax% - \tkz@ay =\pgf@y\relax% - \advance\tkz@bx by\tkz@ax\relax% - \advance\tkz@by by\tkz@ay\relax% - \tkz@@extractxy{#3} - \tkz@ax =\pgf@x\relax% - \tkz@ay =\pgf@y\relax% - \tkz@@extractxy{tkz@pth} - %\ifdim\pgf@y<\tkz@ay \edef\tkz@angle{-\tkz@angle}% - % \fi - \tkzmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}% - {\pgfpoint{\tkz@ax}{\tkz@ay}}% - {\tkz@angle} - \path[coordinate] (\pgf@x,\pgf@y) coordinate (#5); - \tkzmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}% - {\pgfpoint{\tkz@ax}{\tkz@ay}}% - {-\tkz@angle} - \path[coordinate] (\pgf@x,\pgf@y) coordinate (#6); - \fi - \endgroup +\tkz@radi=#4% +\tkz@@extractxy{#3} +\tkz@bx =\pgf@x\relax% +\tkz@by =\pgf@y\relax% +\tkz@Projection(#1,#2)(#3){tkz@pth} +\tkz@@CalcLength(#3,tkz@pth){tkz@mathLen} + \ifdim\tkz@mathLen pt<0.05pt\relax% + \pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}% + \tkz@ax=\pgf@x% + \tkz@ay=\pgf@y% + \pgfpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}% + {\pgfpoint{\tkz@radi}{\tkz@radi}} + \tkz@ax=\pgf@x\relax% + \tkz@ay=\pgf@y\relax% + \advance\tkz@bx by\tkz@ax\relax% + \advance\tkz@by by\tkz@ay\relax% + \pgfcoordinate{#6}{\pgfqpoint{\tkz@bx}{\tkz@by}} + \tkzCSym(#3)(#6){#5} + \else + \edef\pgfmathresult{\fpeval{\tkz@mathLen/\tkz@radi}} + % \edef\tkz@angle{\fpeval{acosd(\pgfmathresult)}} + \pgfmathacos@{\pgfmathresult}% + \let\tkz@angle\pgfmathresult% + \pgfpointdiff{\pgfpointanchor{#3}{center}}% + {\pgfpointanchor{tkz@pth}{center}}% + \tkz@ax=\pgf@x% + \tkz@ay=\pgf@y% + \pgfpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}% + {\pgfpoint{\tkz@radi}{\tkz@radi}} + \tkz@ax =\pgf@x\relax% + \tkz@ay =\pgf@y\relax% + \advance\tkz@bx by\tkz@ax\relax% + \advance\tkz@by by\tkz@ay\relax% + \tkz@@extractxy{#3} + \tkz@ax =\pgf@x\relax% + \tkz@ay =\pgf@y\relax% + \tkz@@extractxy{tkz@pth} + \pgfmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}% + {\pgfpoint{\tkz@ax}{\tkz@ay}}% + {\tkz@angle} + \pgfcoordinate{#5}{\pgfqpoint{\pgf@x}{\pgf@y}} + \pgfmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}% + {\pgfpoint{\tkz@ax}{\tkz@ay}}% + {-\tkz@angle} + \pgfcoordinate{#6}{\pgfqpoint{\pgf@x}{\pgf@y}} + +\fi +\endgroup } %<--------------------------------------------------------------------------–> % intersection de Ligne Cercle @@ -198,6 +226,7 @@ \tkzInterLCR(#1,#2)(#3,\tkz@radius pt){#6}{#7} \endgroup } + %<--------------------------------------------------------------------------–> % Intersection de deux cercles %<--------------------------------------------------------------------------–> @@ -205,29 +234,27 @@ \pgfkeys{ /circlecircle/.cd, node/.code = {\global\def\tkz@numcc{0}}, - R/.code = {\global\def\tkz@numcc{1}}, - with nodes/.code = {\global\def\tkz@numcc{2}} + R/.code = {\global\def\tkz@numcc{1}} } %<--------------------------------------------------------------------------–> -\def\tkzInterCC{\pgfutil@ifnextchar[{\tkz@InterCC}{% - \tkz@InterCC[]}} +\def\tkzInterCC{\pgfutil@ifnextchar[{\tkz@InterCC}{\tkz@InterCC[]}} \def\tkz@InterCC[#1](#2,#3)(#4,#5){% \begingroup \pgfkeys{/circlecircle/.cd,node} \pgfqkeys{/circlecircle}{#1} \ifcase\tkz@numcc% % first case 0 -\tkz@save@length - \tkzCalcLength(#2,#3)\tkzGetLength{tkz@rayA} - \tkzCalcLength(#4,#5)\tkzGetLength{tkz@rayB} -\tkz@restore@length + \tkz@save@length + \tkzCalcLength(#2,#3) \tkzGetLength{tkz@rayA} + \tkzCalcLength(#4,#5) \tkzGetLength{tkz@rayB} + \tkz@restore@length \tkzInterCCR(#2,\tkz@rayA pt)(#4,\tkz@rayB pt){tkzFirstPointResult}{% tkzSecondPointResult} \or% 1 - \tkzInterCCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}% - \or%2 -\tkzInterCCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult} - \fi + \tkzInterCCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}% + \or%2 + \tkzInterCCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult} +\fi \endgroup } %<--------------------------------------------------------------------------–> @@ -311,6 +338,7 @@ \def\tkzInterCCR(#1,#2)(#3,#4)#5#6{% \begingroup +\pgfinterruptboundingbox \tkz@save@length \tkzCalcLength(#1,#3)\tkzGetLength{tkz@dd} \tkz@restore@length @@ -324,21 +352,20 @@ \tkz@by\pgf@y % \tkz@cx#2 % \tkz@cy#4 % -\FPeval\tkz@aa{((\pgf@sys@tonumber{\tkz@cx}+\pgf@sys@tonumber{\tkz@cy})/(2*\tkz@dd))*(\pgf@sys@tonumber{\tkz@cx}-\pgf@sys@tonumber{\tkz@cy})+\tkz@dd/2} - -\FPeval\tkz@xx{\pgf@sys@tonumber{\tkz@ax}+\tkz@aa/\tkz@dd*(\pgf@sys@tonumber{\tkz@bx} - \pgf@sys@tonumber{\tkz@ax})} -\FPeval\tkz@yy{\pgf@sys@tonumber{\tkz@ay}+\tkz@aa/\tkz@dd*(\pgf@sys@tonumber{\tkz@by} - \pgf@sys@tonumber{\tkz@ay})} +\edef\tkz@aa{\fpeval{((\tkz@cx+\tkz@cy)/(2*\tkz@dd))*(\tkz@cx-\tkz@cy)+\tkz@dd/2}} +\edef\tkz@xx{\fpeval{\tkz@ax+\tkz@aa/\tkz@dd*(\tkz@bx - \tkz@ax)}} +\edef\tkz@yy{\fpeval{\tkz@ay+\tkz@aa/\tkz@dd*(\tkz@by - \tkz@ay)}} \path[coordinate](\tkz@xx pt,\tkz@yy pt) coordinate (tkzRadialCenter); -\FPeval\tkz@hh{(\pgf@sys@tonumber{\tkz@cx}+\tkz@aa)*(\pgf@sys@tonumber{\tkz@cx}-\tkz@aa)} -\FPpow\tkz@hh{\tkz@hh}{0.5} -\FPeval\tkz@rx{\tkz@hh / \tkz@dd * (\pgf@sys@tonumber{\tkz@ay} - \pgf@sys@tonumber{\tkz@by}) } -\FPeval\tkz@ry{\tkz@hh / \tkz@dd * (\pgf@sys@tonumber{\tkz@bx} - \pgf@sys@tonumber{\tkz@ax}) } -\FPadd\tkz@xs{\tkz@xx}{\tkz@rx } -\FPadd\tkz@ys{\tkz@yy}{\tkz@ry } +\edef\tkz@hh{\fpeval{sqrt((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa))}} +\edef\tkz@rx{\fpeval{\tkz@hh / \tkz@dd * (\tkz@ay - \tkz@by)}} +\edef\tkz@ry{\fpeval{\tkz@hh / \tkz@dd * (\tkz@bx - \tkz@ax)}} +\edef\tkz@xs{\fpeval{\tkz@xx + \tkz@rx}} +\edef\tkz@ys{\fpeval{\tkz@yy + \tkz@ry}} \path[coordinate](\tkz@xs pt,\tkz@ys pt) coordinate (#5); -\FPadd\tkz@xss{\tkz@xx}{-\tkz@rx } -\FPadd\tkz@yss{\tkz@yy}{-\tkz@ry } -\path[coordinate](\tkz@xss pt,\tkz@yss pt) coordinate (#6); +\edef\tkz@xss{\fpeval{\tkz@xx - \tkz@rx}} +\edef\tkz@yss{\fpeval{\tkz@yy - \tkz@ry}} +\path[coordinate](\tkz@xss pt,\tkz@yss pt) coordinate (#6); +\endpgfinterruptboundingbox \endgroup } %<--------------------------------------------------------------------------–> @@ -361,56 +388,6 @@ \tkzInterCCR(#1,\tkz@rayA pt)(#4,\tkz@rayB pt){#7}{#8} \endgroup } - -%<--------------------------------------------------------------------------–> -% tangente à cercle passant par un point donné -%<--------------------------------------------------------------------------–> -\def\tkzTgtFromPR(#1,#2)(#3){% - \begingroup - \tkzDefMidPoint(#1,#3) - \tkzCalcLength(tkzPointResult,#1) - \tkzInterCCR(#1,#2)(tkzPointResult,\tkzLengthResult pt){% - tkzFirstPointResult}{% - tkzSecondPointResult}% - \endgroup -} - -\def\tkzTgtFromP(#1,#2)(#3){% - \begingroup - \tkzDefMidPoint(#1,#3) - \tkzCalcLength(#1,#2)\tkzGetLength{tkz@radone}% - \tkzCalcLength(tkzPointResult,#1)\tkzGetLength{tkz@radtwo}% - \tkzInterCCR(#1,\tkz@radone pt)(tkzPointResult,\tkz@radtwo pt){% - tkzFirstPointResult}{% - tkzSecondPointResult}% - \endgroup -} -\def\tkzTgtAt(#1)(#2){% -\begingroup - \tkz@VecKOrthNorm[-1](#2,#1){tkzPointResult} - \endgroup -} %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> -\def\tkz@numtang{0} -\pgfkeys{ -/tang/.cd, -at/.code = {\global\def\tkz@numtang{0}\global\def\tkz@ptat{#1}}, -from/.code = {\global\def\tkz@numtang{1}\global\def\tkz@ptfrom{#1}}, -from with R/.code = {\global\def\tkz@numtang{2}\global\def\tkz@ptfrom{#1}}} -%<--------------------------------------------------------------------------–> -\def\tkzTangent{\pgfutil@ifnextchar[{\tkz@Tangent}{\tkz@Tangent[]}} - -\def\tkz@Tangent[#1](#2){% -\begingroup -\pgfkeys{tang/.cd} -\pgfqkeys{/tang}{#1} -\ifcase\tkz@numtang - \tkzTgtAt(#2)(\tkz@ptat) -\or - \tkzTgtFromP(#2)(\tkz@ptfrom) - \or - \tkzTgtFromPR(#2)(\tkz@ptfrom) -\fi -\endgroup -} - + +\makeatother \endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-transformations.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-transformations.tex deleted file mode 100644 index fd7b14f112c..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-transformations.tex +++ /dev/null @@ -1,525 +0,0 @@ -% 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{1.16 c} -\def\filedate{2011/06/01} - - -%<--------------------------------------------------------------------------–> -% Transformations Géométriques -%<--------------------------------------------------------------------------–> -\def\tkz@numtrsf{0} -\pgfkeys{/tkzDefPointBy/.cd, -translation/.code args={from #1 to #2}{% - \global\def\tkzfrom{#1}% - \global\def\tkzto{#2}% - \global\def\tkz@numtrsf{0}}, - homothety/.code args={center #1 ratio #2}{% - \global\def\tkzcenter{#1}% - \global\def\tkzratio{#2}% - \global\def\tkz@numtrsf{1}}, - reflection/.code args={over #1--#2}{% - \global\def\tkzdeb{#1}% - \global\def\tkzfin{#2}% - \global\def\tkz@numtrsf{2}}, - symmetry/.code args={center #1}{% - \global\def\tkzcenter{#1}% - \global\def\tkz@numtrsf{3}}, - projection/.code args={onto #1--#2}{% - \global\def\tkzdeb{#1}% - \global\def\tkzfin{#2}% - \global\def\tkz@numtrsf{4}}, - rotation/.code args={center #1 angle #2}{% - \global\def\tkzcenter{#1}% - \global\def\tkzangle{#2}% - \global\def\tkz@numtrsf{5}}, - rotation in rad/.code args={center #1 angle #2}{% - \global\def\tkzcenter{#1}% - \global\def\tkzangle{#2}% - \global\def\tkz@numtrsf{6}}, -inversion/.code args={center #1 through #2}{% - \global\def\tkzcenter{#1}% - \global\def\tkzpoint{#2}% - \global\def\tkz@numtrsf{7}} -} -%<--------------------------------------------------------------------------–> -\def\tkzDefPointsBy{\pgfutil@ifnextchar[{\tkz@DefPointsBy}{% - \tkz@DefPointsBy[]}} -\def\tkz@DefPointsBy[#1](#2)#3{% -\begingroup -\pgfqkeys{/tkzDefPointBy}{#1} -\ifcase\tkz@numtrsf% - % first case 0 - \tkzTranslation(\tkzfrom,\tkzto)(#2){#3} - \or% 1 - \tkzHomo(\tkzcenter,\tkzratio)(#2){#3} - \or% 2 - \tkzSymOrth(\tkzdeb,\tkzfin)(#2){#3} - \or% 3 - \tkzCSym(\tkzcenter)(#2){#3} - \or% 4 - \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} -\fi -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzDefPointBy{\pgfutil@ifnextchar[{\tkz@DefPointBy}{% - \tkz@DefPointBy[]}} -\def\tkz@DefPointBy[#1](#2){% -\begingroup -\pgfqkeys{/tkzDefPointBy}{#1} - \ifcase\tkz@numtrsf% -% % first case 0 - \tkzUTranslation(\tkzfrom,\tkzto)(#2) - \or% 1 - \tkzUHomo(\tkzcenter,\tkzratio)(#2) -\or% 2 -\tkzUSymOrth(\tkzdeb,\tkzfin)(#2) -\or% 3 -\tkzUCSym(\tkzcenter)(#2) -\or% 4 -\tkzUProjection(\tkzdeb,\tkzfin)(#2) -\or% 5 -\tkzURotateAngle(\tkzcenter,\tkzangle)(#2) - \or% 6 -\tkzURotateInRad(\tkzcenter,\tkzangle)(#2) - \or% 7 -\tkzUInversePoint(\tkzcenter,\tkzpoint)(#2) -\fi -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\ExtractPoint#1,#2\@nil{% -\global\edef\tkz@LastList{#2} -\global\edef\tkz@FirstPoint{#1} -} -\def\FirstPointInList#1{% -\edef\tkz@templist{#1,} -\expandafter\ExtractPoint\tkz@templist\@nil -} -%<--------------------------------------------------------------------------–> -% Translation par rapport à un point -%<--------------------------------------------------------------------------–> -\def\tkzTranslation(#1,#2)(#3)#4{% -\begingroup -\global\def\tkz@LastList{#4} - \foreach\PointTR in {#3}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointTR '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \tkzVecKCoLinear(#1,#2,\PointTR){\tkz@pointtsf}% -} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzUTranslation(#1,#2)(#3){% -\begingroup - \tkzVecKCoLinear(#1,#2,#3){tkzPointResult}% -\endgroup -} - -%<--------------------------------------------------------------------------–> -% Symétrie par rapport à un point Homo with (-1) -% #2 le centre #3 l'antécédent -%<--------------------------------------------------------------------------–> -\def\tkzCSym(#1)(#2)#3{% -\begingroup -\global\def\tkz@LastList{#3} - \foreach\PointCS in {#2}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointCS '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{\PointCS}{center}}% - \tkz@ax=\pgf@x% - \tkz@ay=\pgf@y% - \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (\tkz@pointtsf); -} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzUCSym(#1)(#2){% -\begingroup - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% - \tkz@ax=\pgf@x% - \tkz@ay=\pgf@y% - \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (tkzPointResult); -\endgroup -} -%<--------------------------------------------------------------------------–> -% Symétrie orthogonale par rapport à une droite -%<--------------------------------------------------------------------------–> -\def\tkzSymOrth(#1,#2)(#3)#4{% -\begingroup -\global\def\tkz@LastList{#4} - \foreach\PointSO in {#3}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointSO '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% - \tkz@ax =\pgf@y% - \tkz@ay =\pgf@x% - \path[coordinate]% - (\PointSO)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); - \tkzInterLL(#1,#2)(\PointSO,tkz@point)\tkzGetPoint{tkzPointofSym} - \tkz@VecK[2](\PointSO,tkzPointofSym){\tkz@pointtsf} -} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzUSymOrth(#1,#2)(#3){% -\begingroup - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% - \tkz@ax =\pgf@y% - \tkz@ay =\pgf@x% - \path[coordinate]% - (#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); - \tkzInterLL(#1,#2)(#3,tkz@point)\tkzGetPoint{tkzPointofSym} - \tkz@VecK[2](#3,tkzPointofSym){tkzPointResult} -\endgroup -} - -%<--------------------------------------------------------------------------–> -% Projection orthogonale sur une droite -%<--------------------------------------------------------------------------–> -\def\tkzProjection(#1,#2)(#3)#4{% -\begingroup -\global\def\tkz@LastList{#4} - \foreach\PointPJ in {#3}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointPJ '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \tkzUProjection(#1,#2)(\PointPJ) - \tkzGetPoint{\tkz@pointtsf} - } -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzUProjection(#1,#2)(#3){% -\begingroup - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% - \tkz@ax =\pgf@y% - \tkz@ay =\pgf@x% - \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); - \tkzInterLL(#1,#2)(#3,tkz@point)% définit tkzPointResult -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkz@Projection(#1,#2)(#3)#4{% -\begingroup - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% - \tkz@ax =\pgf@y% - \tkz@ay =\pgf@x% - \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point); - \tkz@InterLL(#1,#2)(#3,tkz@point){#4}% définit tkzPointResult -\endgroup -} -%<--------------------------------------------------------------------------–> -% Homothétie par rapport à un point -%<--------------------------------------------------------------------------–> -\def\tkzHomo(#1,#2)(#3)#4{% -\begingroup -\global\def\tkz@LastList{#4} - \foreach\PointHO in {#3}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointHO '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{\PointHO}{center}}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}% - \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)% - coordinate(\tkz@pointtsf); - } -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzUHomo(#1,#2)(#3){% -\begingroup - \pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#3}{center}}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}% - \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)% - coordinate(tkzPointResult); -\endgroup -} -%<--------------------------------------------------------------------------–> -% rotation en degré -%<--------------------------------------------------------------------------–> -\def\tkzRotateAngle(#1,#2)(#3)#4{% -\begingroup -\global\def\tkz@LastList{#4} - \foreach\PointRot in {#3}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointRot '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \tkz@@extractxy{\PointRot} - \global\tkz@ax\pgf@x% - \global\tkz@ay\pgf@y% - \tkz@@extractxy{#1} - \global\tkz@bx\pgf@x% - \global\tkz@by\pgf@y% - \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% - {\pgfpoint{\tkz@bx}{\tkz@by}}% - {#2} - \global\tkz@bx\pgf@x% - \global\tkz@by\pgf@y% - \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf);% - } - \endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzURotateAngle(#1,#2)(#3){% -\begingroup - \tkz@@extractxy{#3} - \global\tkz@ax\pgf@x% - \global\tkz@ay\pgf@y% - \tkz@@extractxy{#1} - \global\tkz@bx\pgf@x% - \global\tkz@by\pgf@y% - \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% - {\pgfpoint{\tkz@bx}{\tkz@by}}% - {#2} - \global\tkz@bx\pgf@x% - \global\tkz@by\pgf@y% - \path[coordinate](\tkz@bx,\tkz@by)coordinate(tkzPointResult);% - \endgroup -} -%<--------------------------------------------------------------------------–> -% % rotation en radian -% %<--------------------------------------------------------------------------–> -\def\tkzRotateInRad(#1,#2)(#3)#4{% -\begingroup -\global\def\tkz@LastList{#4} - \foreach\PointRot in {#3}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointRot '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \pgfmathparse{#2 r} - \let\tkz@Angle\pgfmathresult - \tkz@@extractxy{\PointRot} - \tkz@ax\pgf@x% - \tkz@ay\pgf@y% - \tkz@@extractxy{#1} - \tkz@bx\pgf@x% - \tkz@by\pgf@y% - \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% - {\pgfpoint{\tkz@bx}{\tkz@by}}% - {\tkz@Angle} - \tkz@bx\pgf@x% - \tkz@by\pgf@y% - \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf); -} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzURotateInRad(#1,#2)(#3){% -\begingroup - \pgfmathparse{#2 r} - \let\tkz@Angle\pgfmathresult - \tkz@@extractxy{#3} - \tkz@ax\pgf@x% - \tkz@ay\pgf@y% - \tkz@@extractxy{#1} - \tkz@bx\pgf@x% - \tkz@by\pgf@y% - \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}% - {\pgfpoint{\tkz@bx}{\tkz@by}}% - {\tkz@Angle} - \tkz@bx\pgf@x% - \tkz@by\pgf@y% - \path[coordinate](\tkz@bx,\tkz@by)coordinate(tkzPointResult); -\endgroup -} -%<--------------------------------------------------------------------------–> -% Inverse of a point -%<--------------------------------------------------------------------------–> -\def\tkzInversePoint(#1,#2)(#3)#4{% -\begingroup -\global\def\tkz@LastList{#4} - \foreach\PointIP in {#3}{% - \FirstPointInList\tkz@LastList - \ifx\tkz@FirstPoint\tkzutil@empty - \global\edef\tkz@pointtsf{\PointIP '} - \else - \global\edef\tkz@pointtsf{\tkz@FirstPoint} - \fi - \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}% - \tkzCalcLength[cm](#1,\PointIP)\tkzGetLength{tkz@lnb}% - \FPeval\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna} - \tkzVecKNorm[\tkz@lnc](#1,\PointIP){tkzPointResult} - } -\endgroup -} \def\tkzUInversePoint(#1,#2)(#3){% -\begingroup - \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}% - \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}% - \FPeval\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna} - \tkzVecKNorm[\tkz@lnc](#1,#3){tkzPointResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% Fin des transformations -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% 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} -\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 -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzShowTranslation{\pgfutil@ifnextchar[{\tkz@ShowTranslation}{% - \tkz@ShowTranslation[]}} - -\def\tkz@ShowTranslation[#1](#2,#3)(#4){% -\begingroup -\tkz@VecKCoLinear[1](#2,#3,#4){tkz@lltmp} -\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) \tkzGetPoint{tkzPointofSym} - \tkz@VecK[2](#4,tkzPointofSym){tkz@pointtsf} - \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)\tkzGetPoint{tkz@pointtsf} - \tkz@VecKCoLinear[1](#2,#3,tkz@pointtsf){SO@tmp1} - \tkz@VecKCoLinear[-1](#2,#3,tkz@pointtsf){SO@tmp2} - \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp1){SO@1} - \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp2){SO@2} - \tkz@VecKNorm[-\tkz@show@gap](tkz@pointtsf,#4){SO@3} - \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 -} - -\endinput
\ No newline at end of file |