summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-01-24 21:43:02 +0000
committerKarl Berry <karl@freefriends.org>2020-01-24 21:43:02 +0000
commit4ce6f5f9c360b21c85e05cf51a20445a33aba4cc (patch)
tree7568e73fee89da48bc1ac9a383219336a4f23160 /Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex
parentd5adeaeb325c83b945dd89cac45b12a7410fd32d (diff)
tkz-euclide (24jan20)
git-svn-id: svn://tug.org/texlive/trunk@53531 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex')
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex114
1 files changed, 114 insertions, 0 deletions
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