diff options
author | Karl Berry <karl@freefriends.org> | 2020-01-24 21:42:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-01-24 21:42:09 +0000 |
commit | d5adeaeb325c83b945dd89cac45b12a7410fd32d (patch) | |
tree | 5c8d765869ef8d8b5341843be54425b273a7e36b /Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex | |
parent | d5e02a3c654b675d1b86fc22a822fa03d884d1e2 (diff) |
tkz-base (24jan20)
git-svn-id: svn://tug.org/texlive/trunk@53530 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex | 562 |
1 files changed, 185 insertions, 377 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex index 88c99c3a17e..39f2c391cc6 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex @@ -1,25 +1,19 @@ +% tkz-obj-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{1.16 d} -\def\filedate{2018/09/19} - - +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-points.tex} %<--------------------------------------------------------------------------–> % init def point %<--------------------------------------------------------------------------–> -\newif\iftkz@polar\tkz@polarfalse -\newif\iftkz@pt@polar -\newif\iftkz@pt@show -\newif\iftkz@pt@noname - - +\makeatletter %<--------------------------------------------------------------------------–> +% define a new shape for the points \pgfdeclareshape{cross} {% \inheritsavedanchors[from=rectangle] % this is nearly a rectangle @@ -41,12 +35,12 @@ \inheritanchor[from=rectangle]{south east} \foregroundpath{ % store lower right in xa/ya and upper right in xb/yb - \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y - \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y - \pgfpathmoveto{\pgfqpoint{0 pt}{\pgf@ya}} - \pgfpathlineto{\pgfqpoint{0 pt}{\pgf@yb}} - \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0 pt}} - \pgfpathlineto{\pgfqpoint{\pgf@xb}{0 pt}} + \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y + \pgfpathmoveto{\pgfqpoint{0 pt}{\pgf@ya}} + \pgfpathlineto{\pgfqpoint{0 pt}{\pgf@yb}} + \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0 pt}} + \pgfpathlineto{\pgfqpoint{\pgf@xb}{0 pt}} } } %<--------------------------------------------------------------------------–> @@ -61,7 +55,7 @@ \iftkz@polar \tkz@getfrompolar#1\@nil \else - \tkz@getfromcart#1\@nil + \tkz@getfromcart#1\@nil \fi } \def\tkz@getseparator#1,#2\@nil{% @@ -71,22 +65,46 @@ \tkz@polarfalse \fi } -\def\tkz@getfrompolar#1:#2\@nil{ - \FPeval\tkz@a{(#1)} - \FPeval\tkz@r{(#2)} -\global\edef\tkz@polarrad{\tkz@r} -\global\edef\tkz@polarangle{\tkz@a} +\def\tkz@getfrompolar#1:#2\@nil{% +\edef\tkz@a{\fpeval{#1}} +\edef\tkz@r{\fpeval{#2}} +\xdef\tkz@polarrad{\tkz@r} +\xdef\tkz@polarangle{\tkz@a} } -\def\tkz@getfromcart#1,#2\@nil{ - \FPeval\tkz@x{(#1)} - \FPeval\tkz@y{(#2)} -\global\edef\tkz@absc{\tkz@x} -\global\edef\tkz@ord{\tkz@y} +\def\tkz@getfromcart#1,#2\@nil{% +\edef\tkz@x{\fpeval{#1}} +\edef\tkz@y{\fpeval{#2}} +\xdef\tkz@absc{\tkz@x} +\xdef\tkz@ord{\tkz@y} } %<--------------------------------------------------------------------------–> -% la macro defpoint les coordonnées cartésiennes ou polaires sont traitées -% afin de pouvoir adaptées avec les unités choisies +% options pour point definition %<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzpt/.cd, + polar/.is if = tkz@pt@polar, + polar/.default = true, + polar = false +} +%<--------------------------------------------------------------------------–> +% tkz@ptStar +%<--------------------------------------------------------------------------–> +\def\tkz@ptStar[#1](#2,#3)#{% +\pgfkeys{/@tkzpt/.cd, polar = false} +\pgfqkeys{/@tkzpt}{#1} +\iftkz@pt@polar% + \edef\tkz@x{\fpeval{#3*cosd(#2)}} + \edef\tkz@y{\fpeval{#3*sind(#2)}} +\else + \edef\tkz@x{\fpeval{#2}} + \edef\tkz@y{\fpeval{#3}} +\fi +\edef\tkzpt@xa{\fpeval{(\tkz@x-\tkz@init@xorigine)/\tkz@init@xstep}} +\edef\tkzpt@ya{\fpeval{(\tkz@y-\tkz@init@yorigine)/\tkz@init@ystep}} +\tkz@node +} +%<--------------------------------------------------------------------------–> +% la macro defpoint les coordonnées cartésiennes ou polaires sont traitées +% afin de pouvoir être adaptées avec les unités choisies %<--------------------------------------------------------------------------–> \def\tkzDefPoint{\pgfutil@ifnextchar[{\tkzActivOff\tkz@DefPoint}{% \tkzActivOff\tkz@DefPoint[]}} @@ -94,426 +112,216 @@ \def\tkz@DefPoint[#1](#2)#{% \tkz@parsecoordinate{#2} \iftkz@polar - \tkz@ptStar[polar](\tkz@polarangle,\tkz@polarrad){tkz@coord@temp} - \else - \tkz@ptStar[](#2){tkz@coord@temp} - \fi -\tkz@DefPointEnd[#1]}% -\def\tkz@DefPointEnd[#1]#2{% - \coordinate[#1] (#2) at (tkz@coord@temp); -} + \tkz@ptStar[polar](\tkz@polarangle,\tkz@polarrad){tkz@coord@temp} +\else + \tkz@ptStar[](#2){tkz@coord@temp} +\fi +\tkz@DefPointEnd[#1] +}% +\def\tkz@DefPointEnd[#1]#2{\coordinate[#1] (#2) at (tkz@coord@temp);} %<--------------------------------------------------------------------------–> % tkzDefPoints %<--------------------------------------------------------------------------–> -\def\tkzDefPoints{\pgfutil@ifnextchar[{\tkz@DefPoints}{% - \tkz@DefPoints[]}} - +\def\tkzDefPoints{\pgfutil@ifnextchar[{\tkz@DefPoints}{\tkz@DefPoints[]}} \def\tkz@DefPoints[#1]#2{% -\begingroup - \foreach \ptx/\pty/\name in {#2}{\tkzDefPoint[#1](\ptx,\pty){\name}}% -\endgroup -} %<--------------------------------------------------------------------------–> -% Init pour Draw -%<--------------------------------------------------------------------------–> -\pgfkeys{% -setuppt/.cd, -size/.code = {\global\edef\tkz@pt@size{#1}}, -color/.code = {\global\edef\tkz@pt@color{#1}}, -fill/.code = {\global\edef\tkz@pt@fill{#1}}, -shape/.code = {\global\edef\tkz@pt@shape{#1}} -} + \begingroup + \def\tkz@parenthesis@for@err{(}% + \def\tkz@maybe@parenthesis{#2}% + \ifx\tkz@maybe@parenthesis\tkz@parenthesis@for@err + \PackageError{tkz-base}{Syntax error use {} instead of ()}{You need to use {} instead of ()}% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\tkz@absorb@bad@arg}% + {\foreach \ptx/\pty/\name in {#2}{\tkzDefPoint[#1](\ptx,\pty){\name}}% + \endgroup}% +} +\def\tkz@absorb@bad@arg#1){\endgroup} +%<--------------------------------------------------------------------------–> +\def\tkz@node#1{\path[coordinate](\tkzpt@xa,\tkzpt@ya) coordinate(#1);} +% \def\tkz@drawnode#1{\path[coordinate](\tkzpt@xa,\tkzpt@ya) coordinate(#1); +% \tkz@DrawPt{#1} +% } %<--------------------------------------------------------------------------–> % tkzSetUpPoint définit la forme d'un point %<--------------------------------------------------------------------------–> +\pgfkeys{/@setuppt/.cd, + size/.store in = \tkz@pt@size, + color/.store in = \tkz@pt@color, + fill/.store in = \tkz@pt@fill, + shape/.store in = \tkz@pt@shape, + size = \tkz@euc@pointsize, + color = \tkz@euc@pointcolor, + fill = \tkz@euc@pointcolor, + shape = \tkz@euc@pointshape, + /@setuppt/.search also = {/tikz}, + } \def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpPoint}{% \tkzActivOff\tkz@SetUpPoint[]}} - \def\tkz@SetUpPoint[#1]{% -\pgfkeys{% -/setuppt/.cd, -size = \tkz@euc@pointsize, -color = \tkz@euc@pointcolor, -fill = \tkz@euc@pointcolor!50, -shape = \tkz@euc@pointshape} -\pgfqkeys{/setuppt}{#1} +\pgfqkeys{/@setuppt}{#1} +% redefine point style with new values \tikzset{point style/.style={draw = \tkz@pt@color, inner sep = 0pt, shape = \tkz@pt@shape, - minimum size = \tkz@pt@size*\pgflinewidth, - fill = \tkz@pt@fill}}}% -%<--------------------------------------------------------------------------–> + minimum size = \tkz@pt@size, + fill = \tkz@pt@fill + } + } + }% end setup %<--------------------------------------------------------------------------–> % Draw Point -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -%\tikzset{/drawpoint/size/.style={minimum size=#1*\pgflinewidth}} -\pgfkeys{/drawpoint/.cd, - size/.code = {\tikzset{point style/.append style={% - minimum size = #1*\pgflinewidth}}}, - color/.code = {\tikzset{point style/.append style={% - draw = #1}}}, - shape/.code = {\tikzset{point style/.append style={% - shape=#1}}}, - fill/.code = {\tikzset{point style/.append style={% - fill=#1}}} } - +%<--------------------------------------------------------------------------–> +\pgfkeys{/@drawpoint/.cd, + size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, + size = \tkz@euc@pointsize, + /@drawpoint/.search also = {/tikz}, +} +%<-------------------------------------------------------------------------- \def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} \def\tkz@DrawPoint[#1](#2){% \begingroup -\pgfkeys{/drawpoint/.cd} -\pgfqkeys{/drawpoint}{#1} -\node[point style] at (#2) {}; + \pgfqkeys{/@drawpoint}{#1} + \node[point style,/@drawpoint/.cd,#1] at (#2) {};%2016 \endgroup } - %<--------------------------------------------------------------------------–> \def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} %<--------------------------------------------------------------------------–> \def\tkz@drawpts[#1](#2){% \begingroup -\pgfkeys{/drawpoint/.cd} -\pgfqkeys{/drawpoint}{#1} -\foreach \point in {#2}{% - \node[point style] at (\point) {};} + \pgfqkeys{/@drawpoint}{#1} + \foreach \point in {#2}{\node[point style,/@drawpoint/.cd,#1] at (\point) {};} %2016 \endgroup } %<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% rename -%<--------------------------------------------------------------------------–> -% \def\tkzRenamePoint{\pgfutil@ifnextchar[{\tkzActivOff\tkz@RenamePoint}{% -% \tkzActivOff\tkz@RenamePoint[]}} -% \def\tkz@RenamePoint[#1](#2)#{% -% \coordinate (tkz@coord@temp) at (#2);% -% \pgfextractx{\pgf@x}{\pgfpointanchor{tkz@coord@temp}{center}} -% \pgfextracty{\pgf@y}{\pgfpointanchor{tkz@coord@temp}{center}} -% \tkz@ax\pgf@x % -% \tkz@ay\pgf@y % -% \tkz@RenamePointEnd[#1]}% +% %<--------------------------------------------------------------------------–> \def\tkzRenamePoint(#1)#2{\coordinate (#2) at (#1);} \def\tkz@RenamePointEnd[#1]#2{\coordinate[#1] (#2) at (\tkz@ax,\tkz@ay);} \def\tkzGetPoint#1{\coordinate (#1) at (tkzPointResult);} -\def\tkzGetPoints#1#2{\coordinate (#1) at (tkzFirstPointResult);% +\def\tkzGetPoints#1#2{\coordinate (#1) at (tkzFirstPointResult); \coordinate (#2) at (tkzSecondPointResult);} \def\tkzGetFirstPoint#1{\coordinate (#1) at (tkzFirstPointResult);} \def\tkzGetSecondPoint#1{\coordinate (#1) at (tkzSecondPointResult);} \def\tkzDefShiftPointCoord[#1](#2)#3{% -\begin{scope}[shift={(#1)}] - \coordinate (#3) at (#2); -\end{scope} -}% - + \begin{scope}[shift={(#1)}] + \coordinate (#3) at (#2); + \end{scope} + }% +%<--------------------------------------------------------------------------–> +% tkzDefShiftPoint +%<--------------------------------------------------------------------------–> \def\tkzDefShiftPoint[#1](#2)#3{% - \tkz@@extractxy{#1} - \tkz@ax\pgf@x % - \tkz@ay\pgf@y % + \tkz@@extractxy{#1} + \tkz@ax\pgf@x % + \tkz@ay\pgf@y % \begin{scope}[shift={(\tkz@ax,\tkz@ay)}] \coordinate (#3) at (#2); \end{scope} } %<-------------------------------------------------------------------------–> -% tkzLabelPoint Affichage des LABELS pour un point -%<-------------------------------------------------------------------------–> -% \newif\iftkz@mode@show -% \tikzoption{show}{\tikz@addmode{\tkz@mode@showfalse}} -\tikzset{label style/.style={\tkz@euc@pointpos,\tkz@euc@labelcolor,font=\normalsize}} +% tkzLabelPoint Affichage des LABELS pour un point +%<-------------------------------------------------------------------------–> +\tikzset{label style/.style={\tkz@euc@pointpos,\tkz@euc@labelcolor, + font=\normalsize}} \def\tkzLabelPoint{\pgfutil@ifnextchar[{\tkz@LabelPoint}{\tkz@LabelPoint[]}} -\def\tkz@LabelPoint[#1](#2)#3{\node[label style,#1] at (#2) {#3};}% +\def\tkz@LabelPoint[#1](#2)#3{% + \node[label style,#1] at (#2) {#3};}% +%<--------------------------------------------------------------------------–> \def\tkzLabelPoints{\pgfutil@ifnextchar[{\tkz@LabelPoints}{% \tkz@LabelPoints[]}}% \def\tkz@LabelPoints[#1](#2){% \foreach \point in {#2}{ - \node[label style,#1] at (\point) {$\point$};} + \node[label style,#1] at (\point) {$\point$};} +}% +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> + +\pgfkeys{/@tkzautolab/.cd, + center/.store in = \tkz@center, + dist/.store in = \tkz@dist, + dist = 0.15, + /@tkzautolab/.search also = {/tikz}, +} +\def\tkzAutoLabelPoints{\pgfutil@ifnextchar[{\tkz@AutoLabelPoints}{% + \tkz@AutoLabelPoints[]}}% +\def\tkz@AutoLabelPoints[#1](#2){% +\begingroup +\pgfqkeys{/@tkzautolab}{#1} + \foreach \point in {#2}{ + \path (\tkz@center) -- ($ (\point) + \tkz@dist*($(\point)-(\tkz@center)$) $) node[/@tkzautolab/.cd,#1]{$\point$};} +\endgroup }% %<--------------------------------------------------------------------------–> -% Coord -%<--------------------------------------------------------------------------–> -\newif\if@tkz@coord@noxdraw -\newif\if@tkz@coord@noydraw -\pgfkeys{ -/tkzprcoord/.cd, - xlabel/.code = {\global\edef\tkz@xlabel{#1}},% - ylabel/.code = {\global\edef\tkz@ylabel{#1}}, - xstyle/.code = {\tikzset{xcoord style/.append style={#1}}}, - ystyle/.code = {\tikzset{ycoord style/.append style={#1}}}, - noxdraw/.is if = @tkz@coord@noxdraw, - noxdraw/.default = true, - noydraw/.is if = @tkz@coord@noydraw, - noydraw/.default = true, - /tkzprcoord/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} +% PointShowCoord +%<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzprcoord/.cd, + xlabel/.store in = \tkz@xlabel, + ylabel/.store in = \tkz@ylabel, + xstyle/.code = {\tikzset{xcoord style/.append style={#1}}}, + ystyle/.code = {\tikzset{ycoord style/.append style={#1}}}, + noxdraw/.is if = tkz@coord@noxdraw, + noxdraw/.default = true, + noydraw/.is if = tkz@coord@noydraw, + noydraw/.default = true, + xlabel = {}, + ylabel = {}, + xstyle = {}, + ystyle = {}, + noxdraw = false, + noydraw = false, + /@tkzprcoord/.search also = {/tikz}, } - \def\tkzPointShowCoord{\pgfutil@ifnextchar[{\tkz@PointShowCoord}{% - \tkz@PointShowCoord[]}} +\def\tkzPointShowCoord{\pgfutil@ifnextchar[{\tkz@PointShowCoord}{\tkz@PointShowCoord[]}} \def\tkz@PointShowCoord[#1](#2){% \begingroup -\pgfkeys{% -tkzprcoord/.cd, - xlabel = {}, - ylabel = {}, - xstyle = {}, - ystyle = {}, - noxdraw = false, - noydraw = false - } -\pgfqkeys{/tkzprcoord}{#1} -\if@tkz@coord@noxdraw\else\draw[arrow coord style] (#2)--(#2 |- tkz@xline); \fi -\if@tkz@coord@noydraw\else \draw[arrow coord style] (#2)--(#2 -| tkz@yline);\fi +\pgfqkeys{/@tkzprcoord}{#1} +% 2019 for showcoord + \iftkznodedefined{tkz@xline}{}{% + \path (0,0) --(1,0) node(tkz@xline){}; + \path (0,0) --(0,1) node(tkz@yline){}; + } +\iftkz@coord@noxdraw\else\draw[arrow coord style,/@tkzprcoord/.cd,#1] (#2)--(#2 |- tkz@xline);\fi +\iftkz@coord@noydraw\else\draw[arrow coord style,/@tkzprcoord/.cd,#1] (#2)--(#2 -| tkz@yline);\fi \ifx\tkzutil@empty\tkz@xlabel \else - \protected@edef\tkz@temp{% - \noexpand\path (#2)--(#2 |- tkz@xline) - \noexpand node[xcoord style]}\tkz@temp {\tkz@xlabel}; +\path (#2)--(#2 |- tkz@xline) + node[xcoord style] {\tkz@xlabel}; \fi \ifx\tkzutil@empty\tkz@ylabel \else - \protected@edef\tkz@temp{% - \noexpand\path (#2)--(#2 -| tkz@yline) - \noexpand node[ycoord style]}\tkz@temp {\tkz@ylabel}; + \path (#2)--(#2 -| tkz@yline) + node[ycoord style] {\tkz@ylabel}; \fi \endgroup } - -%<-------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% tkzPoint -%<--------------------------------------------------------------------------–> -\pgfkeys{ - tkzpt/.cd, - pos/.code = {\def\tkz@pt@pos{#1}}, - size/.code = {\def\tkz@pt@size{#1}}, - name/.code = {\def\tkz@pt@name{#1}}, - namecolor/.code = {\def\tkz@pt@namecolor{#1}}, - time/.code = {\def\tkz@pt@time{#1}}, - color/.code = {\def\tkz@pt@color{#1}}, - shape/.code = {\def\tkz@pt@shape{#1}}, - polar/.is if = tkz@pt@polar, - polar/.default = true, - noname/.is if = tkz@pt@noname, - noname/.default = true -} - -\def\tkz@node#1{\path[coordinate](\ptxa,\ptya) coordinate(#1);} -\def\tkz@drawnode#1{\path[coordinate](\ptxa,\ptya) coordinate(#1); -\tkz@DrawPt{#1} -} - -\def\tkz@draw@point#1{% - \node[ inner sep = 0pt, - shape = \tkz@pt@shape,% - draw = \tkz@pt@color,% - minimum size = \tkz@pt@size*\pgflinewidth,% - fill = \tkz@pt@color] at (#1) {};} - -\def\tkzPoint{\@ifstar\tkzptStar\tkzptNoStar} -\def\tkzptNoStar{\pgfutil@ifnextchar[{\tkz@ptNoStar}{\tkz@ptNoStar[]}} -\def\tkz@ptNoStar[#1](#2,#3)#{% -\pgfkeys{/tkzpt/.cd, - noname = false,% pas de nom - name = {},% le nom est vide - polar = false,% - namecolor = \tkz@euc@labelcolor,% couleur du nom - pos = \tkz@euc@pointpos,% name - shape = \tkz@euc@pointshape,% - color = \tkz@euc@pointcolor,% couleur du point - size = \tkz@euc@pointsize,% - time = 0.5 -} -\pgfqkeys{/tkzpt}{#1} - \iftkz@pt@polar% - \FPeval\tkz@x{(#2*cos(#3*\FPpi/180))} - \FPeval\tkz@y{(#2*sin(#3*\FPpi/180))} - \else - \FPeval\tkz@x{(#2)} - \FPeval\tkz@y{(#3)} - \fi - - \FPadd{\ptxa}{\tkz@x}{-\tkz@init@xorigine} - \FPadd{\ptya}{\tkz@y}{-\tkz@init@yorigine} - \FPdiv{\ptxa}{\ptxa}{\tkz@init@xstep} - \FPdiv{\ptya}{\ptya}{\tkz@init@ystep} - \tkz@drawnode -} -% dessin du point (par défaut c'est un node donc il ne peut pas être scalé) -\def\tkz@DrawPt#1{% - \iftkz@pt@noname% pas de nom rien - \else% si name={} alors on prend le nom du node sinon name - \ifx\tkzutil@empty\tkz@pt@name\def\tkz@pt@name{$#1$}% - \fi - \protected@edef\tkz@temp{% - \noexpand \node[\tkz@pt@pos]}\tkz@temp at (#1)% - {\textcolor{\tkz@pt@namecolor} {\tkz@pt@name}};% - \fi -% on retrace ??? ici ou après le fi -\tkz@draw@point{#1} -} - -%<--------------------------------------------------------------------------–> -% Star version tkzPoint* -%<--------------------------------------------------------------------------–> -\def\tkzptStar{\pgfutil@ifnextchar[{\tkz@ptStar}{\tkz@ptStar[]}} -\def\tkz@ptStar[#1](#2,#3)#{% -\pgfkeys{/tkzpt/.cd, - polar = false,% -} -\pgfqkeys{/tkzpt}{#1} -\iftkz@pt@polar% - \FPeval\tkz@x{(#3*cos(#2*\FPpi/180))} - \FPeval\tkz@y{(#3*sin(#2*\FPpi/180))} -\else - \FPeval\tkz@x{(#2)} - \FPeval\tkz@y{(#3)} -\fi -\FPadd{\ptxa}{\tkz@x}{-\tkz@init@xorigine} -\FPadd{\ptya}{\tkz@y}{-\tkz@init@yorigine} -\FPdiv{\ptxa}{\ptxa}{\tkz@init@xstep} -\FPdiv{\ptya}{\ptya}{\tkz@init@ystep} -\tkz@node -} - -%<--------------------------------------------------------------------------–> -% Points -%<--------------------------------------------------------------------------–> -\def\tkzPoints{\pgfutil@ifnextchar[{\tkz@Points}{\tkz@Points[]}} -\def\tkz@Points[#1](#2){% -\begingroup - \foreach \ptx/\pty/\name in {#2}{% - \tkzPoint[#1](\ptx,\pty){\name}% - } -\endgroup -} - - %<--------------------------------------------------------------------------–> -% macro d'affichage % -%<--------------------------------------------------------------------------–> -\pgfqkeys{/pointwith} -{ orthogonal/.code =\def\tkz@numv{0}, - orthogonal normed/.code =\def\tkz@numv{1}, - linear/.code =\def\tkz@numv{2}, - linear normed/.code =\def\tkz@numv{3}, - colinear/.code args ={at #1} {\global\def\tkz@numv{4} - \global\def\tkz@frompoint{#1}}, - K/.code =\def\tkz@Koeff{#1} - } - -\def\tkzDefPointWith{\pgfutil@ifnextchar[{\tkz@DefPointWith}{% - \tkz@DefPointWith[]}} -\def\tkz@DefPointWith[#1](#2){% -\pgfqkeys{/pointwith}{linear,K=1} -\pgfqkeys{/pointwith}{#1} -\ifcase\tkz@numv% - % first case 0 - \tkz@VecKOrth[\tkz@Koeff](#2){tkzPointResult} - \or% 1 - \tkz@VecKOrthNorm[\tkz@Koeff](#2){tkzPointResult} - \or% 2 - \tkz@VecK[\tkz@Koeff](#2){tkzPointResult} - \or% 3 - \tkz@VecKNorm[\tkz@Koeff](#2){tkzPointResult} - \or% 4 - \tkz@VecKCoLinear[\tkz@Koeff](#2,\tkz@frompoint){tkzPointResult} - \fi -} - -%<-------------------------------------------------------------------------–> -% % % 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}{\global\def\tkz@numrp{0}% - \global\def\tkz@infl{#1}% - \global\def\tkz@supr{#2}}, -segment/.code args={#1--#2}{\global\def\tkz@numrp{1}% - \global\def\tkz@start{#1}% - \global\def\tkz@end{#2}}, -line/.code args={#1--#2}{\global\def\tkz@numrp{2}% - \global\def\tkz@start{#1}% - \global\def\tkz@end{#2}}, -circle/.code args={center #1 radius #2}{\def\tkz@numrp{3}% - \global\def\tkz@center{#1} - \global\def\tkz@rad{#2}} -} - -\def\tkzGetRandPointOn{\pgfutil@ifnextchar[{\tkz@DefRandPointOn}{% - \tkz@DefRandPointOn[]}} -\def\tkz@DefRandPointOn[#1]#2{% -\begingroup -\pgfkeys{/tkzDefRandPoint/.cd} -\pgfqkeys{/tkzDefRandPoint}{#1} -\ifcase\tkz@numrp% - % first case 0 - \tkzRandPointOnRect(\tkz@infl,\tkz@supr){#2} - \or% 1 - \tkzRandPointOnSegment(\tkz@start,\tkz@end){#2} - \or% 2 - \tkzRandPointOnLine(\tkz@start,\tkz@end){#2} - \or% 3 - \tkzRandPointOnCircle(\tkz@center,\tkz@rad){#2} -\fi -\endgroup -} - -\def\tkzRandPointOnRect(#1,#2)#3{% -\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% -\FPadd{\tkz@a}{\pgf@sys@tonumber{\pgf@xb}}{-\pgf@sys@tonumber{\pgf@xa}} -\FPadd{\tkz@b}{\pgf@sys@tonumber{\pgf@yb}}{-\pgf@sys@tonumber{\pgf@ya}} - \pgfmathparse{rnd}\global\let\myrndone\pgfmathresult - \pgfmathparse{rnd}\global\let\myrndtwo\pgfmathresult -\path[coordinate] ($(#1)+(\myrndone*\tkz@a pt,% - \myrndtwo*\tkz@b pt)$) coordinate (#3); - } - -\def\tkzRandPointOnSegment(#1,#2)#3{% - \pgfmathparse{rnd}\global\let\myrnd\pgfmathresult -\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (#3);} - -\def\tkzRandPointOnLine(#1,#2)#3{% - \pgfmathparse{rand}\global\let\myrnd\pgfmathresult -\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (#3);} - -\def\tkzRandPointOnCircle(#1,#2)#3{% -\pgfmathrandominteger{\myrnd}{0}{360} -\tkz@ax#2 % -\FPeval\tkz@xa{\pgf@sys@tonumber{\tkz@ax}*cos(\myrnd*\FPpi/180)} -\FPeval\tkz@xb{\pgf@sys@tonumber{\tkz@ax}*sin(\myrnd*\FPpi/180)} -\path[coordinate]($(#1) + (\tkz@xa pt,\tkz@xb pt) $) coordinate (#3); -} - %<--------------------------------------------------------------------------–> % Coordonnées d'un point % result in #2x et #2y #1 est le point et on récupère ses coordonnées % usage soit A un point \tkzGetPointCoord(A){V} alors \Vx = xA et \Vy = yA % en cm -% tkzGetPointCoord avec [#1] cm ou bien pt !!! %<--------------------------------------------------------------------------–> +% tkzGetPointCoord avec [#1] cm ou bien pt ?? todo +%<--------------------------------------------------------------------------–> \def\tkzGetPointCoord(#1)#2{% \begingroup -\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} -\pgfmathparse{\pgf@sys@tonumber{\pgf@x}/28.45274} -\global\let\tkzresultx\pgfmathresult -\global\expandafter\edef\csname #2x\endcsname{\tkzresultx}% -\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} -\pgfmathparse{\pgf@sys@tonumber{\pgf@y}/28.45274} -\global\let\tkzresulty\pgfmathresult -\global\expandafter\edef\csname #2y\endcsname{\tkzresulty} + \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} + \pgfmathparse{\pgf@sys@tonumber{\pgf@x}/28.45274} + \global\let\tkzresultx\pgfmathresult + \global\expandafter\edef\csname #2x\endcsname{\tkzresultx}% + \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} + \pgfmathparse{\pgf@sys@tonumber{\pgf@y}/28.45274} + \global\let\tkzresulty\pgfmathresult + \global\expandafter\edef\csname #2y\endcsname{\tkzresulty} \endgroup } - \def\tkz@@extractxy#1{% \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} } \let\tkzGetPointxy\tkzGetPointCoord %<--------------------------------------------------------------------------–> - +\makeatother \endinput |