diff options
author | Karl Berry <karl@freefriends.org> | 2011-06-06 17:17:55 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-06-06 17:17:55 +0000 |
commit | 1116c441adede647c4931c6553046c8d9eb53e0c (patch) | |
tree | eecba89f578294208292dcfcc70db6b8fb3432e8 /Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex | |
parent | 68598d9c664b3d4c11acabdd625b410e3f3d696a (diff) |
new graphics package tkz-euclide (5jun11)
git-svn-id: svn://tug.org/texlive/trunk@22830 c570f23f-e606-0410-a88d-b1316a301751
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.tex | 342 |
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 |