summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex
diff options
context:
space:
mode:
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.tex519
1 files changed, 519 insertions, 0 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
new file mode 100644
index 00000000000..d4e5e982fef
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex
@@ -0,0 +1,519 @@
+% 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}
+
+
+%<--------------------------------------------------------------------------–>
+% init def point
+%<--------------------------------------------------------------------------–>
+\newif\iftkz@polar\tkz@polarfalse
+\newif\iftkz@pt@polar
+\newif\iftkz@pt@show
+\newif\iftkz@pt@noname
+
+
+%<--------------------------------------------------------------------------–>
+\pgfdeclareshape{cross}
+{%
+ \inheritsavedanchors[from=rectangle] % this is nearly a rectangle
+ \inheritanchorborder[from=rectangle]
+ \inheritanchor[from=rectangle]{north}
+ \inheritanchor[from=rectangle]{north west}
+ \inheritanchor[from=rectangle]{north east}
+ \inheritanchor[from=rectangle]{center}
+ \inheritanchor[from=rectangle]{west}
+ \inheritanchor[from=rectangle]{east}
+ \inheritanchor[from=rectangle]{mid}
+ \inheritanchor[from=rectangle]{mid west}
+ \inheritanchor[from=rectangle]{mid east}
+ \inheritanchor[from=rectangle]{base}
+ \inheritanchor[from=rectangle]{base west}
+ \inheritanchor[from=rectangle]{base east}
+ \inheritanchor[from=rectangle]{south}
+ \inheritanchor[from=rectangle]{south west}
+ \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}}
+ }
+}
+%<--------------------------------------------------------------------------–>
+% tkzDefPoint
+%<--------------------------------------------------------------------------–>
+
+%<--------------------------------------------------------------------------–>
+% macros complémentaires pour def point
+%<--------------------------------------------------------------------------–>
+\def\tkz@parsecoordinate#1{%
+\tkz@getseparator#1,\@nil
+\iftkz@polar
+ \tkz@getfrompolar#1\@nil
+\else
+ \tkz@getfromcart#1\@nil
+\fi
+}
+\def\tkz@getseparator#1,#2\@nil{%
+\ifx\tkzempty#2\tkzempty%
+ \tkz@polartrue
+\else
+ \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@getfromcart#1,#2\@nil{
+ \FPeval\tkz@x{(#1)}
+ \FPeval\tkz@y{(#2)}
+\global\edef\tkz@absc{\tkz@x}
+\global\edef\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
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzDefPoint{\pgfutil@ifnextchar[{\tkzActivOff\tkz@DefPoint}{%
+ \tkzActivOff\tkz@DefPoint[]}}
+
+\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);
+}
+%<--------------------------------------------------------------------------–>
+% tkzDefPoints
+%<--------------------------------------------------------------------------–>
+\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}}
+}
+%<--------------------------------------------------------------------------–>
+% tkzSetUpPoint définit la forme d'un point
+%<--------------------------------------------------------------------------–>
+\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}
+\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}}}%
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% 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}}} }
+
+\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) {};
+\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) {};}
+\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);%
+ \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}
+}%
+
+\def\tkzDefShiftPoint[#1](#2)#3{%
+ \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}}
+\def\tkzLabelPoint{\pgfutil@ifnextchar[{\tkz@LabelPoint}{\tkz@LabelPoint[]}}
+\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$};}
+}%
+%<--------------------------------------------------------------------------–>
+% 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}}
+}
+ \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
+\ifx\tkzutil@empty\tkz@xlabel
+\else
+ \protected@edef\tkz@temp{%
+ \noexpand\path (#2)--(#2 |- tkz@xline)
+ \noexpand node[xcoord style]}\tkz@temp {\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};
+\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 !!! %<--------------------------------------------------------------------------–>
+\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}
+\endgroup
+}
+
+\def\tkz@@extractxy#1{%
+\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}
+\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}
+}
+\let\tkzGetPointxy\tkzGetPointCoord
+%<--------------------------------------------------------------------------–>
+
+\endinput