diff options
author | Karl Berry <karl@freefriends.org> | 2020-01-24 21:43:02 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-01-24 21:43:02 +0000 |
commit | 4ce6f5f9c360b21c85e05cf51a20445a33aba4cc (patch) | |
tree | 7568e73fee89da48bc1ac9a383219336a4f23160 /Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex | |
parent | d5adeaeb325c83b945dd89cac45b12a7410fd32d (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.tex | 114 |
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 |