summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex')
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex342
1 files changed, 342 insertions, 0 deletions
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
new file mode 100644
index 00000000000..6532c7f92bd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex
@@ -0,0 +1,342 @@
+% 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