summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-07-15 21:46:25 +0000
committerKarl Berry <karl@freefriends.org>2022-07-15 21:46:25 +0000
commita37835eecfb8c04bd99ca2420cc72418dec4198b (patch)
treea1c9effe63509d07db09207df1153ef0ed5ba255 /Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex
parent0c65eda87a3a65cdb4bcf42a2912bd9721816bd7 (diff)
tkz-euclide (15jul22)
git-svn-id: svn://tug.org/texlive/trunk@63907 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex')
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex173
1 files changed, 103 insertions, 70 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex
index 74d351e2e41..1c214a31504 100644
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex
@@ -13,9 +13,9 @@
% The Current Maintainer of this work is Alain Matthes.
% utf8 encoding
-\def\fileversion{4.04}
-\def\filedate{2022/01/22}
-\typeout{2022/01/22 4.04 tkz-tools-intersections.tex}
+\def\fileversion{4.2c}
+\def\filedate{2022/07/14}
+\typeout{2022/07/14 4.2c tkz-tools-eu-intersections.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% intersection de deux lignes
@@ -25,37 +25,37 @@
}
\def\tkz@InterLL(#1,#2)(#3,#4)#5{%
-%\path (intersection of #1--#2 and #3--#4) coordinate(#5);
+\path (intersection of #1--#2 and #3--#4) coordinate(#5);
% méthode with tikz
-\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}%
-\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}%
-\tkz@ax\pgf@x%
-\tkz@ay\pgf@y%
-\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}%
-\pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}}
-\tkz@bx\pgf@x%
-\tkz@by\pgf@y%
-\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}%
-\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}%
-\tkz@cx\pgf@x%
-\tkz@cy\pgf@y%
-\pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}}%
-\pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}}%
-\tkz@dx\pgf@x%
-\tkz@dy\pgf@y%
-
-\edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}}
-\edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}}
-\edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}}
-\edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}}
-\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}}
-\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}}
-\edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}}
-\edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}}
-\edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}}
-\edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}}
-\edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}}
-\path[coordinate](\tkz@xs,\tkz@ys) coordinate (#5);
+% \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}%
+% \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}%
+% \tkz@ax\pgf@x%
+% \tkz@ay\pgf@y%
+% \pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}%
+% \pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}}
+% \tkz@bx\pgf@x%
+% \tkz@by\pgf@y%
+% \pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}%
+% \pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}%
+% \tkz@cx\pgf@x%
+% \tkz@cy\pgf@y%
+% \pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}}%
+% \pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}}%
+% \tkz@dx\pgf@x%
+% \tkz@dy\pgf@y%
+%
+% \edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}}
+% \edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}}
+% \edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}}
+% \edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}}
+% \edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(809.55841)}}
+% \edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(809.55841)}}
+% \edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}}
+% \edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}}
+% \edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}}
+% \edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}}
+% \edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}}
+% \path[coordinate](\tkz@xs,\tkz@ys) coordinate (#5);
}
@@ -74,8 +74,8 @@
\edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}}
\edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}}
\edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}}
-\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}}
-\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}}
+\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(809.55841)}}
+\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(809.55841)}}
\edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}}
\edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}}
\edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}}
@@ -112,7 +112,7 @@
% c -= 2 * (sc.x * p1.x + sc.y * p1.y + sc.z * p1.z);
% c -= r * r;
% bb4ac = b * b - 4 * a * c;
-% if (ABS(a) < EPS || bb4ac < 0) {
+% if (ABS(a) < EPS bb4ac < 0) {
% *mu1 = 0;
% *mu2 = 0;
% return(FALSE);
@@ -125,14 +125,16 @@
% }
%<---------- test ------------------------------------------------------–>
\def\tkzTestInterLC(#1,#2)(#3,#4){%
+\begingroup
\tkz@Projection(#1,#2)(#3){tkz@pth}% distance centre à la ligne
\tkz@@CalcLength(#3,tkz@pth){tkz@mathLen}%
\tkz@@CalcLength(#3,#4){tkzLengthResult}%calcul du rayon
\ifdim\tkz@mathLen pt>\tkzLengthResult pt\relax%
-\tkzFlagLCfalse
+\global\tkzFlagLCfalse
\else
-\tkzFlagLCtrue
+\global\tkzFlagLCtrue
\fi
+\endgroup
}
%<--------------------------------------------------------------------------–>
\def\tkz@numlc{0}
@@ -141,9 +143,15 @@
R/.code = \def\tkz@numlc{1},
with nodes/.code = \def\tkz@numlc{2},
common/.store in = \tkz@common,
- near/.store in = \tkz@near,
common = {},
- near = {},
+ near/.is if = tkz@near,
+ near/.default = true,
+ near = false,
+ next to/.store in = \tkz@nextto,
+ next to/.initial = {},
+ next/.default = {},
+ next to = {},
+ next to/.value required,
node
}
%<--------------------------------------------------------------------------–>
@@ -164,34 +172,46 @@
\tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}%
{tkzSecondPointResult}%
\fi
- \ifx\tkz@common\tkzutil@empty
- \ifx\tkz@near\tkzutil@empty
- \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4) \tkzGetAngle{tkz@an}
- \ifdim\tkz@an pt<180 pt\relax%
- \else
- \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
- \fi
- \else
+\iftkz@near
\tkz@@CalcLength(#2,tkzFirstPointResult){tkzLengthFirst}
\tkz@@CalcLength(#2,tkzSecondPointResult){tkzLengthSecond}
- \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax%
- \else
- \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
- \fi
- \fi
- \else
-\tkz@@CalcLength(\tkz@common,tkzSecondPointResult){tkz@mathLen}
- \ifdim\tkz@mathLen pt<0.1pt\relax%
- \else
- \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
- \fi
- \fi
+ \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+\else
+ \ifx\tkz@common\tkzutil@empty
+ \ifx\tkz@nextto\tkzutil@empty
+ \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4)
+ \tkzGetAngle{tkz@an}
+ \ifdim\tkz@an pt<180 pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+ \else
+ \tkz@@CalcLength(\tkz@nextto,tkzFirstPointResult){tkzLengthFirst}
+ \tkz@@CalcLength(\tkz@nextto,tkzSecondPointResult){tkzLengthSecond}
+ \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+ \fi
+ \else
+ \tkz@@CalcLength(\tkz@common,tkzSecondPointResult){tkz@mathLen}
+ \ifdim\tkz@mathLen pt<1pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+ \fi
+\fi%near
\endpgfinterruptboundingbox
\endgroup
}
@@ -351,17 +371,30 @@
% Intersection de deux cercles
%<--------------------------------------------------------------------------–>
%<---------- test ------------------------------------------------------–>
-% test avec des nodes
+% test avec des nodes R-r <= d <= R+r
\def\tkzTestInterCC(#1,#2)(#3,#4){%
+\begingroup
\tkz@@CalcLength(#1,#3){tkz@mathLen}% distance entre les centres
\tkz@@CalcLength(#2,#1){tkz@rA}%calcul du rayon
\tkz@@CalcLength(#4,#3){tkz@rB}%calcul du rayon
+% test if d <= rA + rB ?
\edef\tkz@rS{\fpeval{\tkz@rA+\tkz@rB}}
\ifdim\tkz@mathLen pt > \tkz@rS pt\relax%
-\tkzFlagCCfalse
+\global\tkzFlagCCfalse
+\else
+% now test if d>= rA - rB or rB-rA
+ \ifdim \tkz@rA pt > \tkz@rB pt\relax%
+ \edef\tkz@rD{\fpeval{\tkz@rA-\tkz@rB}}
+ \else
+ \edef\tkz@rD{\fpeval{\tkz@rB-\tkz@rA}}
+ \fi
+\ifdim \tkz@rD pt > \tkz@mathLen pt\relax%
+ \global\tkzFlagCCfalse
\else
-\tkzFlagCCtrue
+\global\tkzFlagCCtrue
\fi
+\fi
+\endgroup
}
\def\tkz@numcc{0}
@@ -433,7 +466,7 @@
\edef\tkz@xx{\fpeval{\tkz@ax+\tkz@aa/\tkz@dd*(\tkz@bx - \tkz@ax)}}
\edef\tkz@yy{\fpeval{\tkz@ay+\tkz@aa/\tkz@dd*(\tkz@by - \tkz@ay)}}
\path[coordinate](\tkz@xx pt,\tkz@yy pt) coordinate (tkzRadialCenter);
-\edef\tkz@hh{\fpeval{sqrt((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa))}}
+\edef\tkz@hh{\fpeval{sqrt(abs((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa)))}}% abs !2022
\edef\tkz@rx{\fpeval{\tkz@hh / \tkz@dd * (\tkz@ay - \tkz@by)}}
\edef\tkz@ry{\fpeval{\tkz@hh / \tkz@dd * (\tkz@bx - \tkz@ax)}}
\edef\tkz@xs{\fpeval{\tkz@xx + \tkz@rx}}