texlive[68663] Master/texmf-dist: tkz-euclide (26oct23)
commits+karl at tug.org
commits+karl at tug.org
Thu Oct 26 21:54:11 CEST 2023
Revision: 68663
https://tug.org/svn/texlive?view=revision&revision=68663
Author: karl
Date: 2023-10-26 21:54:11 +0200 (Thu, 26 Oct 2023)
Log Message:
-----------
tkz-euclide (26oct23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-angles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-circles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-compass.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-ellipses.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-points.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-polygons.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-protractor.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-sectors.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-show.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex
Added Paths:
-----------
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles-by.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-by.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-spc.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-with.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-angles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-base.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-intersections.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-math.tex
Removed Paths:
-------------
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles-by.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-by.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-spc.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-with.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-angles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-base.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-intersections.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-math.tex
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,6 +1,6 @@
# tkz-euclide — for euclidean geometry
-Release 5.03c 2023/10/20
+Release 5.04c 2023/10/26
## Description
@@ -65,10 +65,12 @@
## History
-- 5.03c. Correction of the file tkz-obj-lua-points-spc.tex. Bug in the macro `\tkzDefBarycentricPointTwo`.
+- 5.04c Some files have been renamed.
+
+- 5.03c Correction of the file tkz-obj-lua-points-spc.tex. Bug in the macro `\tkzDefBarycentricPointTwo`.
Add macro |\tkzDrawEllipse|;
-- 5.02c. Correction of the file tkz-lib-eu-shape.tex. Remove duplicate macro inside tkz-draw-eu-points.tex (ex tkz-obj-eu-draw-points.tex);
+- 5.02c Correction of the file tkz-lib-eu-shape.tex. Remove duplicate macro inside tkz-draw-eu-points.tex (ex tkz-obj-eu-draw-points.tex);
- 5.01c Correction of the date of the file tkz-euclide.sty. Cleaned up the file tkz-tools-lua-math.tex. Added file tkz-obj-eu-points-spc.tex;
@@ -75,13 +77,13 @@
- 5.00c Added the "lua" option to the package, allowing to perform most of the calculations with "lua". This saves time and precision;
-- 4.25c. Remove \input{tkz-obj-eu-draw-triangles.tex} from the list of files to load.
+- 4.25c Remove \input{tkz-obj-eu-draw-triangles.tex} from the list of files to load.
-- 4.24c. Correction of a bug in the macro `\tkzMarkAngle`;
+- 4.24c Correction of a bug in the macro `\tkzMarkAngle`;
Modification of the macro `\tkzDefCircle[apollonius]`;
-- 4.23c. Correction of a bug in the macro `\tkzDrawSemiCircle`,
+- 4.23c Correction of a bug in the macro `\tkzDrawSemiCircle`,
Modification of `\tkzDefRadicalAxis`,
Remove old codes,
Correction of the documentation;
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -21,10 +21,10 @@
headings = small
]{tkz-doc}
\gdef\tkznameofpack{tkz-euclide}
-\gdef\tkzversionofpack{5.03c}
+\gdef\tkzversionofpack{5.04c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{doc-tkz-euclide}
-\gdef\tkzversionofdoc{5.03c}
+\gdef\tkzversionofdoc{5.04c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-angles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-angles.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-angles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tool-eu-angles.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tool-eu-angles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzSetUpArc
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-circles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-circles.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-circles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-draw-circles.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-draw-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzSetUpCircle
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-compass.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-compass.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-compass.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-compass.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-compass.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Author Alain Matthes
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-ellipses.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-ellipses.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-ellipses.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-draw-ellipses.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-draw-ellipses.tex}
\makeatletter
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-draw-lines.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-draw-lines.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-points.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-points.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-points.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-draw-eu-points.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-draw-eu-points.tex}
\makeatletter
%<--------------------------------------------------------------------------->
% tkzSetUpPoint définit la forme d'un point
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-polygons.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-polygons.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-polygons.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-polygons.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-polygons.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Polygon
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-protractor.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-protractor.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-protractor.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-protractor.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-protractor.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% !!! idea from Y. Combe !!!
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-sectors.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-sectors.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-sectors.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-sectors.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-sectors.tex}
\makeatletter
%<----------------------- Sectors ------------------------------–>
\gdef\tkz at nums{0}
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-show.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-show.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-show.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-show.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-show.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% finding specific points in a triangle
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg 2023-10-26 19:54:11 UTC (rev 68663)
@@ -16,9 +16,9 @@
% and save the file in a directory part of your TEXINPUTS environment
% variable.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-euclide.cfg}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-euclide.cfg}
%<------ colors ---------------------------------------–>
\def\tkz at backgroundcolor{white}
\def\tkz at textcolor{black}
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,11 +10,11 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
%-------------------------------------------------------------------------------
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-euclide.sty}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-euclide.sty}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-euclide}[ 2023/10/20 5.03c for pure Euclidean Geometry ]
+\ProvidesPackage{tkz-euclide}[ 2023/10/26 5.04c for pure Euclidean Geometry ]
\newif\if at tkzlua
\@tkzluafalse
\DeclareOption{lua}{\@tkzluatrue}
@@ -180,16 +180,16 @@
% % next from euclide
\makeatletter
\if at tkzlua
-\input{tkz-tools-lua-base.tex}
-\input{tkz-obj-lua-points.tex}
-\input{tkz-tools-lua-math.tex}
-\input{tkz-tools-lua-intersections.tex}
-\input{tkz-obj-lua-points-by.tex}
-\input{tkz-obj-lua-points-with.tex}
-\input{tkz-obj-lua-points-spc.tex}
-\input{tkz-tools-lua-angles.tex}
-\input{tkz-obj-lua-circles.tex}
-\input{tkz-obj-lua-circles-by.tex}
+\input{tkz-tools-eu-lua-base.tex}
+\input{tkz-obj-eu-lua-points.tex}
+\input{tkz-tools-eu-lua-math.tex}
+\input{tkz-tools-eu-lua-intersections.tex}
+\input{tkz-obj-eu-lua-points-by.tex}
+\input{tkz-obj-eu-lua-points-with.tex}
+\input{tkz-obj-eu-lua-points-spc.tex}
+\input{tkz-tools-eu-lua-angles.tex}
+\input{tkz-obj-eu-lua-circles.tex}
+\input{tkz-obj-eu-lua-circles-by.tex}
\else
\input{tkz-obj-eu-points.tex}
\input{tkz-obj-eu-points-by.tex}
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-lib-eu-marks.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-lib-eu-marks.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Création des symboles
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-lib-eu-shape.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-lib-eu-shape.tex}
%<--------------------------------------------------------------------------–>
% Création des symboles
%<--------------------------------------------------------------------------–>
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-axesmin}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-axesmin}
\makeatletter
\def\removedot#1.{#1}
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-circles.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzCircle center and one point
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-circles.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzCircle center and one point
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-grids.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-grids.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Setup Grid
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-lines.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-lines.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% les lignes
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles-by.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles-by.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles-by.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,157 @@
+% tkz-obj-eu-circles.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{6.00}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 6.00 tkz-obj-eu-circles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% tkzCircle center and one point
+%<--------------------------------------------------------------------------–>
+% attention radius circle is defined by center and a point on the circle
+% R defined by center and the value of the radius
+% no need to define a circle with R tikz uses this method.
+% through instead of radius
+\def\tkz at numcby{0}
+\pgfkeys{/tkzDefCircleBy/.cd,
+ translation/.code args = {from #1 to #2} { \def\tkz at numcby{0}
+ \def\tkzfrom{#1}
+ \def\tkzto{#2}},
+ homothety/.code args = {center #1 ratio #2}{ \def\tkz at numcby{1}
+ \def\tkzcenter{#1}
+ \def\tkzratio{#2}},
+ reflection/.code args = {over #1--#2}{ \def\tkz at numcby{2}
+ \def\tkzdeb{#1}
+ \def\tkzfin{#2}},
+ symmetry/.code args = {center #1}{ \def\tkz at numcby{3}
+ \def\tkzcenter{#1}},
+ rotation/.code args = {center #1 angle #2}{ \def\tkz at numcby{4}
+ \def\tkzcenter{#1}
+ \def\tkzangle{#2}},
+ inversion/.code args={center #1 through #2}{ \def\tkz at numcby{5}
+ \def\tkzcenter{#1}
+ \def\tkzpoint{#2}},
+ inversion negative/.code args = {center #1 through #2}{\def\tkz at numcby{6}
+ \def\tkzcenter{#1}
+ \def\tkzpoint{#2}}
+ }
+\def\tkzDefCircleBy{\pgfutil at ifnextchar[{\tkz at DefCircleBy}{\tkz at DefCircleBy[]}}
+\def\tkz at DefCircleBy[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzDefCircleBy}{#1}
+\ifcase\tkz at numcby%
+ \tkzDefCircleTranslation(#2)%
+ \or% 1
+ \tkzDefCircleHomothety(#2)
+ \or% 2
+ \tkzDefCircleReflection(#2)
+ \or% 3
+ \tkzDefCircleSymmetry(#2)
+ \or% 4
+ \tkzDefCircleRotation(#2)
+ \or% 5
+ \tkzDefInversionCircle(#2,\tkzcenter,\tkzpoint)
+ \or% 6
+ \tkzDefInversionNegativeCircle(#2,\tkzcenter,\tkzpoint)
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleTranslation(#1,#2){%
+\begingroup
+ \tkzUTranslation(\tkzfrom,\tkzto)(#1)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzUTranslation(\tkzfrom,\tkzto)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleHomothety(#1,#2){%
+\begingroup
+ \tkzUHomo(\tkzcenter,\tkzratio)(#1)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzUHomo(\tkzcenter,\tkzratio)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleReflection(#1,#2){%
+\begingroup
+ \tkzUSymOrth(\tkzdeb,\tkzfin)(#1)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzUSymOrth(\tkzdeb,\tkzfin)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleSymmetry(#1,#2){%
+\begingroup
+ \tkzUCSym(\tkzcenter)(#1)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzUCSym(\tkzcenter)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleRotation(#1,#2){%
+\begingroup
+ \tkzURotateAngle(\tkzcenter,\tkzangle)(#1)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzURotateAngle(\tkzcenter,\tkzangle)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% #3,#4 cercle d'inversion centre #3. through #4
+% Si le cercle passe par le pôle l'image est une droite
+\def\tkzDefInversionCircle(#1,#2,#3,#4){%
+\begingroup
+ \tkz@@CalcLengthcm(#1,#2){tkz at lna}%
+ \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
+ \edef\tkzMathResult{\tkz at Dec{\tkz at Round{\tkz at Abs{\tkz at lnb - \tkz at lna}}{6}}}
+ \ifdim\tkzMathResult pt < 0.00001 pt\relax%
+ \tkzURotateAngle(#1,-90)(#2)
+ \pgfnodealias{tkz at a}{tkzPointResult}
+ \tkzUInversePoint(#3,#4)(tkz at a)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzUInversePoint(#3,#4)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \else
+ \tkzURotateAngle(#1,90)(#2)
+ \pgfnodealias{tkz at a}{tkzPointResult}
+ \tkzURotateAngle(#1,-90)(#2)
+ \pgfnodealias{tkz at b}{tkzPointResult}
+ \tkzUInversePoint(#3,#4)(tkz at a)
+ \pgfnodealias{tkz at p1}{tkzPointResult}
+ \tkzUInversePoint(#3,#4)(tkz at b)
+ \pgfnodealias{tkz at p2}{tkzPointResult}
+ \tkzUInversePoint(#3,#4)(#2)
+ \pgfnodealias{tkz at p3}{tkzPointResult}
+ \tkzDefCircle[circum](tkz at p3,tkz at p1,tkz at p2)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefInversionNegativeCircle(#1,#2,#3,#4){%
+\begingroup
+ \tkzDefInversionCircle(#1,#2,#3,#4)
+ \tkzUCSym(\tkzcenter)(tkzFirstPointResult)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzUCSym(\tkzcenter)(tkzSecondPointResult)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% End Def Circle
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles-by.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,223 @@
+% tkz-obj-lua-circles.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-lua-circles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% tkzCircle center and one point
+%<--------------------------------------------------------------------------–>
+% attention radius circle is defined by center and a point on the circle
+% R defined by center and the value of the radius
+% no need to define a circle with R tikz uses this method.
+% through instead of radius
+\def\tkz at numc{0}
+\pgfkeys{/tkzcircle/.cd,
+ R/.code = \def\tkz at numc{0},
+ diameter/.code = \def\tkz at numc{1},
+ circum/.code = \def\tkz at numc{2},
+ in/.code = \def\tkz at numc{3},
+ ex/.code = \def\tkz at numc{4},
+ euler/.code = \def\tkz at numc{5},
+ nine/.code = \def\tkz at numc{5},
+ apollonius/.code = \def\tkz at numc{6},
+ spieker/.code = \def\tkz at numc{7},
+ orthogonal from/.code args = {#1}{\gdef\tkz at numc{8}
+ \def\tkz at ptfrom{#1}},
+ orthogonal through/.code args = {#1 and #2}{\gdef\tkz at numc{9}
+ \def\tkz at ptone{#1}
+ \def\tkz at pttwo{#2}},
+ K/.code = \def\tkz at koeff{#1},
+ K = 1,
+ circum
+ }
+\def\tkzDefCircle{\pgfutil at ifnextchar[{\tkz at DefCircle}{\tkz at DefCircle[]}}
+\def\tkz at DefCircle[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzcircle}{#1}
+\ifcase\tkz at numc%
+ \tkzDefCircleR(#2)
+ \or% 1
+ \tkzDefCircleD(#2)
+ \or% 2
+ \tkzDefCircumCircle(#2)
+ \or% 3
+ \tkzDefInCircle(#2)
+ \or% 4
+ \tkzDefExCircle(#2)
+ \or% 5
+ \tkzDefEulerCircle(#2)
+ \or% 6
+ \tkzDefApolloniusCircle(#2)
+ \or% 7
+ \tkzDefSpiekerCircle(#2)
+ \or% 8
+ \tkzDefOrthogonalCircle(#2,\tkz at ptfrom)
+ \or% 9
+ \tkzDefOrthoThroughCircle(#2,\tkz at ptone,\tkz at pttwo)
+ \fi
+\endgroup
+}
+%for compatibility
+%<--------------------------------------------------------------------------–>
+% R
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleR(#1,#2){%
+\begingroup
+ \edef\tkzLengthResult{\fpeval{round(#2,5)}}
+ \global\let\tkzLengthResult\tkzLengthResult
+ \path (#1)--++(\tkzLengthResult,0) coordinate (tkzSecondPointResult);
+ \tkzRenamePoint(tkzSecondPointResult){tkzPointResult}
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Diameter Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleD(#1,#2){%
+\begingroup
+ \tkzDefMidPoint(#1,#2)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \pgfnodealias{tkzSecondPointResult}{#2}
+ \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Circum Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircumCircle(#1,#2,#3){%
+\begingroup
+ \tkzCircumCenter(#1,#2,#3)
+ \tkzRenamePoint(tkzPointResult){tkzFirstPointResult}
+ \tkzRenamePoint(#1){tkzSecondPointResult}
+ \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}%3.06 add [cm]
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% In(scribe) Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefInCircle(#1,#2,#3){%
+\begingroup
+ \tkzInCenter(#1,#2,#3)
+ \pgfnodealias{tkz at incenter}{tkzPointResult}
+ \tkzUProjection(#1,#3)(tkz at incenter)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkz@@CalcLengthcm(tkzPointResult,tkz at incenter){tkzLengthResult}
+ \pgfnodealias{tkzPointResult}{tkz at incenter}
+ \pgfnodealias{tkzFirstPointResult}{tkz at incenter}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Ex(scribe) Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExCircle(#1,#2,#3){%
+\begingroup
+ \tkzExCenter(#1,#2,#3)
+ \pgfnodealias{tkz at excenter}{tkzPointResult}
+ \tkzUProjection(#1,#3)(tkz at excenter)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkz@@CalcLengthcm(tkzPointResult,tkz at excenter){tkzLengthResult}% for tkzGetLength
+ \pgfnodealias{tkzPointResult}{tkz at excenter}
+ \pgfnodealias{tkzFirstPointResult}{tkz at excenter}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Radius Ex Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExRadius(#1,#2,#3){%
+\begingroup
+ \tkzExCenter(#1,#2,#3)
+ \tkzUProjection(#1,#3)(tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% The nine-point circle, also called Euler's circle or the Feuerbach circle
+% best way Ma,Mb,Mc circum center 2020
+%<--------------------------------------------------------------------------–>
+\def\tkzDefEulerCircle(#1,#2,#3){%
+\begingroup
+ \tkzDefMidPoint(#1,#2) \pgfnodealias{tkz at e1}{tkzPointResult}
+ \tkzDefMidPoint(#2,#3) \pgfnodealias{tkz at e2}{tkzPointResult}
+ \tkzDefMidPoint(#1,#3) \pgfnodealias{tkz at e3}{tkzPointResult}
+ \tkzCircumCenter(tkz at e1,tkz at e2,tkz at e3)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzRenamePoint(tkz at e1){tkzSecondPointResult}
+ \tkz@@CalcLengthcm(tkzPointResult,tkz at e1){tkzLengthResult}
+\endgroup
+}
+\let\tkzDefNinePointsCircle\tkzEulerCircle%
+\let\tkzFeuerBachCircle\tkzEulerCircle%
+
+\def\tkzDefEulerRadius(#1,#2,#3){%
+\begingroup
+ \tkzEulerCenter(#1,#2,#3)
+ \pgfnodealias{eur at pta}{tkzPointResult}
+ \tkzDefMidPoint(#1,#2)
+ \tkz@@CalcLengthcm(eur at pta,tkzPointResult){tkzLengthResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Apollonius circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefApolloniusCircle(#1,#2){%
+\begingroup
+ \tkzDefBarycentricPointTwo(#1,1,#2,\tkz at koeff)
+ \pgfnodealias{apo at pta}{tkzPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkzDefBarycentricPointTwo(#1,1,#2,-\tkz at koeff)
+ \pgfnodealias{apo at ptb}{tkzPointResult}
+ \tkzDefMidPoint(apo at pta,apo at ptb)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkz@@CalcLengthcm(tkzFirstPointResult,apo at pta){tkzLengthResult}
+ \pgfnodealias{tkzThirdPointResult}{apo at ptb}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefOrthogonalCircle(#1,#2,#3){%
+\begingroup
+ \tkzTgtFromP(#1,#2)(#3)
+ \tkz@@CalcLengthcm(#1,tkzFirstPointResult){tkzLengthResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefOrthoThroughCircle(#1,#2,#3,#4){%
+\begingroup
+ \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
+ \edef\tkz at lnc{\fpeval{1/\tkz at lnb}}
+ \tkzVecKNorm[\tkz at lnc](#1,#3)
+ \pgfnodealias{tkz at PointResult}{tkzPointResult}
+ \tkzCircumCenter(tkz at PointResult,#3,#4)
+ \tkz@@CalcLengthcm(tkzPointResult,#3){tkzLengthResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \pgfnodealias{tkzSecondPointResult}{#3}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Spieker Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefSpiekerCircle(#1,#2,#3){%
+\begingroup
+ \tkzSpiekerCenter(#1,#2,#3)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzUProjection(tkz at m1,tkz at m2)(tkzPointResult)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkz@@CalcLength(tkzSecondPointResult,tkzFirstPointResult){tkzLengthResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+
+%<--------------------------------------------------------------------------–>
+% End Def Circle
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-circles.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-by.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-by.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-by.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,522 @@
+% tkz-tools-lua-points-by.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-lua-points-by.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Transformations Géométriques
+%<--------------------------------------------------------------------------–>
+\def\tkz at numtrsf{0}
+\pgfkeys{/tkzDefPointBy/.cd,
+ translation/.code args={from #1 to #2}{ \def\tkzfrom{#1}%
+ \def\tkzto{#2}%
+ \def\tkz at numtrsf{0}},
+ homothety/.code args={center #1 ratio #2}{ \def\tkzcenter{#1}%
+ \def\tkzratio{#2}%
+ \def\tkz at numtrsf{1}},
+ reflection/.code args={over #1--#2}{ \def\tkzdeb{#1}%
+ \def\tkzfin{#2}%
+ \def\tkz at numtrsf{2}},
+ symmetry/.code args={center #1}{ \def\tkzcenter{#1}%
+ \def\tkz at numtrsf{3}},
+ projection/.code args={onto #1--#2}{ \def\tkzdeb{#1}%
+ \def\tkzfin{#2}%
+ \def\tkz at numtrsf{4}},
+ rotation/.code args={center #1 angle #2}{ \def\tkzcenter{#1}%
+ \def\tkzangle{#2}%
+ \def\tkz at numtrsf{5}},
+ rotation in rad/.code args={center #1 angle #2}{ \def\tkzcenter{#1}%
+ \def\tkzangle{#2}%
+ \def\tkz at numtrsf{6}},
+ inversion/.code args={center #1 through #2}{ \def\tkzcenter{#1}%
+ \def\tkzpoint{#2}%
+ \def\tkz at numtrsf{7}},
+ inversion negative/.code args={center #1 through #2}{ \def\tkzcenter{#1}%
+ \def\tkzpoint{#2}%
+ \def\tkz at numtrsf{8}},
+ rotation with nodes/.code args={center #1 from #2 to #3}{ \def\tkzcenter{#1}%
+ \def\tkzfrom{#2}%
+ \def\tkzto{#3}%
+ \def\tkz at numtrsf{9}}
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefPointBy{\pgfutil at ifnextchar[{\tkz at DefPointBy}{\tkz at DefPointBy[]}}
+\def\tkz at DefPointBy[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzDefPointBy}{#1}
+ \ifcase\tkz at numtrsf%
+% % first case 0
+ \tkzUTranslation(\tkzfrom,\tkzto)(#2)
+\or% 1
+ \tkzUHomo(\tkzcenter,\tkzratio)(#2)
+\or% 2
+ \tkzUSymOrth(\tkzdeb,\tkzfin)(#2)
+\or% 3
+ \tkzUCSym(\tkzcenter)(#2)
+\or% 4
+ \tkzUProjection(\tkzdeb,\tkzfin)(#2)
+\or% 5
+ \tkzURotateAngle(\tkzcenter,\tkzangle)(#2)
+\or% 6
+ \tkzURotateInRad(\tkzcenter,\tkzangle)(#2)
+\or% 7
+ \tkzUInversePoint(\tkzcenter,\tkzpoint)(#2)
+\or% 8
+ \tkzUInverseNegativePoint(\tkzcenter,\tkzpoint)(#2)
+\or% 9
+ \tkzURotateWithNodes(\tkzcenter,\tkzfrom,\tkzto)(#2)
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefPointsBy{\pgfutil at ifnextchar[{\tkz at DefPointsBy}{\tkz at DefPointsBy[]}}
+\def\tkz at DefPointsBy[#1](#2)#3{%
+\begingroup
+\pgfqkeys{/tkzDefPointBy}{#1}
+\ifcase\tkz at numtrsf%
+ % first case 0
+ \tkzTranslation(\tkzfrom,\tkzto)(#2){#3}
+ \or% 1
+ \tkzHomo(\tkzcenter,\tkzratio)(#2){#3}
+ \or% 2
+ \tkzSymOrth(\tkzdeb,\tkzfin)(#2){#3}
+ \or% 3
+ \tkzCSym(\tkzcenter)(#2){#3}
+ \or% 4
+ \tkzProjection(\tkzdeb,\tkzfin)(#2){#3}
+ \or% 5
+ \tkzRotateAngle(\tkzcenter,\tkzangle)(#2){#3}
+ \or% 6
+ \tkzRotateInRad(\tkzcenter,\tkzangle)(#2){#3}
+ \or% 7
+ \tkzInversePoint(\tkzcenter,\tkzpoint)(#2){#3}
+ \or% 8
+ \tkzInverseNegativePoint(\tkzcenter,\tkzpoint)(#2){#3}
+ \or% 9
+ \tkzRotateWithNodes(\tkzcenter,\tkzfrom,\tkzto)(#2){#3}
+\fi
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+
+\def\ExtractPoint#1,#2\@nil{%
+\xdef\tkz at LastList{#2}
+\xdef\tkz at FirstPoint{#1}
+}
+\def\FirstPointInList#1{%
+\edef\tkz at templist{#1,}
+\expandafter\ExtractPoint\tkz at templist\@nil
+}
+%<--------------------------------------------------------------------------–>
+% Translation par rapport à un point
+%<--------------------------------------------------------------------------–>
+\def\tkzTranslation(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+\foreach\PT in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \def\tkz at pointtsf{\PT '}
+ \else
+ \def\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \tkz at VecCoLinear(#1,#2,\PT)
+ \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUTranslation(#1,#2)(#3){%
+\begingroup
+ \tkz at VecCoLinear(#1,#2,#3)%
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Symétrie par rapport à un point Homo with (-1)
+% #2 le centre #3 l'antécédent
+%<--------------------------------------------------------------------------–>
+\def\tkzCSym(#1)(#2)#3{%
+\begingroup
+\gdef\tkz at LastList{#3}
+ \foreach\PointCS in {#2}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \xdef\tkz at pointtsf{\PointCS '}
+ \else
+ \xdef\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{\PointCS}{center}}%
+ \tkz at ax=\pgf at x%
+ \tkz at ay=\pgf at y%
+ \pgfinterruptboundingbox
+ \path(#1)--++(-\tkz at ax,-\tkz at ay)coordinate (\tkz at pointtsf);
+ \endpgfinterruptboundingbox
+}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUCSym(#1)(#2){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz at ax=\pgf at x%
+ \tkz at ay=\pgf at y%
+ \path(#1)--++(-\tkz at ax,-\tkz at ay)coordinate (tkzPointResult);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Symétrie orthogonale par rapport à une droite
+%<--------------------------------------------------------------------------–>
+\def\tkzSymOrth(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+ \foreach\PointSO in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \def\tkz at pointtsf{\PointSO '}
+ \else
+ \def\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \tkzUSymOrth(#1,#2)(\PointSO)
+ \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUSymOrth(#1,#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz at ax =\pgf at y%
+ \tkz at ay =\pgf at x%
+ \pgfinterruptboundingbox
+ \path[coordinate] (#3)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
+ \endpgfinterruptboundingbox
+ \tkzInterLL(#1,#2)(#3,tkz at point)
+ \pgfnodealias{tkzPointofSym}{tkzPointResult}
+ \tkz at VecK[2](#3,tkzPointofSym)
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Projection orthogonale sur une droite
+%<--------------------------------------------------------------------------–>
+\def\tkzProjection(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+ \foreach\PointPJ in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \def\tkz at pointtsf{\PointPJ '}
+ \else
+ \def\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \tkzUProjection(#1,#2)(\PointPJ)
+ \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUProjection(#1,#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz at ax =\pgf at y%
+ \tkz at ay =\pgf at x%
+ \pgfinterruptboundingbox
+ \path[coordinate](#3)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
+ \tkzInterLL(#1,#2)(#3,tkz at point)% définit tkzPointResult
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkz at Projection(#1,#2)(#3)#4{%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz at ax =\pgf at y%
+ \tkz at ay =\pgf at x%
+ \pgfinterruptboundingbox
+ \path[coordinate](#3)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
+ \endpgfinterruptboundingbox
+ \tkz at InterLL(#1,#2)(#3,tkz at point){#4}% définit tkzPointResult
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Homothétie par rapport à un point
+%<--------------------------------------------------------------------------–>
+\def\tkzHomo(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+\foreach\PointHO in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \xdef\tkz at pointtsf{\PointHO '}
+ \else
+ \xdef\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{\PointHO}{center}}%
+ \pgf at xa=\pgf at x%
+ \pgf at ya=\pgf at y%
+ \pgfmathparse{#2}
+ \edef\tkz at coeff{\pgfmathresult}%
+ \pgfinterruptboundingbox
+ \path[coordinate](#1)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya)%
+ coordinate(\tkz at pointtsf);
+ \endpgfinterruptboundingbox
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUHomo(#1,#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \pgf at xa=\pgf at x%
+ \pgf at ya=\pgf at y%
+ \pgfmathparse{#2}
+ \edef\tkz at coeff{\pgfmathresult}%
+ \pgfinterruptboundingbox
+ \path[coordinate](#1)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya)%
+ coordinate(tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% rotation en degré
+%<--------------------------------------------------------------------------–>
+\def\tkzRotateAngle(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+\foreach\PointRot in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \def\tkz at pointtsf{\PointRot '}
+ \else
+ \def\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \tkz@@extractxy{\PointRot}
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \tkz@@extractxy{#1}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {#2}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \pgfinterruptboundingbox
+ \path[coordinate](\tkz at bx,\tkz at by)coordinate(\tkz at pointtsf);%
+ \endpgfinterruptboundingbox
+}
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzURotateAngle(#1,#2)(#3){%
+\begingroup
+ \pgf at process{\pgfpointanchor{#3}{center}}%
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \pgf at process{\pgfpointanchor{#1}{center}}%
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {#2}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \pgfinterruptboundingbox
+ \path (\tkz at bx,\tkz at by) coordinate (tkzPointResult);%
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% % rotation en radian
+% %<--------------------------------------------------------------------------–>
+\def\tkzRotateInRad(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+ \foreach\PointRot in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \xdef\tkz at pointtsf{\PointRot '}
+ \else
+ \xdef\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \pgfmathparse{#2 r}
+ \let\tkz at Angle\pgfmathresult
+ \tkz@@extractxy{\PointRot}
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \tkz@@extractxy{#1}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {\tkz at Angle}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \pgfinterruptboundingbox
+ \path[coordinate](\tkz at bx,\tkz at by)coordinate(\tkz at pointtsf);
+ \endpgfinterruptboundingbox
+}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzURotateInRad(#1,#2)(#3){%
+\begingroup
+ \pgfmathparse{#2 r}
+ \let\tkz at Angle\pgfmathresult
+ \tkz@@extractxy{#3}
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \tkz@@extractxy{#1}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {\tkz at Angle}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \pgfinterruptboundingbox
+ \path[coordinate](\tkz at bx,\tkz at by)coordinate(tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Inverse of a point
+%<--------------------------------------------------------------------------–>
+\def\tkzInversePoint(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+ \foreach\PointIP in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \xdef\tkz at pointtsf{\PointIP '}
+ \else
+ \xdef\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \tkz@@CalcLengthcm(#1,#2){tkz at lna}
+ \tkz@@CalcLengthcm(#1,\PointIP){tkz at lnb}
+ \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
+ \tkzVecKNorm[\tkz at lnc](#1,\PointIP)
+ \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+\def\tkzUInversePoint(#1,#2)(#3){%
+\begingroup
+ \tkz@@CalcLengthcm(#1,#2){tkz at lna}%
+ \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
+ \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
+ \tkzVecKNorm[\tkz at lnc](#1,#3)
+\endgroup
+}
+% possible
+% \tkzDefLine[tangent from =#3](#1,#2)
+% \tkzTgtFromP(#1,#2)(#3)
+% \tkzInterLL(tkzFirstPointResult,tkzSecondPointResult)(#1,#2)
+%<--------------------------------------------------------------------------–>
+% Inverse negative of a point
+%<--------------------------------------------------------------------------–>
+\def\tkzInverseNegativePoint(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz at LastList{#4}
+ \foreach\PointIP in {#3}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \xdef\tkz at pointtsf{\PointIP '}
+ \else
+ \xdef\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \tkz@@CalcLengthcm(#1,#2){tkz at lna}
+ \tkz@@CalcLengthcm(#1,\PointIP){tkz at lnb}
+ \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
+ \tkzVecKNorm[\tkz at lnc](#1,\PointIP)
+ \tkzUCSym(#1)(tkzPointResult)
+ \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUInverseNegativePoint(#1,#2)(#3){%
+\begingroup
+ \tkz@@CalcLengthcm(#1,#2){tkz at lna}%
+ \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
+ \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
+ \tkzVecKNorm[\tkz at lnc](#1,#3)
+ \tkzUCSym(#1)(tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------- rotate with nodes ------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzRotateWithNodes(#1,#2,#3)(#4)#5{%
+\begingroup
+\gdef\tkz at LastList{#5}
+ \foreach\PointRotWN in {#4}{%
+ \FirstPointInList\tkz at LastList
+ \ifx\tkz at FirstPoint\tkzutil at empty
+ \def\tkz at pointtsf{\PointRotWN '}
+ \else
+ \def\tkz at pointtsf{\tkz at FirstPoint}
+ \fi
+ \tkzFindAngle(#2,#1,#3)
+ \tkz@@extractxy{\PointRotWN}
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \tkz@@extractxy{#1}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {\tkzAngleResult}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \pgfinterruptboundingbox
+ \path[coordinate](\tkz at bx,\tkz at by) coordinate (\tkz at pointtsf);%
+ \endpgfinterruptboundingbox
+}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzURotateWithNodes(#1,#2,#3)(#4){%
+\begingroup
+ \tkzFindAngle(#2,#1,#3)
+ \pgf at process{\pgfpointanchor{#4}{center}}%
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \pgf at process{\pgfpointanchor{#1}{center}}%
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {\tkzAngleResult}
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \pgfinterruptboundingbox
+ \path (\tkz at bx,\tkz at by) coordinate (tkzPointResult);%
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Fin des transformations
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-by.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-spc.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-spc.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-spc.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,680 @@
+% tkz-obj-lua-points.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.04c tkz-obj-lua-points-spc.tex}
+\makeatletter
+%add ExCenter
+%<--------------------------------------------------------------------------–>
+% Specific points
+%<--------------------------------------------------------------------------–>
+% barycentre
+%<--------------------------------------------------------------------------–>
+\def\tkzDefBarycentricPoint(#1){%
+\begingroup
+ \path[coordinate] (barycentric cs:#1) coordinate (tkzPointResult);
+\endgroup
+}
+\let\tkzDefBCPoint\tkzDefBarycentricPoint
+
+\def\tkzDefBarycentricPointTwo(#1,#2,#3,#4){%
+\begingroup
+\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
+\tkz at ax\pgf at x %
+\tkz at ay\pgf at y %
+\edef\tkzcax{\strip at pt\tkz at ax}%
+\edef\tkzcay{\strip at pt\tkz at ay}%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}
+\tkz at bx\pgf at x %
+\tkz at by\pgf at y %
+\edef\tkzcbx{\strip at pt\tkz at bx}%
+\edef\tkzcby{\strip at pt\tkz at by}%
+\edef\tkztpmx{\tkz at Dec{(\tkzcax*(#2) + \tkzcbx*(#4))/(#2 + #4 )}}
+\edef\tkztpmy{\tkz at Dec{(\tkzcay*(#2) + \tkzcby*(#2))/(#2 + #4 )}}
+\pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% milieu de deux points
+%<--------------------------------------------------------------------------–>
+% possible \coordinate (#3) at ($(#1)!0.5!(#2)$);
+%<--------------------------------------------------------------------------–>
+% \def\tkzDefMidPoint(#1,#2){%
+% \begingroup
+% \path (#1) -- (#2) coordinate[pos=.5](tkzPointResult);
+% \endgroup
+% }
+\def\tkzDefMidPoint(#1,#2){%
+\begingroup
+ \pgf at process{\pgfpointanchor{#1}{center}}%
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \pgf at process{\pgfpointanchor{#2}{center}}%
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \advance\tkz at bx by\tkz at ax\relax%
+ \advance\tkz at by by\tkz at ay\relax%
+ \divide\tkz at bx by2\relax%
+ \divide\tkz at by by2\relax
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz at bx}{\tkz at by}}
+\endgroup
+}
+\def\tkz at DefMidPoint(#1,#2,#3,#4){%
+\begingroup
+ \tkz at ax#1%
+ \tkz at ay#2%
+ \tkz at bx#3%
+ \tkz at by#4%
+ \advance\tkz at bx by\tkz at ax\relax%
+ \advance\tkz at by by\tkz at ay\relax%
+ \divide\tkz at bx by2\relax%
+ \divide\tkz at by by2\relax
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz at bx}{\tkz at by}}
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+\def\tkz at simicenter{0}
+\pgfkeys{/tkzsimicenter/.cd,
+ ext/.code = \def\tkz at simicenter{0},
+ int/.code = \def\tkz at simicenter{1},
+ ext
+}%
+
+\def\tkzDefSimilitudeCenter{\pgfutil at ifnextchar[{\tkz at DefSimilitudeCenter}%
+ {\tkz at DefSimilitudeCenter[]}}
+\def\tkz at DefSimilitudeCenter[#1](#2,#3)(#4,#5){%
+\pgfqkeys{/tkzsimicenter}{#1}
+\begingroup
+\ifcase\tkz at simicenter%
+ \tkzDefExtSimilitudeCenter[#1](#2,#3)(#4,#5)
+ \or% 1
+ \tkzDefIntSimilitudeCenter[#1](#2,#3)(#4,#5)
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Internal Similitude center
+% Two circles have two similitude centers namely the internal center of
+% similitude Si and the external similitude center Se.
+%<--------------------------------------------------------------------------–>
+\def\tkz at numhomo{0}
+\pgfkeys{
+/tkzSimilitudeCenter/.cd,
+ node/.code = \def\tkz at numhomo{0},
+ R/.code = \def\tkz at numhomo{1},
+ node,
+ /tkzSimilitudeCenter/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1, /tikz/\searchname/.retry=#1}}
+}
+\def\tkzDefIntSimilitudeCenter{\pgfutil at ifnextchar[{\tkz at DefIntSimilitudeCenter}{\tkz at DefIntSimilitudeCenter[]}}
+\def\tkz at DefIntSimilitudeCenter[#1](#2,#3)(#4,#5){%
+\begingroup
+\pgfqkeys{/tkzSimilitudeCenter}{#1}
+\ifcase\tkz at numhomo%
+ \tkz@@CalcLengthcm(#2,#3){tkz at rt}%
+ \tkz@@CalcLengthcm(#4,#5){tkz at rf}%
+ \or% 1
+ \def\tkz at rt{#3}%
+ \def\tkz at rf{#5}%
+\fi
+\pgfinterruptboundingbox
+\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}
+\tkz at ax\pgf at x %
+\tkz at ay\pgf at y %
+\edef\tkzcax{\strip at pt\tkz at ax}%
+\edef\tkzcay{\strip at pt\tkz at ay}%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#4}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#4}{center}}
+\tkz at bx\pgf at x %
+\tkz at by\pgf at y %
+\edef\tkzcbx{\strip at pt\tkz at bx}%
+\edef\tkzcby{\strip at pt\tkz at by}%
+\edef\tkztpmx{\tkz at Dec{(\tkzcax*\tkz at rf + \tkzcbx*\tkz at rt)/(\tkz at rf + \tkz at rt )}}
+\edef\tkztpmy{\tkz at Dec{(\tkzcay*\tkz at rf + \tkzcby*\tkz at rt)/(\tkz at rf + \tkz at rt )}}
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefIntHomotheticCenter\tkzDefIntSimilitudeCenter
+%<--------------------------------------------------------------------------–>
+% External Similitude center
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExtSimilitudeCenter{\pgfutil at ifnextchar[{\tkz at DefExtSimilitudeCenter}{%
+\tkz at DefExtSimilitudeCenter[]}}
+
+\def\tkz at DefExtSimilitudeCenter[#1](#2,#3)(#4,#5){%
+\begingroup
+\pgfqkeys{/tkzSimilitudeCenter}{#1}
+\ifcase\tkz at numhomo%
+ \tkz@@CalcLengthcm(#2,#3){tkz at rt}%
+ \tkz@@CalcLengthcm(#4,#5){tkz at rf}%
+ \or% 1
+ \def\tkz at rt{#3}%
+ \def\tkz at rf{#5}%
+\fi
+\pgfinterruptboundingbox
+\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}
+\tkz at ax\pgf at x %
+\tkz at ay\pgf at y %
+\edef\tkzcax{\strip at pt\tkz at ax}%
+\edef\tkzcay{\strip at pt\tkz at ay}%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#4}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#4}{center}}
+\tkz at bx\pgf at x %
+\tkz at by\pgf at y %
+\edef\tkzcbx{\strip at pt\tkz at bx}%
+\edef\tkzcby{\strip at pt\tkz at by}%
+\edef\tkztpmx{\tkz at Dec{(\tkzcax*(-\tkz at rf) + \tkzcbx*\tkz at rt)/(\tkz at rt - (\tkz at rf))}}
+\edef\tkztpmy{\tkz at Dec{(\tkzcay*(-\tkz at rf) + \tkzcby*\tkz at rt)/(\tkz at rt - (\tkz at rf))}}
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
+ \endpgfinterruptboundingbox
+\endgroup
+}
+
+\let\tkzDefExtHomotheticCenter\tkzDefExtSimilitudeCenter
+%<--------------------------------------------------------------------------–>
+% Harmonic Division
+%<--------------------------------------------------------------------------–>
+% A , B , C ,D CA/CB = DA/DB
+%<--------------------------------------------------------------------------–>
+\def\tkz at numdha{0}
+\pgfkeys{/tkzharmonic/.cd,
+ ext/.code = \def\tkz at numdha{0},
+ int/.code = \def\tkz at numdha{1},
+ both/.code = \def\tkz at numdha{2},
+ both,
+}%
+
+\def\tkzDivHarmonic{\pgfutil at ifnextchar[{\tkz at DivHarmonic}{\tkz at DivHarmonic[]}}
+\def\tkz at DivHarmonic[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzharmonic}{#1}
+ \ifcase\tkz at numdha%
+ \tkzDefDivHarmonicExt(#2)
+ \or%
+ \tkzDefDivHarmonicInt(#2)
+ \or%
+ \tkzDefDivHarmonicBoth(#2)
+ \fi
+\endgroup
+}
+
+\def\tkzDefDivHarmonicExt(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkz at VecKOrth[](#1,#2) \tkzGetPoint{tkz at px}
+ \tkzDefMidPoint(tkz at px,#2) \tkzGetPoint{tkz at py}
+ \tkzInterLL(tkz at px,#3)(#1,tkz at py) \tkzGetPoint{tkz at pz}
+ \tkzInterLL(#2,tkz at pz)(#1,tkz at px) \tkzGetPoint{tkz at px}
+ \tkzInterLL(tkz at py,tkz at px)(#1,#2) \tkzGetPoint{tkzPointResult}
+\endpgfinterruptboundingbox
+\endgroup
+}
+
+\def\tkzDefDivHarmonicInt(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkz at VecKOrth[1](#1,#2) \tkzGetPoint{tkz at px}
+ \tkzDefMidPoint(tkz at px,#2) \tkzGetPoint{tkz at py}
+ \tkzInterLL(tkz at py,#3)(#1,tkz at px) \tkzGetPoint{tkz at pz}
+ \tkzInterLL(#2,tkz at pz)(#1,tkz at py) \tkzGetPoint{tkz at py}
+ \tkzInterLL(tkz at py,tkz at px)(#1,#2) \tkzGetPoint{tkzPointResult}
+\endpgfinterruptboundingbox
+\endgroup
+}
+
+\def\tkzDefDivHarmonicBoth(#1,#2,#3){%
+\begingroup
+\edef\tkz at k{\fpeval{#3}}
+ \path[coordinate] (barycentric cs:#1=1,#2={\tkz at k}) coordinate (tkzFirstPointResult);
+ \path[coordinate] (barycentric cs:#1=1,#2={-\tkz at k}) coordinate (tkzSecondPointResult);
+\endgroup
+}
+
+\let\tkzDefHarmonic\tkzDivHarmonic
+%<--------------------------------------------------------------------------–>
+% golden ratio
+%<--------------------------------------------------------------------------–>
+\def\tkzDefGoldenRatio(#1,#2){%
+\begingroup
+\tkzDefPointWith[linear,K=\tkzInvPhi](#1,#2)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% triangle center
+%<--------------------------------------------------------------------------–>
+
+\def\tkz at numtc{0}
+\pgfkeys{/tkzDefTriangleCenter/.cd,
+ ortho/.code = \def\tkz at numtc{0},
+ orthic/.code = \def\tkz at numtc{0},
+ centroid/.code = \def\tkz at numtc{1},
+ median/.code = \def\tkz at numtc{1},
+ circum/.code = \def\tkz at numtc{2},
+ in/.code = \def\tkz at numtc{3},
+ ex/.code = \def\tkz at numtc{4},
+ euler/.code = \def\tkz at numtc{5},
+ symmedian/.code = \def\tkz at numtc{6},
+ lemoine/.code = \def\tkz at numtc{6},
+ grebe/.code = \def\tkz at numtc{6},
+ spieker/.code = \def\tkz at numtc{7},
+ gergonne/.code = \def\tkz at numtc{8},
+ nagel/.code = \def\tkz at numtc{9},
+ mittenpunkt/.code = \def\tkz at numtc{10},
+ feuerbach/.code = \def\tkz at numtc{11},
+ circum
+}
+\def\tkzDefTriangleCenter{\pgfutil at ifnextchar[{\tkz at DefTriangleCenter}{\tkz at DefTriangleCenter[]}}
+\def\tkz at DefTriangleCenter[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzDefTriangleCenter}{#1}
+\ifcase\tkz at numtc%
+ \tkzOrthoCenter(#2)
+ \or% 1
+ \tkzCentroid(#2)
+ \or% 2
+ \tkzCircumCenter(#2)
+ \or% 3
+ \tkzInCenter(#2)
+ \or% 4
+ \tkzExCenter(#2)
+ \or% 5
+ \tkzEulerCenter(#2)
+ \or% 6
+ \tkzSymmedianCenter(#2)
+ \or% 7
+ \tkzSpiekerCenter(#2)
+ \or% 8
+ \tkzGergonneCenter(#2)
+ \or%9
+ \tkzNagelCenter(#2)
+ \or%10
+ \tkzMittenpunktCenter(#2)
+ \or%11
+ \tkzFeuerbachCenter(#2)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% OrthoCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzOrthoCenter(#1,#2,#3){%
+\begingroup
+ \pgfinterruptboundingbox
+ \tkzUProjection(#1,#2)(#3)
+ \pgfnodealias{ort at pta}{tkzPointResult}
+ \tkzUProjection(#1,#3)(#2)
+ \pgfnodealias{ort at ptb}{tkzPointResult}
+ \tkzInterLL(#2,ort at ptb)(#3,ort at pta)
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefOrthoCenter\tkzOrthoCenter
+%<--------------------------------------------------------------------------–>
+% GravityCenter modif 3.03
+%<--------------------------------------------------------------------------–>
+\def\tkzCentroid(#1,#2,#3){%
+\begingroup
+ \pgf at process{\pgfpointanchor{#1}{center}}%
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \pgf at process{\pgfpointanchor{#2}{center}}%
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \pgf at process{\pgfpointanchor{#3}{center}}%
+ \tkz at cx\pgf at x%
+ \tkz at cy\pgf at y%
+ \edef\tkzcax{\strip at pt\tkz at ax}%
+ \edef\tkzcay{\strip at pt\tkz at ay}%
+ \edef\tkzcbx{\strip at pt\tkz at bx}%
+ \edef\tkzcby{\strip at pt\tkz at by}%
+ \edef\tkzccx{\strip at pt\tkz at cx}%
+ \edef\tkzccy{\strip at pt\tkz at cy}%
+ \edef\tkztpmx{\tkz at Dec{(\tkzcax + \tkzcbx + \tkzccx)/3}}
+ \edef\tkztpmy{\tkz at Dec{(\tkzcay + \tkzcby + \tkzccy)/3}}
+ \pgfinterruptboundingbox
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzBaryCenter\tkzCentroid
+
+%<--------------------------------------------------------------------------–>
+% CircumCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzCircumCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzDefMediatorLine(#1,#2)
+ \pgf at process{\pgfpointanchor{tkzFirstPointResult}{center}}%
+ \tkz at ax\pgf at x%
+ \tkz at ay\pgf at y%
+ \pgf at process{\pgfpointanchor{tkzSecondPointResult}{center}}%
+ \tkz at bx\pgf at x%
+ \tkz at by\pgf at y%
+ \tkzDefMediatorLine(#1,#3)
+ \pgf at process{\pgfpointanchor{tkzFirstPointResult}{center}}%
+ \tkz at cx\pgf at x%
+ \tkz at cy\pgf at y%
+ \pgf at process{\pgfpointanchor{tkzSecondPointResult}{center}}%
+ \tkz at dx\pgf at x%
+ \tkz at dy\pgf at y%
+\tkzInterLLxy(\tkz at ax,\tkz at ay,\tkz at bx,\tkz at by)(\tkz at cx,\tkz at cy,\tkz at dx,\tkz at dy)%
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefCircumCenter\tkzCircumCenter
+%<--------------------------------------------------------------------------–>
+% InCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzInCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+\tkzDefBisectorLine(#3,#1,#2)
+\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
+\tkz at bx\pgf at x%
+\tkz at by\pgf at y%
+\tkzDefBisectorLine(#3,#2,#1)
+\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
+\tkz at dx\pgf at x%
+\tkz at dy\pgf at y%
+\pgf at process{\pgfpointanchor{#1}{center}}%
+\tkz at ax\pgf at x%
+\tkz at ay\pgf at y%
+\pgf at process{\pgfpointanchor{#2}{center}}%
+\tkz at cx\pgf at x%
+\tkz at cy\pgf at y%
+\tkzInterLLxy(\tkz at ax,\tkz at ay,\tkz at bx,\tkz at by)(\tkz at cx,\tkz at cy,\tkz at dx,\tkz at dy)%
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefInCenter\tkzInCenter
+%<--------------------------------------------------------------------------–>
+% ExCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzExCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+\tkzDefBisectorOutLine(#2,#1,#3)
+\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
+\tkz at bx\pgf at x%
+\tkz at by\pgf at y%
+\tkzDefBisectorOutLine(#2,#3,#1)
+\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
+\tkz at dx\pgf at x%
+\tkz at dy\pgf at y%
+\pgf at process{\pgfpointanchor{#1}{center}}%
+\tkz at ax\pgf at x%
+\tkz at ay\pgf at y%
+\pgf at process{\pgfpointanchor{#3}{center}}%
+\tkz at cx\pgf at x%
+\tkz at cy\pgf at y%
+\tkzInterLLxy(\tkz at ax,\tkz at ay,\tkz at bx,\tkz at by)(\tkz at cx,\tkz at cy,\tkz at dx,\tkz at dy)%
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefExCenter\tkzExCenter
+%<--------------------------------------------------------------------------–>
+% EulerCenter neuf points
+%<--------------------------------------------------------------------------–>
+\def\tkzEulerCenter(#1,#2,#3){%
+% mileu de orthocentre et centre cercle circonscrit
+% passe par les midpoints par les pieds des hauteurs
+\begingroup
+\pgfinterruptboundingbox
+\tkzDefMidPoint(#1,#2)
+\pgfnodealias{eu at mic}{tkzPointResult}
+\tkzDefMidPoint(#1,#3)
+\pgfnodealias{eu at mib}{tkzPointResult}
+\tkzDefMidPoint(#2,#3)
+\pgfnodealias{eu at mia}{tkzPointResult}
+\tkzCircumCenter(eu at mia,eu at mib,eu at mic)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzNinePointCenter\tkzEulerCenter
+\let\tkzDefEulerCenter\tkzEulerCenter
+%<--------------------------------------------------------------------------–>
+%Symmedian center Lemoine point Grebe point K
+%<--------------------------------------------------------------------------–>
+\def\tkzSymmedianCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+\tkzDefMidPoint(#2,#3)
+\pgfnodealias{eu at mic}{tkzPointResult}
+\tkzDefMidPoint(#1,#3)
+\pgfnodealias{eu at mib}{tkzPointResult}
+\tkzUProjection(#2,#3)(#1)
+\pgfnodealias{ort at pta}{tkzPointResult}
+\tkzDefMidPoint(#1,ort at pta)
+\pgfnodealias{eu at mid}{tkzPointResult}
+\tkzUProjection(#1,#3)(#2)
+\pgfnodealias{ort at ptb}{tkzPointResult}
+\tkzDefMidPoint(#2,ort at ptb)
+\pgfnodealias{eu at mie}{tkzPointResult}
+\tkzInterLL(eu at mic,eu at mid)(eu at mib,eu at mie)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzLemoinePoint\tkzSymmedianCenter
+\let\tkzGrebePoint\tkzSymmedianCenter
+\let\tkzDefLemoinePoint\tkzLemoinePoint
+%<--------------------------------------------------------------------------–>
+% Spieker center
+%<--------------------------------------------------------------------------–>
+\def\tkzSpiekerCenter(#1,#2,#3){%
+\begingroup
+% we need to get the midpoints
+\pgfcoordinate{tkz at m3}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}}}%
+\pgfcoordinate{tkz at m2}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#3}{center}}}}%
+\pgfcoordinate{tkz at m1}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}}}%
+\tkzInCenter(tkz at m1,tkz at m2,tkz at m3)
+\endgroup
+}
+\let\tkzDefSpiekerCenter\tkzSpiekerCenter
+%<--------------------------------------------------------------------------–>
+% Gergonne center Ge
+%<--------------------------------------------------------------------------–>
+\def\tkzGergonneCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+\tkzInCenter(#1,#2,#3)
+\pgfnodealias{tkz at ptin}{tkzPointResult}
+\tkzUProjection(#2,#3)(tkz at ptin)
+\pgfnodealias{tkz at oca}{tkzPointResult}
+\tkzUProjection(#1,#3)(tkz at ptin)
+\pgfnodealias{tkz at ocb}{tkzPointResult}
+\tkzInterLL(#1,tkz at oca)(#2,tkz at ocb)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefGergonneCenter\tkzGergonneCenter
+%<--------------------------------------------------------------------------–>
+% Nagel center Na
+%<--------------------------------------------------------------------------–>
+% INa = 3 IG. Nagel point % correction 02/02/20
+\def\tkzNagelCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+\tkzDefExcentralTriangle(#1,#2,#3){tkz at a,tkz at b,tkz at c}
+\tkzUProjection(#2,#3)(tkz at a)
+\pgfnodealias{tkz at tgta}{tkzPointResult}
+\tkzUProjection(#1,#2)(tkz at c)
+\pgfnodealias{tkz at tgtc}{tkzPointResult}
+\tkzInterLL(#1,tkz at tgta)(#3,tkz at tgtc)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefNagelCenter\tkzNagelCenter
+%<--------------------------------------------------------------------------–>
+% Mittenpunkt
+%<--------------------------------------------------------------------------–>
+\def\tkzMittenpunktCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+\tkzExCenter(#2,#3,#1)
+\pgfnodealias{tkz at a}{tkzPointResult}
+\tkzExCenter(#3,#1,#2)
+\pgfnodealias{tkz at b}{tkzPointResult}
+\pgfcoordinate{tkz at ma}{%
+\pgfpointscale{0.5}{%
+\pgfpointadd{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}}%
+\pgfcoordinate{tkz at mb}{%
+\pgfpointscale{0.5}{%
+\pgfpointadd{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}}%
+\tkzInterLL(tkz at a,tkz at ma)(tkz at b,tkz at mb)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefMittenpunktCenter\tkzMittenpunktCenter
+\let\tkzDefMiddlespoint\tkzMittenpunktCenter
+%<--------------------------------------------------------------------------–>
+% Feuerbach point
+%<--------------------------------------------------------------------------–>
+\def\tkzFeuerbachCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+\tkzEulerCenter(#1,#2,#3)
+\pgfnodealias{tkz at euler}{tkzPointResult}
+\tkzInCenter(#1,#2,#3)
+\pgfnodealias{tkz at in}{tkzPointResult}
+\tkzUProjection(#2,#3)(tkzPointResult)
+\tkzInterLC(tkz at in,tkz at euler)(tkz at in,tkzPointResult)\tkzGetFirstPoint{tkz at fe}
+\tkzRenamePoint(tkz at fe){tkzPointResult}
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefFeuerbachCenter\tkzFeuerbachCenter
+%<--------------------------------------------------------------------------–>
+% Orthogonal center
+%<--------------------------------------------------------------------------–>
+\def\tkzOrthogonalCenter(#1,#2){%
+\begingroup
+\pgfinterruptboundingbox
+\tkz at VecK[\tkz at koeff/(1+\tkz at koeff)](#1,#2)
+\pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+\tkz at VecK[\tkz at koeff/(\tkz at koeff-1)](#1,#2)
+\pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult)
+\endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% End Triangle center
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% Projection center of excircles
+%<--------------------------------------------------------------------------–>
+\def\tkzDefProjExcenter{\pgfutil at ifnextchar[{%
+ \tkz at DefProjExcenter}{%
+ \tkz at DefProjExcenter[]}
+ }
+\def\tkz at DefProjExcenter[#1](#2,#3,#4)(#5)#6{
+\begingroup
+ \SetUpPTTR{#1}
+ \foreach \name [count=\i] in {#5} {%
+ \global\expandafter\edef\csname tkz at pt\i\endcsname{\name}
+ }
+ \foreach \name [count=\i] in {#6} {%
+ \global\expandafter\edef\csname tkz at ppt\i\endcsname{\name}
+ }
+\tkzDefPointBy[projection=onto #3--#4 ](\tkz at pttr@name \csname tkz at pt1\endcsname)
+\pgfnodealias{\csname tkz at ppt1\endcsname\csname tkz at pt1\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#4 ](\tkz at pttr@name \csname tkz at pt2\endcsname)
+\pgfnodealias{\csname tkz at ppt1\endcsname\csname tkz at pt2\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#4 ](\tkz at pttr@name \csname tkz at pt3\endcsname)
+\pgfnodealias{\csname tkz at ppt1\endcsname\csname tkz at pt3\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #2--#4 ](\tkz at pttr@name \csname tkz at pt1\endcsname)
+\pgfnodealias{\csname tkz at ppt2\endcsname\csname tkz at pt1\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #2--#4 ](\tkz at pttr@name \csname tkz at pt2\endcsname)
+\pgfnodealias{\csname tkz at ppt2\endcsname\csname tkz at pt2\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #2--#4 ](\tkz at pttr@name \csname tkz at pt3\endcsname)
+\pgfnodealias{\csname tkz at ppt2\endcsname\csname tkz at pt3\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#2 ](\tkz at pttr@name \csname tkz at pt1\endcsname)
+\pgfnodealias{\csname tkz at ppt3\endcsname\csname tkz at pt1\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#2 ](\tkz at pttr@name \csname tkz at pt2\endcsname)
+\pgfnodealias{\csname tkz at ppt3\endcsname\csname tkz at pt2\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#2 ](\tkz at pttr@name \csname tkz at pt3\endcsname)
+\pgfnodealias{\csname tkz at ppt3\endcsname\csname tkz at pt3\endcsname}{tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Point on circle
+%<--------------------------------------------------------------------------–>
+\def\tkz at numptcirc{0}
+\pgfkeys{/tkzptcircle/.cd,
+through/.code args = {center #1 angle #2 point #3} { \def\tkz at center{#1}%
+ \def\tkz at angle{#2}%
+ \def\tkz at through{#3}%
+ \def\tkz at numptcirc{0}},
+R/.code args = {center #1 angle #2 radius #3} { \def\tkz at center{#1}%
+ \def\tkz at angle{#2}%
+ \def\tkz at radius{#3}%
+ \def\tkz at numptcirc{1}},
+through in rad/.code args = {center #1 angle #2 point #3} { \def\tkz at center{#1}%
+ \def\tkz at angle{#2}%
+ \def\tkz at through{#3}%
+ \def\tkz at numptcirc{2}},
+R in rad/.code args = {center #1 angle #2 radius #3} { \def\tkz at center{#1}%
+ \def\tkz at angle{#2}%
+ \def\tkz at radius{#3}%
+ \def\tkz at numptcirc{3}}
+}
+
+\def\tkzDefPointOnCircle{\pgfutil at ifnextchar[{\tkz at DefPointOnCircle}{%
+ \tkz at DefPointOnCircle[]}}
+\def\tkz at DefPointOnCircle[#1]{%
+\begingroup
+\pgfqkeys{/tkzptcircle}{#1}
+ \ifcase\tkz at numptcirc%
+ \tkz@@CalcLengthcm(\tkz at center,\tkz at through){tkz at radius}
+ \or% 1
+ \relax%
+ \or% 2
+ \pgfmathparse{\tkz at angle\space r}
+ \let\tkz at angle\pgfmathresult
+ \tkz@@CalcLengthcm(\tkz at center,\tkz at through){tkz at radius}
+ \or% 3
+ \pgfmathparse{\tkz at angle\space r}
+ \let\tkz at angle\pgfmathresult
+\fi
+\path (\tkz at center) --++(\tkz at angle:\tkz at radius) coordinate(tkzPointResult);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Point on line
+%<--------------------------------------------------------------------------–>
+\def\tkzDefPointOnLine{\pgfutil at ifnextchar[{\tkz at DefPointOnLine}{\tkz at DefPointOnLine[]}}
+\def\tkz at DefPointOnLine[#1](#2,#3){%
+\begingroup
+\path (#2) to [#1] coordinate (tkzPointResult) (#3);
+\endgroup
+}
+
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-spc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-with.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-with.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-with.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,269 @@
+% tkz-obj-lua-points-with.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-lua-points-with.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Vectors
+%<--------------------------------------------------------------------------–>
+% Objet : outils mathématiques pour la géométrie euclideienne avec pgf/tikz
+% utilisable de préférence avec un repère orthonormé et le cm comme unité
+% utile pour la compatibilité avec pgf 2
+%<--------------------------------------------------------------------------–>
+% Duplicate Length à revoir pas de pt pas de global
+% ||v(CN)||= ||v(AB)|| et v(CN) colineaire à v(CD)
+% A-->#1 B-->#2 C-->#3 D-->#4 N-->#5 ?????
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% Outils pour les vecteurs
+%<--------------------------------------------------------------------------–>
+% ce sont des outils élémentaires qui à partir de deux points en définissent
+% un troisième
+% #1 si c'est une option alors c'est un nombre réel
+% #2 et #3 sont deux points
+% #4 est le nom du point qui résulte de la transformation
+% exemple : \tkzVecKNorm (A,B){C} définit un point C tel que AC = 1 et C est % % un point de la droite (AC). #1 peut être négatif
+
+\def\tkzDuplicateSegment(#1,#2)(#3,#4){%
+\begingroup
+ \tkz@@CalcLength(#1,#2){tkz at firstlen}%
+ \tkz@@CalcLength(#3,#4){tkz at secondlen}%
+ \edef\tkz at ratio{\tkz at Dec{\tkz at firstlen/\tkz at secondlen}}
+ \tkz at VecKCoLinear[\tkz at ratio](#3,#4,#3)%
+\endgroup
+}
+\let\tkzDuplicateLength\tkzDuplicateSegment
+%<--------------------------------------------------------------------------–>
+% Coordonnées d'un vecteur (couple de points)
+% Deux points A et B donc un vecteur on récupère les coordonnées de v(AB)
+% en cm
+% tkzGetVecCoord en cm ou en pt ???
+%<--------------------------------------------------------------------------–>
+%result in #3x et #3y #1 et #2 sont les points
+% passage en cm avec fp ?
+% 28.45274 =1 cm
+\def\tkzGetVectxy(#1,#2)#3{%
+\begingroup
+\pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+\pgfmathparse{\pgf at sys@tonumber{\pgf at x}/1cm}%
+\let\tkzresultx\pgfmathresult
+\pgfmathparse{\pgf at sys@tonumber{\pgf at y}/1cm}%
+\let\tkzresulty\pgfmathresult
+\global\expandafter\edef\csname #3x\endcsname{\tkzresultx}%
+\global\expandafter\edef\csname #3y\endcsname{\tkzresulty}%
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% options #1 two points #2,#3 result in #4
+%
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% tkzDefPointWith
+%<--------------------------------------------------------------------------–>
+\def\tkz at numv{0}
+\pgfkeys{/@pointwith/.cd,
+ colinear/.code args = {at #1}{\def\tkz at numv{0}\def\tkz at frompoint{#1}},
+ orthogonal/.code = {\def\tkz at numv{1}},
+ linear/.code = {\def\tkz at numv{2}},
+ orthogonal normed/.code = {\def\tkz at numv{3}},
+ linear normed/.code = {\def\tkz at numv{4}},
+ colinear normed/.code args = {at #1}{\def\tkz at numv{5}\def\tkz at frompoint{#1}},
+ K/.code = {\edef\tkz at coeff{\fpeval{#1}}},
+ K = 1,
+ normed/.is if = tkz at line@normed,
+ normed/.default = true,
+ normed = false,
+ orthogonal
+}
+\def\tkzDefPointWith{\pgfutil at ifnextchar[{\tkz at DefPointWith}{\tkz at DefPointWith[]}}
+
+\def\tkz at DefPointWith[#1](#2,#3){%
+\begingroup
+\pgfkeys{/@pointwith/.cd,K=1}
+\pgfqkeys{/@pointwith}{#1}
+\ifcase\tkz at numv%
+ % first case 0
+ \tkz at DefVectorColinearat[\tkz at coeff](#2,#3)
+ \or% 1
+ \tkz at VecKOrth[\tkz at coeff](#2,#3)
+ \or% 2
+ \tkz at VecK[\tkz at coeff](#2,#3)
+ \or% 3
+ \tkz at VecKOrthNorm[\tkz at coeff](#2,#3)
+ \or% 4
+ \tkz at VecKNorm[\tkz at coeff](#2,#3)
+ \or% 5
+ \tkz at VecKColinearNorm[\tkz at coeff](#2,#3)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% tkzDefVectorfrom
+%<--------------------------------------------------------------------------–>
+% tkz at numv 0
+\def\tkz at DefVectorColinearat[#1](#2,#3){%
+\iftkz at line@normed
+ \tkz at VecKColinearNorm[#1](#2,#3)
+\else
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}%
+ \pgf at xa=\pgf at x\relax%
+ \pgf at ya=\pgf at y\relax%
+ \pgfinterruptboundingbox
+ \path (\tkz at frompoint)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+\fi
+}
+%<--------------------------------------------------------------------------–>
+% tkzVector K Orth coeff dans #1
+% v(AN) perp v(AB) (v(AB) , v(AN) ) sens direct cercle trigo
+% ||v(AN)||=||v(AB)||
+%<--------------------------------------------------------------------------–>
+% tkz at numv 1
+\def\tkzVecKOrth{\pgfutil at ifnextchar[{\tkz at VecKOrth}{\tkz at VecKOrth[1]}}
+\def\tkz at VecKOrth[#1](#2,#3){%
+\iftkz at line@normed
+ \tkz at VecKOrthNorm[#1](#2,#3)
+\else
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}%
+ \pgf at xa=-\pgf at y%
+ \pgf at ya=\pgf at x%
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+\fi
+}%
+
+%<--------------------------------------------------------------------------–>
+% v(AN)=#1 x v(AB)
+% #1 le coeff; #2--> A #3--> B #4-->N tq #4-#2 = #1*(#3-#2)
+%<--------------------------------------------------------------------------–>
+% tkz at numv 2
+\def\tkzVecK{\pgfutil at ifnextchar[{\tkz at VecK}{\tkz at VecK[1]}}
+\def\tkz at VecK[#1](#2,#3){%
+\iftkz at line@normed
+ \tkz at VecKNorm[#1](#2,#3)
+\else
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \pgf at xa=\pgf at x\relax%
+ \pgf at ya=\pgf at y\relax%
+ \pgfmathparse{#1}
+ \let\tkz at coeff\pgfmathresult
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+\fi
+}%
+%<--------------------------------------------------------------------------–>
+% tkzVecKOrthNorm coeff dans #1
+% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo
+% ||v(AN||=1 si #1 est vide ou =1 sinon ||v(AN||=K
+%<--------------------------------------------------------------------------–>
+% tkz at numv 3
+\def\tkzVecKOrthNorm{\pgfutil at ifnextchar[{\tkz at VecKOrthNorm}%
+ {\tkz at VecKOrthNorm[1]}}
+\def\tkz at VecKOrthNorm[#1](#2,#3){%
+\begingroup
+ \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}}
+ \pgf at xa=-\pgf at y\relax%
+ \pgf at ya=\pgf at x\relax%
+ \pgfmathparse{#1}
+ \let\tkz at tmp\pgfmathresult
+ \edef\tkz at x{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at xa}}
+ \edef\tkz at y{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at ya}}
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz at x pt,\tkz at y pt) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+% VectorNormalised ou K*VectorNormalised
+% A-->#2 B-->#3 N-->#4 v(AB) devient v(AN) tq ||v(AN)||=1 si #1=1
+% sinon ||v(AN)||=#1
+%<--------------------------------------------------------------------------–>
+% tkz at numv 4
+\def\tkzVecKNorm{\pgfutil at ifnextchar[{\tkz at VecKNorm}{\tkz at VecKNorm[1]}}
+\def\tkz at VecKNorm[#1](#2,#3){%
+\begingroup
+ \tkzpointnormalised{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}
+ {\pgfpointanchor{#3}{center}}}
+ \pgf at xa=\pgf at x\relax%
+ \pgf at ya=\pgf at y\relax%
+ \pgfmathparse{#1}
+ \let\tkz at tmp\pgfmathresult
+ \edef\tkz at x{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at xa}}
+ \edef\tkz at y{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at ya}}
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz at x pt,\tkz at y pt) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+% \tkz at VecKColinearNorm
+%<--------------------------------------------------------------------------–>
+%% tkz at numv 5
+\def\tkz at VecKColinearNorm[#1](#2,#3){%
+\begingroup
+ \tkzpointnormalised{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}
+ {\pgfpointanchor{#3}{center}}}
+ \pgf at xa=\pgf at x\relax%
+ \pgf at ya=\pgf at y\relax%
+ \edef\tkz at x{\tkz at Dec{28.45274*(\tkz at coeff)*\strip at pt\pgf at xa}}
+ \edef\tkz at y{\tkz at Dec{28.45274*(\tkz at coeff)*\strip at pt\pgf at ya}}
+ \pgfinterruptboundingbox
+ \path (\tkz at frompoint)--++(\tkz at x pt,\tkz at y pt) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+% VecKCoLinear CN = K x AB #1 pt #2 pt #3 pt #4 nb #5 pt result
+% il faut modifier cette macro : on supprime #3 pour la colinéarité
+% Il suffit d'utiliser Replicate ou Duplicate coeff dans #1
+% v(CD)=#1 x v(AB) #1 le coeff; #2-->A #3-->B #4-->C
+%<--------------------------------------------------------------------------–>
+\def\tkz at VecKCoLinear[#1](#2,#3,#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \pgf at xa=\pgf at x\relax%
+ \pgf at ya=\pgf at y\relax%
+ \edef\tkz at coeff{\fpeval{#1}}
+ \pgfinterruptboundingbox
+ \path (#4)--+(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+\def\tkz at VecCoLinear(#1,#2,#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \pgf at xa=\pgf at x\relax%
+ \pgf at ya=\pgf at y\relax%
+ \pgfinterruptboundingbox
+ \path (#3)--+(\pgf at xa,\pgf at ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points-with.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,166 @@
+ % tkz-obj-lua-points.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-lua-points.tex}
+\makeatletter
+%<--------------------------------------------------------------------------->
+% init def point
+%<--------------------------------------------------------------------------->
+% tkzDefPoint
+%<--------------------------------------------------------------------------->
+% macros complémentaires pour def point
+%<--------------------------------------------------------------------------->
+\def\tkz at parsecoordinate#1{%
+\tkz at getseparator#1,\@nil
+\iftkz at polar
+ \tkz at getfrompolar#1\@nil
+\else
+ \tkz at getfromcart#1\@nil
+\fi
+}
+\def\tkz at getseparator#1,#2\@nil{%
+\ifx\tkzempty#2\tkzempty%
+ \tkz at polartrue
+\else
+ \tkz at polarfalse
+\fi
+}
+\def\tkz at getfrompolar#1:#2\@nil{%
+\edef\tkz at a{\fpeval{#1}}
+\edef\tkz at r{\fpeval{#2}}
+\xdef\tkz at polarrad{\tkz at r}
+\xdef\tkz at polarangle{\tkz at a}
+}
+\def\tkz at getfromcart#1,#2\@nil{%
+\edef\tkz at x{\fpeval{#1}}
+\edef\tkz at y{\fpeval{#2}}
+\xdef\tkz at absc{\tkz at x}
+\xdef\tkz at ord{\tkz at y}
+}
+%<--------------------------------------------------------------------------->
+% options pour point definition
+%<--------------------------------------------------------------------------->
+\pgfkeys{/tkzPt/.cd,
+ polar/.is if = tkz at pt@polar,
+ polar/.default = true,
+ polar = false
+}
+%<--------------------------------------------------------------------------->
+% tkz at ptStar
+%<--------------------------------------------------------------------------->
+\def\tkz at ptStar[#1](#2,#3)#{%
+\pgfkeys{/tkzPt/.cd, polar = false}
+\pgfqkeys{/tkzPt}{#1}
+\iftkz at pt@polar%
+ \edef\tkz at x{\fpeval{#3*cosd(#2)}}
+ \edef\tkz at y{\fpeval{#3*sind(#2)}}
+\else
+ \edef\tkz at x{\fpeval{#2}}
+ \edef\tkz at y{\fpeval{#3}}
+\fi
+\edef\tkzpt at xa{\tkz at Dec{(\tkz at x-(\tkz at init@xorigine))/\tkz at init@xstep}}
+\edef\tkzpt at ya{\tkz at Dec{(\tkz at y-(\tkz at init@yorigine))/\tkz at init@ystep}}
+\tkz at 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 at ifnextchar[{\tkz at DefPoint}{\tkz at DefPoint[]}}
+
+\def\tkz at DefPoint[#1](#2)#{%
+\tkz at parsecoordinate{#2}
+\iftkz at polar
+ \tkz at ptStar[polar](\tkz at polarangle,\tkz at polarrad){tkz at coord@temp}
+\else
+ \tkz at ptStar[](#2){tkz at coord@temp}
+\fi
+\tkz at DefPointEnd[#1]
+}%
+\def\tkz at DefPointEnd[#1]#2{\coordinate[#1] (#2) at (tkz at coord@temp);}
+%<--------------------------------------------------------------------------->
+% tkzDefPoints
+%<--------------------------------------------------------------------------->
+\def\tkzDefPoints{\pgfutil at ifnextchar[{\tkz at DefPoints}{\tkz at DefPoints[]}}
+\def\tkz at DefPoints[#1]#2{%
+ \begingroup
+ \def\tkz at parenthesis@for at err{(}%
+ \def\tkz at maybe@parenthesis{#2}%
+ \ifx\tkz at maybe@parenthesis\tkz at parenthesis@for at err
+ \PackageError{tkz-base}{Syntax error use {} instead of ()}{You need to use {} instead of ()}%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\tkz at absorb@bad at arg}%
+ {\foreach \ptx/\pty/\name in {#2}{\tkzDefPoint[#1](\ptx,\pty){\name}}%
+ \endgroup}%
+}
+\def\tkz at absorb@bad at arg#1){\endgroup}
+%<--------------------------------------------------------------------------->
+\def\tkz at node#1{ \pgfinterruptboundingbox
+\path[coordinate](\tkzpt at xa,\tkzpt at ya) coordinate(#1);
+ \endpgfinterruptboundingbox}
+%<--------------------------------------------------------------------------->
+\def\tkzRenamePoint(#1)#2{\coordinate (#2) at (#1);}
+\def\tkz at RenamePointEnd[#1]#2{\coordinate[#1] (#2) at (\tkz at ax,\tkz at 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\tkzGetThirdPoint#1{\coordinate (#1) at (tkzThirdPointResult);}
+\def\tkzDefShiftPointCoord[#1](#2)#3{%
+ \begin{scope}[shift={(#1)}]
+ \coordinate (#3) at (#2);
+ \end{scope}
+ }%
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------->
+% tkzDefShiftPoint
+%<--------------------------------------------------------------------------->
+\def\tkzDefShiftPoint[#1](#2)#3{%
+ \tkz@@extractxy{#1}
+ \tkz at ax\pgf at x %
+ \tkz at ay\pgf at y %
+\begin{scope}[shift={(\tkz at ax,\tkz at ay)}]
+ \coordinate (#3) at (#2);
+\end{scope}
+}
+%<--------------------------------------------------------------------------->
+% 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 ?? todo
+%<--------------------------------------------------------------------------->
+\def\tkzGetPointCoord(#1)#2{%
+\begingroup
+ \pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
+ \pgfmathparse{\pgf at sys@tonumber{\pgf at x}/28.45274}
+ \global\let\tkzresultx\pgfmathresult
+ \global\expandafter\edef\csname #2x\endcsname{\tkzresultx}%
+ \pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
+ \pgfmathparse{\pgf at sys@tonumber{\pgf at y}/28.45274}
+ \global\let\tkzresulty\pgfmathresult
+ \global\expandafter\edef\csname #2y\endcsname{\tkzresulty}
+\endgroup
+}
+\def\tkz@@extractxy#1{%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
+}
+\let\tkzGetPointxy\tkzGetPointCoord
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lua-points.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-points-by.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-points-by.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Transformations Géométriques
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-points-rnd.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-points-rnd.tex}
%<--------------------------------------------------------------------------–>
\makeatletter
%<-------------------------------------------------------------------------–>
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-el-points.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-el-points.tex}
\makeatletter
%add ExCenter
%<--------------------------------------------------------------------------–>
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-points-with.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-points-with.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Vectors
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-points.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-points.tex}
\makeatletter
%<--------------------------------------------------------------------------->
% init def point
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-polygons.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-polygons.tex}
% bug in regular polygon side 2020/03/09
\makeatletter
%<--------------------------------------------------------------------------–>
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-triangles.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-triangles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Triangle Equilateral
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles-by.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles-by.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles-by.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,157 +0,0 @@
-% tkz-obj-eu-circles.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{6.00}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 6.00 tkz-obj-eu-circles.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% tkzCircle center and one point
-%<--------------------------------------------------------------------------–>
-% attention radius circle is defined by center and a point on the circle
-% R defined by center and the value of the radius
-% no need to define a circle with R tikz uses this method.
-% through instead of radius
-\def\tkz at numcby{0}
-\pgfkeys{/tkzDefCircleBy/.cd,
- translation/.code args = {from #1 to #2} { \def\tkz at numcby{0}
- \def\tkzfrom{#1}
- \def\tkzto{#2}},
- homothety/.code args = {center #1 ratio #2}{ \def\tkz at numcby{1}
- \def\tkzcenter{#1}
- \def\tkzratio{#2}},
- reflection/.code args = {over #1--#2}{ \def\tkz at numcby{2}
- \def\tkzdeb{#1}
- \def\tkzfin{#2}},
- symmetry/.code args = {center #1}{ \def\tkz at numcby{3}
- \def\tkzcenter{#1}},
- rotation/.code args = {center #1 angle #2}{ \def\tkz at numcby{4}
- \def\tkzcenter{#1}
- \def\tkzangle{#2}},
- inversion/.code args={center #1 through #2}{ \def\tkz at numcby{5}
- \def\tkzcenter{#1}
- \def\tkzpoint{#2}},
- inversion negative/.code args = {center #1 through #2}{\def\tkz at numcby{6}
- \def\tkzcenter{#1}
- \def\tkzpoint{#2}}
- }
-\def\tkzDefCircleBy{\pgfutil at ifnextchar[{\tkz at DefCircleBy}{\tkz at DefCircleBy[]}}
-\def\tkz at DefCircleBy[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzDefCircleBy}{#1}
-\ifcase\tkz at numcby%
- \tkzDefCircleTranslation(#2)%
- \or% 1
- \tkzDefCircleHomothety(#2)
- \or% 2
- \tkzDefCircleReflection(#2)
- \or% 3
- \tkzDefCircleSymmetry(#2)
- \or% 4
- \tkzDefCircleRotation(#2)
- \or% 5
- \tkzDefInversionCircle(#2,\tkzcenter,\tkzpoint)
- \or% 6
- \tkzDefInversionNegativeCircle(#2,\tkzcenter,\tkzpoint)
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleTranslation(#1,#2){%
-\begingroup
- \tkzUTranslation(\tkzfrom,\tkzto)(#1)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzUTranslation(\tkzfrom,\tkzto)(#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleHomothety(#1,#2){%
-\begingroup
- \tkzUHomo(\tkzcenter,\tkzratio)(#1)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzUHomo(\tkzcenter,\tkzratio)(#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleReflection(#1,#2){%
-\begingroup
- \tkzUSymOrth(\tkzdeb,\tkzfin)(#1)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzUSymOrth(\tkzdeb,\tkzfin)(#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleSymmetry(#1,#2){%
-\begingroup
- \tkzUCSym(\tkzcenter)(#1)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzUCSym(\tkzcenter)(#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleRotation(#1,#2){%
-\begingroup
- \tkzURotateAngle(\tkzcenter,\tkzangle)(#1)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzURotateAngle(\tkzcenter,\tkzangle)(#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% #3,#4 cercle d'inversion centre #3. through #4
-% Si le cercle passe par le pôle l'image est une droite
-\def\tkzDefInversionCircle(#1,#2,#3,#4){%
-\begingroup
- \tkz@@CalcLengthcm(#1,#2){tkz at lna}%
- \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
- \edef\tkzMathResult{\tkz at Dec{\tkz at Round{\tkz at Abs{\tkz at lnb - \tkz at lna}}{6}}}
- \ifdim\tkzMathResult pt < 0.00001 pt\relax%
- \tkzURotateAngle(#1,-90)(#2)
- \pgfnodealias{tkz at a}{tkzPointResult}
- \tkzUInversePoint(#3,#4)(tkz at a)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzUInversePoint(#3,#4)(#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
- \else
- \tkzURotateAngle(#1,90)(#2)
- \pgfnodealias{tkz at a}{tkzPointResult}
- \tkzURotateAngle(#1,-90)(#2)
- \pgfnodealias{tkz at b}{tkzPointResult}
- \tkzUInversePoint(#3,#4)(tkz at a)
- \pgfnodealias{tkz at p1}{tkzPointResult}
- \tkzUInversePoint(#3,#4)(tkz at b)
- \pgfnodealias{tkz at p2}{tkzPointResult}
- \tkzUInversePoint(#3,#4)(#2)
- \pgfnodealias{tkz at p3}{tkzPointResult}
- \tkzDefCircle[circum](tkz at p3,tkz at p1,tkz at p2)
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefInversionNegativeCircle(#1,#2,#3,#4){%
-\begingroup
- \tkzDefInversionCircle(#1,#2,#3,#4)
- \tkzUCSym(\tkzcenter)(tkzFirstPointResult)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzUCSym(\tkzcenter)(tkzSecondPointResult)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% End Def Circle
-%<--------------------------------------------------------------------------–>
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,223 +0,0 @@
-% tkz-obj-lua-circles.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-lua-circles.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% tkzCircle center and one point
-%<--------------------------------------------------------------------------–>
-% attention radius circle is defined by center and a point on the circle
-% R defined by center and the value of the radius
-% no need to define a circle with R tikz uses this method.
-% through instead of radius
-\def\tkz at numc{0}
-\pgfkeys{/tkzcircle/.cd,
- R/.code = \def\tkz at numc{0},
- diameter/.code = \def\tkz at numc{1},
- circum/.code = \def\tkz at numc{2},
- in/.code = \def\tkz at numc{3},
- ex/.code = \def\tkz at numc{4},
- euler/.code = \def\tkz at numc{5},
- nine/.code = \def\tkz at numc{5},
- apollonius/.code = \def\tkz at numc{6},
- spieker/.code = \def\tkz at numc{7},
- orthogonal from/.code args = {#1}{\gdef\tkz at numc{8}
- \def\tkz at ptfrom{#1}},
- orthogonal through/.code args = {#1 and #2}{\gdef\tkz at numc{9}
- \def\tkz at ptone{#1}
- \def\tkz at pttwo{#2}},
- K/.code = \def\tkz at koeff{#1},
- K = 1,
- circum
- }
-\def\tkzDefCircle{\pgfutil at ifnextchar[{\tkz at DefCircle}{\tkz at DefCircle[]}}
-\def\tkz at DefCircle[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzcircle}{#1}
-\ifcase\tkz at numc%
- \tkzDefCircleR(#2)
- \or% 1
- \tkzDefCircleD(#2)
- \or% 2
- \tkzDefCircumCircle(#2)
- \or% 3
- \tkzDefInCircle(#2)
- \or% 4
- \tkzDefExCircle(#2)
- \or% 5
- \tkzDefEulerCircle(#2)
- \or% 6
- \tkzDefApolloniusCircle(#2)
- \or% 7
- \tkzDefSpiekerCircle(#2)
- \or% 8
- \tkzDefOrthogonalCircle(#2,\tkz at ptfrom)
- \or% 9
- \tkzDefOrthoThroughCircle(#2,\tkz at ptone,\tkz at pttwo)
- \fi
-\endgroup
-}
-%for compatibility
-%<--------------------------------------------------------------------------–>
-% R
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleR(#1,#2){%
-\begingroup
- \edef\tkzLengthResult{\fpeval{round(#2,5)}}
- \global\let\tkzLengthResult\tkzLengthResult
- \path (#1)--++(\tkzLengthResult,0) coordinate (tkzSecondPointResult);
- \tkzRenamePoint(tkzSecondPointResult){tkzPointResult}
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Diameter Circle
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleD(#1,#2){%
-\begingroup
- \tkzDefMidPoint(#1,#2)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \pgfnodealias{tkzSecondPointResult}{#2}
- \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Circum Circle
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircumCircle(#1,#2,#3){%
-\begingroup
- \tkzCircumCenter(#1,#2,#3)
- \tkzRenamePoint(tkzPointResult){tkzFirstPointResult}
- \tkzRenamePoint(#1){tkzSecondPointResult}
- \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}%3.06 add [cm]
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% In(scribe) Circle
-%<--------------------------------------------------------------------------–>
-\def\tkzDefInCircle(#1,#2,#3){%
-\begingroup
- \tkzInCenter(#1,#2,#3)
- \pgfnodealias{tkz at incenter}{tkzPointResult}
- \tkzUProjection(#1,#3)(tkz at incenter)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
- \tkz@@CalcLengthcm(tkzPointResult,tkz at incenter){tkzLengthResult}
- \pgfnodealias{tkzPointResult}{tkz at incenter}
- \pgfnodealias{tkzFirstPointResult}{tkz at incenter}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Ex(scribe) Circle
-%<--------------------------------------------------------------------------–>
-\def\tkzDefExCircle(#1,#2,#3){%
-\begingroup
- \tkzExCenter(#1,#2,#3)
- \pgfnodealias{tkz at excenter}{tkzPointResult}
- \tkzUProjection(#1,#3)(tkz at excenter)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
- \tkz@@CalcLengthcm(tkzPointResult,tkz at excenter){tkzLengthResult}% for tkzGetLength
- \pgfnodealias{tkzPointResult}{tkz at excenter}
- \pgfnodealias{tkzFirstPointResult}{tkz at excenter}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Radius Ex Circle
-%<--------------------------------------------------------------------------–>
-\def\tkzDefExRadius(#1,#2,#3){%
-\begingroup
- \tkzExCenter(#1,#2,#3)
- \tkzUProjection(#1,#3)(tkzPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% The nine-point circle, also called Euler's circle or the Feuerbach circle
-% best way Ma,Mb,Mc circum center 2020
-%<--------------------------------------------------------------------------–>
-\def\tkzDefEulerCircle(#1,#2,#3){%
-\begingroup
- \tkzDefMidPoint(#1,#2) \pgfnodealias{tkz at e1}{tkzPointResult}
- \tkzDefMidPoint(#2,#3) \pgfnodealias{tkz at e2}{tkzPointResult}
- \tkzDefMidPoint(#1,#3) \pgfnodealias{tkz at e3}{tkzPointResult}
- \tkzCircumCenter(tkz at e1,tkz at e2,tkz at e3)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzRenamePoint(tkz at e1){tkzSecondPointResult}
- \tkz@@CalcLengthcm(tkzPointResult,tkz at e1){tkzLengthResult}
-\endgroup
-}
-\let\tkzDefNinePointsCircle\tkzEulerCircle%
-\let\tkzFeuerBachCircle\tkzEulerCircle%
-
-\def\tkzDefEulerRadius(#1,#2,#3){%
-\begingroup
- \tkzEulerCenter(#1,#2,#3)
- \pgfnodealias{eur at pta}{tkzPointResult}
- \tkzDefMidPoint(#1,#2)
- \tkz@@CalcLengthcm(eur at pta,tkzPointResult){tkzLengthResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Apollonius circle
-%<--------------------------------------------------------------------------–>
-\def\tkzDefApolloniusCircle(#1,#2){%
-\begingroup
- \tkzDefBarycentricPointTwo(#1,1,#2,\tkz at koeff)
- \pgfnodealias{apo at pta}{tkzPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
- \tkzDefBarycentricPointTwo(#1,1,#2,-\tkz at koeff)
- \pgfnodealias{apo at ptb}{tkzPointResult}
- \tkzDefMidPoint(apo at pta,apo at ptb)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkz@@CalcLengthcm(tkzFirstPointResult,apo at pta){tkzLengthResult}
- \pgfnodealias{tkzThirdPointResult}{apo at ptb}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefOrthogonalCircle(#1,#2,#3){%
-\begingroup
- \tkzTgtFromP(#1,#2)(#3)
- \tkz@@CalcLengthcm(#1,tkzFirstPointResult){tkzLengthResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefOrthoThroughCircle(#1,#2,#3,#4){%
-\begingroup
- \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
- \edef\tkz at lnc{\fpeval{1/\tkz at lnb}}
- \tkzVecKNorm[\tkz at lnc](#1,#3)
- \pgfnodealias{tkz at PointResult}{tkzPointResult}
- \tkzCircumCenter(tkz at PointResult,#3,#4)
- \tkz@@CalcLengthcm(tkzPointResult,#3){tkzLengthResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \pgfnodealias{tkzSecondPointResult}{#3}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Spieker Circle
-%<--------------------------------------------------------------------------–>
-\def\tkzDefSpiekerCircle(#1,#2,#3){%
-\begingroup
- \tkzSpiekerCenter(#1,#2,#3)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzUProjection(tkz at m1,tkz at m2)(tkzPointResult)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
- \tkz@@CalcLength(tkzSecondPointResult,tkzFirstPointResult){tkzLengthResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-
-%<--------------------------------------------------------------------------–>
-% End Def Circle
-%<--------------------------------------------------------------------------–>
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-by.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-by.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-by.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,522 +0,0 @@
-% tkz-tools-lua-points-by.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-lua-points-by.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% Transformations Géométriques
-%<--------------------------------------------------------------------------–>
-\def\tkz at numtrsf{0}
-\pgfkeys{/tkzDefPointBy/.cd,
- translation/.code args={from #1 to #2}{ \def\tkzfrom{#1}%
- \def\tkzto{#2}%
- \def\tkz at numtrsf{0}},
- homothety/.code args={center #1 ratio #2}{ \def\tkzcenter{#1}%
- \def\tkzratio{#2}%
- \def\tkz at numtrsf{1}},
- reflection/.code args={over #1--#2}{ \def\tkzdeb{#1}%
- \def\tkzfin{#2}%
- \def\tkz at numtrsf{2}},
- symmetry/.code args={center #1}{ \def\tkzcenter{#1}%
- \def\tkz at numtrsf{3}},
- projection/.code args={onto #1--#2}{ \def\tkzdeb{#1}%
- \def\tkzfin{#2}%
- \def\tkz at numtrsf{4}},
- rotation/.code args={center #1 angle #2}{ \def\tkzcenter{#1}%
- \def\tkzangle{#2}%
- \def\tkz at numtrsf{5}},
- rotation in rad/.code args={center #1 angle #2}{ \def\tkzcenter{#1}%
- \def\tkzangle{#2}%
- \def\tkz at numtrsf{6}},
- inversion/.code args={center #1 through #2}{ \def\tkzcenter{#1}%
- \def\tkzpoint{#2}%
- \def\tkz at numtrsf{7}},
- inversion negative/.code args={center #1 through #2}{ \def\tkzcenter{#1}%
- \def\tkzpoint{#2}%
- \def\tkz at numtrsf{8}},
- rotation with nodes/.code args={center #1 from #2 to #3}{ \def\tkzcenter{#1}%
- \def\tkzfrom{#2}%
- \def\tkzto{#3}%
- \def\tkz at numtrsf{9}}
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefPointBy{\pgfutil at ifnextchar[{\tkz at DefPointBy}{\tkz at DefPointBy[]}}
-\def\tkz at DefPointBy[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzDefPointBy}{#1}
- \ifcase\tkz at numtrsf%
-% % first case 0
- \tkzUTranslation(\tkzfrom,\tkzto)(#2)
-\or% 1
- \tkzUHomo(\tkzcenter,\tkzratio)(#2)
-\or% 2
- \tkzUSymOrth(\tkzdeb,\tkzfin)(#2)
-\or% 3
- \tkzUCSym(\tkzcenter)(#2)
-\or% 4
- \tkzUProjection(\tkzdeb,\tkzfin)(#2)
-\or% 5
- \tkzURotateAngle(\tkzcenter,\tkzangle)(#2)
-\or% 6
- \tkzURotateInRad(\tkzcenter,\tkzangle)(#2)
-\or% 7
- \tkzUInversePoint(\tkzcenter,\tkzpoint)(#2)
-\or% 8
- \tkzUInverseNegativePoint(\tkzcenter,\tkzpoint)(#2)
-\or% 9
- \tkzURotateWithNodes(\tkzcenter,\tkzfrom,\tkzto)(#2)
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefPointsBy{\pgfutil at ifnextchar[{\tkz at DefPointsBy}{\tkz at DefPointsBy[]}}
-\def\tkz at DefPointsBy[#1](#2)#3{%
-\begingroup
-\pgfqkeys{/tkzDefPointBy}{#1}
-\ifcase\tkz at numtrsf%
- % first case 0
- \tkzTranslation(\tkzfrom,\tkzto)(#2){#3}
- \or% 1
- \tkzHomo(\tkzcenter,\tkzratio)(#2){#3}
- \or% 2
- \tkzSymOrth(\tkzdeb,\tkzfin)(#2){#3}
- \or% 3
- \tkzCSym(\tkzcenter)(#2){#3}
- \or% 4
- \tkzProjection(\tkzdeb,\tkzfin)(#2){#3}
- \or% 5
- \tkzRotateAngle(\tkzcenter,\tkzangle)(#2){#3}
- \or% 6
- \tkzRotateInRad(\tkzcenter,\tkzangle)(#2){#3}
- \or% 7
- \tkzInversePoint(\tkzcenter,\tkzpoint)(#2){#3}
- \or% 8
- \tkzInverseNegativePoint(\tkzcenter,\tkzpoint)(#2){#3}
- \or% 9
- \tkzRotateWithNodes(\tkzcenter,\tkzfrom,\tkzto)(#2){#3}
-\fi
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-
-\def\ExtractPoint#1,#2\@nil{%
-\xdef\tkz at LastList{#2}
-\xdef\tkz at FirstPoint{#1}
-}
-\def\FirstPointInList#1{%
-\edef\tkz at templist{#1,}
-\expandafter\ExtractPoint\tkz at templist\@nil
-}
-%<--------------------------------------------------------------------------–>
-% Translation par rapport à un point
-%<--------------------------------------------------------------------------–>
-\def\tkzTranslation(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
-\foreach\PT in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \def\tkz at pointtsf{\PT '}
- \else
- \def\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \tkz at VecCoLinear(#1,#2,\PT)
- \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
- }
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUTranslation(#1,#2)(#3){%
-\begingroup
- \tkz at VecCoLinear(#1,#2,#3)%
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Symétrie par rapport à un point Homo with (-1)
-% #2 le centre #3 l'antécédent
-%<--------------------------------------------------------------------------–>
-\def\tkzCSym(#1)(#2)#3{%
-\begingroup
-\gdef\tkz at LastList{#3}
- \foreach\PointCS in {#2}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \xdef\tkz at pointtsf{\PointCS '}
- \else
- \xdef\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{\PointCS}{center}}%
- \tkz at ax=\pgf at x%
- \tkz at ay=\pgf at y%
- \pgfinterruptboundingbox
- \path(#1)--++(-\tkz at ax,-\tkz at ay)coordinate (\tkz at pointtsf);
- \endpgfinterruptboundingbox
-}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUCSym(#1)(#2){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz at ax=\pgf at x%
- \tkz at ay=\pgf at y%
- \path(#1)--++(-\tkz at ax,-\tkz at ay)coordinate (tkzPointResult);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Symétrie orthogonale par rapport à une droite
-%<--------------------------------------------------------------------------–>
-\def\tkzSymOrth(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
- \foreach\PointSO in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \def\tkz at pointtsf{\PointSO '}
- \else
- \def\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \tkzUSymOrth(#1,#2)(\PointSO)
- \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
- }
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUSymOrth(#1,#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz at ax =\pgf at y%
- \tkz at ay =\pgf at x%
- \pgfinterruptboundingbox
- \path[coordinate] (#3)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
- \endpgfinterruptboundingbox
- \tkzInterLL(#1,#2)(#3,tkz at point)
- \pgfnodealias{tkzPointofSym}{tkzPointResult}
- \tkz at VecK[2](#3,tkzPointofSym)
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Projection orthogonale sur une droite
-%<--------------------------------------------------------------------------–>
-\def\tkzProjection(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
- \foreach\PointPJ in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \def\tkz at pointtsf{\PointPJ '}
- \else
- \def\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \tkzUProjection(#1,#2)(\PointPJ)
- \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
- }
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUProjection(#1,#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz at ax =\pgf at y%
- \tkz at ay =\pgf at x%
- \pgfinterruptboundingbox
- \path[coordinate](#3)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
- \tkzInterLL(#1,#2)(#3,tkz at point)% définit tkzPointResult
- \endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkz at Projection(#1,#2)(#3)#4{%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz at ax =\pgf at y%
- \tkz at ay =\pgf at x%
- \pgfinterruptboundingbox
- \path[coordinate](#3)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
- \endpgfinterruptboundingbox
- \tkz at InterLL(#1,#2)(#3,tkz at point){#4}% définit tkzPointResult
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Homothétie par rapport à un point
-%<--------------------------------------------------------------------------–>
-\def\tkzHomo(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
-\foreach\PointHO in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \xdef\tkz at pointtsf{\PointHO '}
- \else
- \xdef\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{\PointHO}{center}}%
- \pgf at xa=\pgf at x%
- \pgf at ya=\pgf at y%
- \pgfmathparse{#2}
- \edef\tkz at coeff{\pgfmathresult}%
- \pgfinterruptboundingbox
- \path[coordinate](#1)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya)%
- coordinate(\tkz at pointtsf);
- \endpgfinterruptboundingbox
- }
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUHomo(#1,#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \pgf at xa=\pgf at x%
- \pgf at ya=\pgf at y%
- \pgfmathparse{#2}
- \edef\tkz at coeff{\pgfmathresult}%
- \pgfinterruptboundingbox
- \path[coordinate](#1)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya)%
- coordinate(tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% rotation en degré
-%<--------------------------------------------------------------------------–>
-\def\tkzRotateAngle(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
-\foreach\PointRot in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \def\tkz at pointtsf{\PointRot '}
- \else
- \def\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \tkz@@extractxy{\PointRot}
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \tkz@@extractxy{#1}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at bx}{\tkz at by}}%
- {#2}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \pgfinterruptboundingbox
- \path[coordinate](\tkz at bx,\tkz at by)coordinate(\tkz at pointtsf);%
- \endpgfinterruptboundingbox
-}
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzURotateAngle(#1,#2)(#3){%
-\begingroup
- \pgf at process{\pgfpointanchor{#3}{center}}%
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \pgf at process{\pgfpointanchor{#1}{center}}%
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at bx}{\tkz at by}}%
- {#2}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \pgfinterruptboundingbox
- \path (\tkz at bx,\tkz at by) coordinate (tkzPointResult);%
- \endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% % rotation en radian
-% %<--------------------------------------------------------------------------–>
-\def\tkzRotateInRad(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
- \foreach\PointRot in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \xdef\tkz at pointtsf{\PointRot '}
- \else
- \xdef\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \pgfmathparse{#2 r}
- \let\tkz at Angle\pgfmathresult
- \tkz@@extractxy{\PointRot}
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \tkz@@extractxy{#1}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at bx}{\tkz at by}}%
- {\tkz at Angle}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \pgfinterruptboundingbox
- \path[coordinate](\tkz at bx,\tkz at by)coordinate(\tkz at pointtsf);
- \endpgfinterruptboundingbox
-}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzURotateInRad(#1,#2)(#3){%
-\begingroup
- \pgfmathparse{#2 r}
- \let\tkz at Angle\pgfmathresult
- \tkz@@extractxy{#3}
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \tkz@@extractxy{#1}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at bx}{\tkz at by}}%
- {\tkz at Angle}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \pgfinterruptboundingbox
- \path[coordinate](\tkz at bx,\tkz at by)coordinate(tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Inverse of a point
-%<--------------------------------------------------------------------------–>
-\def\tkzInversePoint(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
- \foreach\PointIP in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \xdef\tkz at pointtsf{\PointIP '}
- \else
- \xdef\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \tkz@@CalcLengthcm(#1,#2){tkz at lna}
- \tkz@@CalcLengthcm(#1,\PointIP){tkz at lnb}
- \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
- \tkzVecKNorm[\tkz at lnc](#1,\PointIP)
- \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
- }
-\endgroup
-}
-\def\tkzUInversePoint(#1,#2)(#3){%
-\begingroup
- \tkz@@CalcLengthcm(#1,#2){tkz at lna}%
- \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
- \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
- \tkzVecKNorm[\tkz at lnc](#1,#3)
-\endgroup
-}
-% possible
-% \tkzDefLine[tangent from =#3](#1,#2)
-% \tkzTgtFromP(#1,#2)(#3)
-% \tkzInterLL(tkzFirstPointResult,tkzSecondPointResult)(#1,#2)
-%<--------------------------------------------------------------------------–>
-% Inverse negative of a point
-%<--------------------------------------------------------------------------–>
-\def\tkzInverseNegativePoint(#1,#2)(#3)#4{%
-\begingroup
-\gdef\tkz at LastList{#4}
- \foreach\PointIP in {#3}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \xdef\tkz at pointtsf{\PointIP '}
- \else
- \xdef\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \tkz@@CalcLengthcm(#1,#2){tkz at lna}
- \tkz@@CalcLengthcm(#1,\PointIP){tkz at lnb}
- \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
- \tkzVecKNorm[\tkz at lnc](#1,\PointIP)
- \tkzUCSym(#1)(tkzPointResult)
- \pgfnodealias{\tkz at pointtsf}{tkzPointResult}
- }
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUInverseNegativePoint(#1,#2)(#3){%
-\begingroup
- \tkz@@CalcLengthcm(#1,#2){tkz at lna}%
- \tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
- \edef\tkz at lnc{\fpeval{\tkz at lna/\tkz at lnb*\tkz at lna}}
- \tkzVecKNorm[\tkz at lnc](#1,#3)
- \tkzUCSym(#1)(tkzPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------- rotate with nodes ------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzRotateWithNodes(#1,#2,#3)(#4)#5{%
-\begingroup
-\gdef\tkz at LastList{#5}
- \foreach\PointRotWN in {#4}{%
- \FirstPointInList\tkz at LastList
- \ifx\tkz at FirstPoint\tkzutil at empty
- \def\tkz at pointtsf{\PointRotWN '}
- \else
- \def\tkz at pointtsf{\tkz at FirstPoint}
- \fi
- \tkzFindAngle(#2,#1,#3)
- \tkz@@extractxy{\PointRotWN}
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \tkz@@extractxy{#1}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at bx}{\tkz at by}}%
- {\tkzAngleResult}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \pgfinterruptboundingbox
- \path[coordinate](\tkz at bx,\tkz at by) coordinate (\tkz at pointtsf);%
- \endpgfinterruptboundingbox
-}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzURotateWithNodes(#1,#2,#3)(#4){%
-\begingroup
- \tkzFindAngle(#2,#1,#3)
- \pgf at process{\pgfpointanchor{#4}{center}}%
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \pgf at process{\pgfpointanchor{#1}{center}}%
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at bx}{\tkz at by}}%
- {\tkzAngleResult}
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \pgfinterruptboundingbox
- \path (\tkz at bx,\tkz at by) coordinate (tkzPointResult);%
- \endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Fin des transformations
-%<--------------------------------------------------------------------------–>
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-spc.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-spc.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-spc.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,680 +0,0 @@
-% tkz-obj-lua-points.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/01/23}
-\typeout{2023/01/23 5.03c tkz-obj-lua-points-spc.tex}
-\makeatletter
-%add ExCenter
-%<--------------------------------------------------------------------------–>
-% Specific points
-%<--------------------------------------------------------------------------–>
-% barycentre
-%<--------------------------------------------------------------------------–>
-\def\tkzDefBarycentricPoint(#1){%
-\begingroup
- \path[coordinate] (barycentric cs:#1) coordinate (tkzPointResult);
-\endgroup
-}
-\let\tkzDefBCPoint\tkzDefBarycentricPoint
-
-\def\tkzDefBarycentricPointTwo(#1,#2,#3,#4){%
-\begingroup
-\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
-\tkz at ax\pgf at x %
-\tkz at ay\pgf at y %
-\edef\tkzcax{\strip at pt\tkz at ax}%
-\edef\tkzcay{\strip at pt\tkz at ay}%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}
-\tkz at bx\pgf at x %
-\tkz at by\pgf at y %
-\edef\tkzcbx{\strip at pt\tkz at bx}%
-\edef\tkzcby{\strip at pt\tkz at by}%
-\edef\tkztpmx{\tkz at Dec{(\tkzcax*(#2) + \tkzcbx*(#4))/(#2 + #4 )}}
-\edef\tkztpmy{\tkz at Dec{(\tkzcay*(#2) + \tkzcby*(#2))/(#2 + #4 )}}
-\pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% milieu de deux points
-%<--------------------------------------------------------------------------–>
-% possible \coordinate (#3) at ($(#1)!0.5!(#2)$);
-%<--------------------------------------------------------------------------–>
-% \def\tkzDefMidPoint(#1,#2){%
-% \begingroup
-% \path (#1) -- (#2) coordinate[pos=.5](tkzPointResult);
-% \endgroup
-% }
-\def\tkzDefMidPoint(#1,#2){%
-\begingroup
- \pgf at process{\pgfpointanchor{#1}{center}}%
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \pgf at process{\pgfpointanchor{#2}{center}}%
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \advance\tkz at bx by\tkz at ax\relax%
- \advance\tkz at by by\tkz at ay\relax%
- \divide\tkz at bx by2\relax%
- \divide\tkz at by by2\relax
- \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz at bx}{\tkz at by}}
-\endgroup
-}
-\def\tkz at DefMidPoint(#1,#2,#3,#4){%
-\begingroup
- \tkz at ax#1%
- \tkz at ay#2%
- \tkz at bx#3%
- \tkz at by#4%
- \advance\tkz at bx by\tkz at ax\relax%
- \advance\tkz at by by\tkz at ay\relax%
- \divide\tkz at bx by2\relax%
- \divide\tkz at by by2\relax
- \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz at bx}{\tkz at by}}
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-\def\tkz at simicenter{0}
-\pgfkeys{/tkzsimicenter/.cd,
- ext/.code = \def\tkz at simicenter{0},
- int/.code = \def\tkz at simicenter{1},
- ext
-}%
-
-\def\tkzDefSimilitudeCenter{\pgfutil at ifnextchar[{\tkz at DefSimilitudeCenter}%
- {\tkz at DefSimilitudeCenter[]}}
-\def\tkz at DefSimilitudeCenter[#1](#2,#3)(#4,#5){%
-\pgfqkeys{/tkzsimicenter}{#1}
-\begingroup
-\ifcase\tkz at simicenter%
- \tkzDefExtSimilitudeCenter[#1](#2,#3)(#4,#5)
- \or% 1
- \tkzDefIntSimilitudeCenter[#1](#2,#3)(#4,#5)
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Internal Similitude center
-% Two circles have two similitude centers namely the internal center of
-% similitude Si and the external similitude center Se.
-%<--------------------------------------------------------------------------–>
-\def\tkz at numhomo{0}
-\pgfkeys{
-/tkzSimilitudeCenter/.cd,
- node/.code = \def\tkz at numhomo{0},
- R/.code = \def\tkz at numhomo{1},
- node,
- /tkzSimilitudeCenter/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1, /tikz/\searchname/.retry=#1}}
-}
-\def\tkzDefIntSimilitudeCenter{\pgfutil at ifnextchar[{\tkz at DefIntSimilitudeCenter}{\tkz at DefIntSimilitudeCenter[]}}
-\def\tkz at DefIntSimilitudeCenter[#1](#2,#3)(#4,#5){%
-\begingroup
-\pgfqkeys{/tkzSimilitudeCenter}{#1}
-\ifcase\tkz at numhomo%
- \tkz@@CalcLengthcm(#2,#3){tkz at rt}%
- \tkz@@CalcLengthcm(#4,#5){tkz at rf}%
- \or% 1
- \def\tkz at rt{#3}%
- \def\tkz at rf{#5}%
-\fi
-\pgfinterruptboundingbox
-\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}
-\tkz at ax\pgf at x %
-\tkz at ay\pgf at y %
-\edef\tkzcax{\strip at pt\tkz at ax}%
-\edef\tkzcay{\strip at pt\tkz at ay}%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#4}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#4}{center}}
-\tkz at bx\pgf at x %
-\tkz at by\pgf at y %
-\edef\tkzcbx{\strip at pt\tkz at bx}%
-\edef\tkzcby{\strip at pt\tkz at by}%
-\edef\tkztpmx{\tkz at Dec{(\tkzcax*\tkz at rf + \tkzcbx*\tkz at rt)/(\tkz at rf + \tkz at rt )}}
-\edef\tkztpmy{\tkz at Dec{(\tkzcay*\tkz at rf + \tkzcby*\tkz at rt)/(\tkz at rf + \tkz at rt )}}
- \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefIntHomotheticCenter\tkzDefIntSimilitudeCenter
-%<--------------------------------------------------------------------------–>
-% External Similitude center
-%<--------------------------------------------------------------------------–>
-\def\tkzDefExtSimilitudeCenter{\pgfutil at ifnextchar[{\tkz at DefExtSimilitudeCenter}{%
-\tkz at DefExtSimilitudeCenter[]}}
-
-\def\tkz at DefExtSimilitudeCenter[#1](#2,#3)(#4,#5){%
-\begingroup
-\pgfqkeys{/tkzSimilitudeCenter}{#1}
-\ifcase\tkz at numhomo%
- \tkz@@CalcLengthcm(#2,#3){tkz at rt}%
- \tkz@@CalcLengthcm(#4,#5){tkz at rf}%
- \or% 1
- \def\tkz at rt{#3}%
- \def\tkz at rf{#5}%
-\fi
-\pgfinterruptboundingbox
-\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}
-\tkz at ax\pgf at x %
-\tkz at ay\pgf at y %
-\edef\tkzcax{\strip at pt\tkz at ax}%
-\edef\tkzcay{\strip at pt\tkz at ay}%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#4}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#4}{center}}
-\tkz at bx\pgf at x %
-\tkz at by\pgf at y %
-\edef\tkzcbx{\strip at pt\tkz at bx}%
-\edef\tkzcby{\strip at pt\tkz at by}%
-\edef\tkztpmx{\tkz at Dec{(\tkzcax*(-\tkz at rf) + \tkzcbx*\tkz at rt)/(\tkz at rt - (\tkz at rf))}}
-\edef\tkztpmy{\tkz at Dec{(\tkzcay*(-\tkz at rf) + \tkzcby*\tkz at rt)/(\tkz at rt - (\tkz at rf))}}
- \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
- \endpgfinterruptboundingbox
-\endgroup
-}
-
-\let\tkzDefExtHomotheticCenter\tkzDefExtSimilitudeCenter
-%<--------------------------------------------------------------------------–>
-% Harmonic Division
-%<--------------------------------------------------------------------------–>
-% A , B , C ,D CA/CB = DA/DB
-%<--------------------------------------------------------------------------–>
-\def\tkz at numdha{0}
-\pgfkeys{/tkzharmonic/.cd,
- ext/.code = \def\tkz at numdha{0},
- int/.code = \def\tkz at numdha{1},
- both/.code = \def\tkz at numdha{2},
- both,
-}%
-
-\def\tkzDivHarmonic{\pgfutil at ifnextchar[{\tkz at DivHarmonic}{\tkz at DivHarmonic[]}}
-\def\tkz at DivHarmonic[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzharmonic}{#1}
- \ifcase\tkz at numdha%
- \tkzDefDivHarmonicExt(#2)
- \or%
- \tkzDefDivHarmonicInt(#2)
- \or%
- \tkzDefDivHarmonicBoth(#2)
- \fi
-\endgroup
-}
-
-\def\tkzDefDivHarmonicExt(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
- \tkz at VecKOrth[](#1,#2) \tkzGetPoint{tkz at px}
- \tkzDefMidPoint(tkz at px,#2) \tkzGetPoint{tkz at py}
- \tkzInterLL(tkz at px,#3)(#1,tkz at py) \tkzGetPoint{tkz at pz}
- \tkzInterLL(#2,tkz at pz)(#1,tkz at px) \tkzGetPoint{tkz at px}
- \tkzInterLL(tkz at py,tkz at px)(#1,#2) \tkzGetPoint{tkzPointResult}
-\endpgfinterruptboundingbox
-\endgroup
-}
-
-\def\tkzDefDivHarmonicInt(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
- \tkz at VecKOrth[1](#1,#2) \tkzGetPoint{tkz at px}
- \tkzDefMidPoint(tkz at px,#2) \tkzGetPoint{tkz at py}
- \tkzInterLL(tkz at py,#3)(#1,tkz at px) \tkzGetPoint{tkz at pz}
- \tkzInterLL(#2,tkz at pz)(#1,tkz at py) \tkzGetPoint{tkz at py}
- \tkzInterLL(tkz at py,tkz at px)(#1,#2) \tkzGetPoint{tkzPointResult}
-\endpgfinterruptboundingbox
-\endgroup
-}
-
-\def\tkzDefDivHarmonicBoth(#1,#2,#3){%
-\begingroup
-\edef\tkz at k{\fpeval{#3}}
- \path[coordinate] (barycentric cs:#1=1,#2={\tkz at k}) coordinate (tkzFirstPointResult);
- \path[coordinate] (barycentric cs:#1=1,#2={-\tkz at k}) coordinate (tkzSecondPointResult);
-\endgroup
-}
-
-\let\tkzDefHarmonic\tkzDivHarmonic
-%<--------------------------------------------------------------------------–>
-% golden ratio
-%<--------------------------------------------------------------------------–>
-\def\tkzDefGoldenRatio(#1,#2){%
-\begingroup
-\tkzDefPointWith[linear,K=\tkzInvPhi](#1,#2)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% triangle center
-%<--------------------------------------------------------------------------–>
-
-\def\tkz at numtc{0}
-\pgfkeys{/tkzDefTriangleCenter/.cd,
- ortho/.code = \def\tkz at numtc{0},
- orthic/.code = \def\tkz at numtc{0},
- centroid/.code = \def\tkz at numtc{1},
- median/.code = \def\tkz at numtc{1},
- circum/.code = \def\tkz at numtc{2},
- in/.code = \def\tkz at numtc{3},
- ex/.code = \def\tkz at numtc{4},
- euler/.code = \def\tkz at numtc{5},
- symmedian/.code = \def\tkz at numtc{6},
- lemoine/.code = \def\tkz at numtc{6},
- grebe/.code = \def\tkz at numtc{6},
- spieker/.code = \def\tkz at numtc{7},
- gergonne/.code = \def\tkz at numtc{8},
- nagel/.code = \def\tkz at numtc{9},
- mittenpunkt/.code = \def\tkz at numtc{10},
- feuerbach/.code = \def\tkz at numtc{11},
- circum
-}
-\def\tkzDefTriangleCenter{\pgfutil at ifnextchar[{\tkz at DefTriangleCenter}{\tkz at DefTriangleCenter[]}}
-\def\tkz at DefTriangleCenter[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzDefTriangleCenter}{#1}
-\ifcase\tkz at numtc%
- \tkzOrthoCenter(#2)
- \or% 1
- \tkzCentroid(#2)
- \or% 2
- \tkzCircumCenter(#2)
- \or% 3
- \tkzInCenter(#2)
- \or% 4
- \tkzExCenter(#2)
- \or% 5
- \tkzEulerCenter(#2)
- \or% 6
- \tkzSymmedianCenter(#2)
- \or% 7
- \tkzSpiekerCenter(#2)
- \or% 8
- \tkzGergonneCenter(#2)
- \or%9
- \tkzNagelCenter(#2)
- \or%10
- \tkzMittenpunktCenter(#2)
- \or%11
- \tkzFeuerbachCenter(#2)
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% OrthoCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzOrthoCenter(#1,#2,#3){%
-\begingroup
- \pgfinterruptboundingbox
- \tkzUProjection(#1,#2)(#3)
- \pgfnodealias{ort at pta}{tkzPointResult}
- \tkzUProjection(#1,#3)(#2)
- \pgfnodealias{ort at ptb}{tkzPointResult}
- \tkzInterLL(#2,ort at ptb)(#3,ort at pta)
- \endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefOrthoCenter\tkzOrthoCenter
-%<--------------------------------------------------------------------------–>
-% GravityCenter modif 3.03
-%<--------------------------------------------------------------------------–>
-\def\tkzCentroid(#1,#2,#3){%
-\begingroup
- \pgf at process{\pgfpointanchor{#1}{center}}%
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \pgf at process{\pgfpointanchor{#2}{center}}%
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \pgf at process{\pgfpointanchor{#3}{center}}%
- \tkz at cx\pgf at x%
- \tkz at cy\pgf at y%
- \edef\tkzcax{\strip at pt\tkz at ax}%
- \edef\tkzcay{\strip at pt\tkz at ay}%
- \edef\tkzcbx{\strip at pt\tkz at bx}%
- \edef\tkzcby{\strip at pt\tkz at by}%
- \edef\tkzccx{\strip at pt\tkz at cx}%
- \edef\tkzccy{\strip at pt\tkz at cy}%
- \edef\tkztpmx{\tkz at Dec{(\tkzcax + \tkzcbx + \tkzccx)/3}}
- \edef\tkztpmy{\tkz at Dec{(\tkzcay + \tkzcby + \tkzccy)/3}}
- \pgfinterruptboundingbox
- \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
- \endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzBaryCenter\tkzCentroid
-
-%<--------------------------------------------------------------------------–>
-% CircumCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzCircumCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
- \tkzDefMediatorLine(#1,#2)
- \pgf at process{\pgfpointanchor{tkzFirstPointResult}{center}}%
- \tkz at ax\pgf at x%
- \tkz at ay\pgf at y%
- \pgf at process{\pgfpointanchor{tkzSecondPointResult}{center}}%
- \tkz at bx\pgf at x%
- \tkz at by\pgf at y%
- \tkzDefMediatorLine(#1,#3)
- \pgf at process{\pgfpointanchor{tkzFirstPointResult}{center}}%
- \tkz at cx\pgf at x%
- \tkz at cy\pgf at y%
- \pgf at process{\pgfpointanchor{tkzSecondPointResult}{center}}%
- \tkz at dx\pgf at x%
- \tkz at dy\pgf at y%
-\tkzInterLLxy(\tkz at ax,\tkz at ay,\tkz at bx,\tkz at by)(\tkz at cx,\tkz at cy,\tkz at dx,\tkz at dy)%
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefCircumCenter\tkzCircumCenter
-%<--------------------------------------------------------------------------–>
-% InCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzInCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
-\tkzDefBisectorLine(#3,#1,#2)
-\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
-\tkz at bx\pgf at x%
-\tkz at by\pgf at y%
-\tkzDefBisectorLine(#3,#2,#1)
-\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
-\tkz at dx\pgf at x%
-\tkz at dy\pgf at y%
-\pgf at process{\pgfpointanchor{#1}{center}}%
-\tkz at ax\pgf at x%
-\tkz at ay\pgf at y%
-\pgf at process{\pgfpointanchor{#2}{center}}%
-\tkz at cx\pgf at x%
-\tkz at cy\pgf at y%
-\tkzInterLLxy(\tkz at ax,\tkz at ay,\tkz at bx,\tkz at by)(\tkz at cx,\tkz at cy,\tkz at dx,\tkz at dy)%
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefInCenter\tkzInCenter
-%<--------------------------------------------------------------------------–>
-% ExCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzExCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
-\tkzDefBisectorOutLine(#2,#1,#3)
-\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
-\tkz at bx\pgf at x%
-\tkz at by\pgf at y%
-\tkzDefBisectorOutLine(#2,#3,#1)
-\pgf at process{\pgfpointanchor{tkzPointResult}{center}}%
-\tkz at dx\pgf at x%
-\tkz at dy\pgf at y%
-\pgf at process{\pgfpointanchor{#1}{center}}%
-\tkz at ax\pgf at x%
-\tkz at ay\pgf at y%
-\pgf at process{\pgfpointanchor{#3}{center}}%
-\tkz at cx\pgf at x%
-\tkz at cy\pgf at y%
-\tkzInterLLxy(\tkz at ax,\tkz at ay,\tkz at bx,\tkz at by)(\tkz at cx,\tkz at cy,\tkz at dx,\tkz at dy)%
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefExCenter\tkzExCenter
-%<--------------------------------------------------------------------------–>
-% EulerCenter neuf points
-%<--------------------------------------------------------------------------–>
-\def\tkzEulerCenter(#1,#2,#3){%
-% mileu de orthocentre et centre cercle circonscrit
-% passe par les midpoints par les pieds des hauteurs
-\begingroup
-\pgfinterruptboundingbox
-\tkzDefMidPoint(#1,#2)
-\pgfnodealias{eu at mic}{tkzPointResult}
-\tkzDefMidPoint(#1,#3)
-\pgfnodealias{eu at mib}{tkzPointResult}
-\tkzDefMidPoint(#2,#3)
-\pgfnodealias{eu at mia}{tkzPointResult}
-\tkzCircumCenter(eu at mia,eu at mib,eu at mic)
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzNinePointCenter\tkzEulerCenter
-\let\tkzDefEulerCenter\tkzEulerCenter
-%<--------------------------------------------------------------------------–>
-%Symmedian center Lemoine point Grebe point K
-%<--------------------------------------------------------------------------–>
-\def\tkzSymmedianCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
-\tkzDefMidPoint(#2,#3)
-\pgfnodealias{eu at mic}{tkzPointResult}
-\tkzDefMidPoint(#1,#3)
-\pgfnodealias{eu at mib}{tkzPointResult}
-\tkzUProjection(#2,#3)(#1)
-\pgfnodealias{ort at pta}{tkzPointResult}
-\tkzDefMidPoint(#1,ort at pta)
-\pgfnodealias{eu at mid}{tkzPointResult}
-\tkzUProjection(#1,#3)(#2)
-\pgfnodealias{ort at ptb}{tkzPointResult}
-\tkzDefMidPoint(#2,ort at ptb)
-\pgfnodealias{eu at mie}{tkzPointResult}
-\tkzInterLL(eu at mic,eu at mid)(eu at mib,eu at mie)
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzLemoinePoint\tkzSymmedianCenter
-\let\tkzGrebePoint\tkzSymmedianCenter
-\let\tkzDefLemoinePoint\tkzLemoinePoint
-%<--------------------------------------------------------------------------–>
-% Spieker center
-%<--------------------------------------------------------------------------–>
-\def\tkzSpiekerCenter(#1,#2,#3){%
-\begingroup
-% we need to get the midpoints
-\pgfcoordinate{tkz at m3}{%
- \pgfpointscale{0.5}{%
- \pgfpointadd{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}}}%
-\pgfcoordinate{tkz at m2}{%
- \pgfpointscale{0.5}{%
- \pgfpointadd{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#3}{center}}}}%
-\pgfcoordinate{tkz at m1}{%
- \pgfpointscale{0.5}{%
- \pgfpointadd{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}}}%
-\tkzInCenter(tkz at m1,tkz at m2,tkz at m3)
-\endgroup
-}
-\let\tkzDefSpiekerCenter\tkzSpiekerCenter
-%<--------------------------------------------------------------------------–>
-% Gergonne center Ge
-%<--------------------------------------------------------------------------–>
-\def\tkzGergonneCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
-\tkzInCenter(#1,#2,#3)
-\pgfnodealias{tkz at ptin}{tkzPointResult}
-\tkzUProjection(#2,#3)(tkz at ptin)
-\pgfnodealias{tkz at oca}{tkzPointResult}
-\tkzUProjection(#1,#3)(tkz at ptin)
-\pgfnodealias{tkz at ocb}{tkzPointResult}
-\tkzInterLL(#1,tkz at oca)(#2,tkz at ocb)
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefGergonneCenter\tkzGergonneCenter
-%<--------------------------------------------------------------------------–>
-% Nagel center Na
-%<--------------------------------------------------------------------------–>
-% INa = 3 IG. Nagel point % correction 02/02/20
-\def\tkzNagelCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
-\tkzDefExcentralTriangle(#1,#2,#3){tkz at a,tkz at b,tkz at c}
-\tkzUProjection(#2,#3)(tkz at a)
-\pgfnodealias{tkz at tgta}{tkzPointResult}
-\tkzUProjection(#1,#2)(tkz at c)
-\pgfnodealias{tkz at tgtc}{tkzPointResult}
-\tkzInterLL(#1,tkz at tgta)(#3,tkz at tgtc)
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefNagelCenter\tkzNagelCenter
-%<--------------------------------------------------------------------------–>
-% Mittenpunkt
-%<--------------------------------------------------------------------------–>
-\def\tkzMittenpunktCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
-\tkzExCenter(#2,#3,#1)
-\pgfnodealias{tkz at a}{tkzPointResult}
-\tkzExCenter(#3,#1,#2)
-\pgfnodealias{tkz at b}{tkzPointResult}
-\pgfcoordinate{tkz at ma}{%
-\pgfpointscale{0.5}{%
-\pgfpointadd{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}}%
-\pgfcoordinate{tkz at mb}{%
-\pgfpointscale{0.5}{%
-\pgfpointadd{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}}%
-\tkzInterLL(tkz at a,tkz at ma)(tkz at b,tkz at mb)
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefMittenpunktCenter\tkzMittenpunktCenter
-\let\tkzDefMiddlespoint\tkzMittenpunktCenter
-%<--------------------------------------------------------------------------–>
-% Feuerbach point
-%<--------------------------------------------------------------------------–>
-\def\tkzFeuerbachCenter(#1,#2,#3){%
-\begingroup
-\pgfinterruptboundingbox
-\tkzEulerCenter(#1,#2,#3)
-\pgfnodealias{tkz at euler}{tkzPointResult}
-\tkzInCenter(#1,#2,#3)
-\pgfnodealias{tkz at in}{tkzPointResult}
-\tkzUProjection(#2,#3)(tkzPointResult)
-\tkzInterLC(tkz at in,tkz at euler)(tkz at in,tkzPointResult)\tkzGetFirstPoint{tkz at fe}
-\tkzRenamePoint(tkz at fe){tkzPointResult}
-\endpgfinterruptboundingbox
-\endgroup
-}
-\let\tkzDefFeuerbachCenter\tkzFeuerbachCenter
-%<--------------------------------------------------------------------------–>
-% Orthogonal center
-%<--------------------------------------------------------------------------–>
-\def\tkzOrthogonalCenter(#1,#2){%
-\begingroup
-\pgfinterruptboundingbox
-\tkz at VecK[\tkz at koeff/(1+\tkz at koeff)](#1,#2)
-\pgfnodealias{tkzFirstPointResult}{tkzPointResult}
-\tkz at VecK[\tkz at koeff/(\tkz at koeff-1)](#1,#2)
-\pgfnodealias{tkzSecondPointResult}{tkzPointResult}
-\tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult)
-\endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% End Triangle center
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% Projection center of excircles
-%<--------------------------------------------------------------------------–>
-\def\tkzDefProjExcenter{\pgfutil at ifnextchar[{%
- \tkz at DefProjExcenter}{%
- \tkz at DefProjExcenter[]}
- }
-\def\tkz at DefProjExcenter[#1](#2,#3,#4)(#5)#6{
-\begingroup
- \SetUpPTTR{#1}
- \foreach \name [count=\i] in {#5} {%
- \global\expandafter\edef\csname tkz at pt\i\endcsname{\name}
- }
- \foreach \name [count=\i] in {#6} {%
- \global\expandafter\edef\csname tkz at ppt\i\endcsname{\name}
- }
-\tkzDefPointBy[projection=onto #3--#4 ](\tkz at pttr@name \csname tkz at pt1\endcsname)
-\pgfnodealias{\csname tkz at ppt1\endcsname\csname tkz at pt1\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #3--#4 ](\tkz at pttr@name \csname tkz at pt2\endcsname)
-\pgfnodealias{\csname tkz at ppt1\endcsname\csname tkz at pt2\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #3--#4 ](\tkz at pttr@name \csname tkz at pt3\endcsname)
-\pgfnodealias{\csname tkz at ppt1\endcsname\csname tkz at pt3\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #2--#4 ](\tkz at pttr@name \csname tkz at pt1\endcsname)
-\pgfnodealias{\csname tkz at ppt2\endcsname\csname tkz at pt1\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #2--#4 ](\tkz at pttr@name \csname tkz at pt2\endcsname)
-\pgfnodealias{\csname tkz at ppt2\endcsname\csname tkz at pt2\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #2--#4 ](\tkz at pttr@name \csname tkz at pt3\endcsname)
-\pgfnodealias{\csname tkz at ppt2\endcsname\csname tkz at pt3\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #3--#2 ](\tkz at pttr@name \csname tkz at pt1\endcsname)
-\pgfnodealias{\csname tkz at ppt3\endcsname\csname tkz at pt1\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #3--#2 ](\tkz at pttr@name \csname tkz at pt2\endcsname)
-\pgfnodealias{\csname tkz at ppt3\endcsname\csname tkz at pt2\endcsname}{tkzPointResult}
-\tkzDefPointBy[projection=onto #3--#2 ](\tkz at pttr@name \csname tkz at pt3\endcsname)
-\pgfnodealias{\csname tkz at ppt3\endcsname\csname tkz at pt3\endcsname}{tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Point on circle
-%<--------------------------------------------------------------------------–>
-\def\tkz at numptcirc{0}
-\pgfkeys{/tkzptcircle/.cd,
-through/.code args = {center #1 angle #2 point #3} { \def\tkz at center{#1}%
- \def\tkz at angle{#2}%
- \def\tkz at through{#3}%
- \def\tkz at numptcirc{0}},
-R/.code args = {center #1 angle #2 radius #3} { \def\tkz at center{#1}%
- \def\tkz at angle{#2}%
- \def\tkz at radius{#3}%
- \def\tkz at numptcirc{1}},
-through in rad/.code args = {center #1 angle #2 point #3} { \def\tkz at center{#1}%
- \def\tkz at angle{#2}%
- \def\tkz at through{#3}%
- \def\tkz at numptcirc{2}},
-R in rad/.code args = {center #1 angle #2 radius #3} { \def\tkz at center{#1}%
- \def\tkz at angle{#2}%
- \def\tkz at radius{#3}%
- \def\tkz at numptcirc{3}}
-}
-
-\def\tkzDefPointOnCircle{\pgfutil at ifnextchar[{\tkz at DefPointOnCircle}{%
- \tkz at DefPointOnCircle[]}}
-\def\tkz at DefPointOnCircle[#1]{%
-\begingroup
-\pgfqkeys{/tkzptcircle}{#1}
- \ifcase\tkz at numptcirc%
- \tkz@@CalcLengthcm(\tkz at center,\tkz at through){tkz at radius}
- \or% 1
- \relax%
- \or% 2
- \pgfmathparse{\tkz at angle\space r}
- \let\tkz at angle\pgfmathresult
- \tkz@@CalcLengthcm(\tkz at center,\tkz at through){tkz at radius}
- \or% 3
- \pgfmathparse{\tkz at angle\space r}
- \let\tkz at angle\pgfmathresult
-\fi
-\path (\tkz at center) --++(\tkz at angle:\tkz at radius) coordinate(tkzPointResult);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Point on line
-%<--------------------------------------------------------------------------–>
-\def\tkzDefPointOnLine{\pgfutil at ifnextchar[{\tkz at DefPointOnLine}{\tkz at DefPointOnLine[]}}
-\def\tkz at DefPointOnLine[#1](#2,#3){%
-\begingroup
-\path (#2) to [#1] coordinate (tkzPointResult) (#3);
-\endgroup
-}
-
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-with.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-with.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-with.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,269 +0,0 @@
-% tkz-obj-lua-points-with.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-lua-points-with.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% Vectors
-%<--------------------------------------------------------------------------–>
-% Objet : outils mathématiques pour la géométrie euclideienne avec pgf/tikz
-% utilisable de préférence avec un repère orthonormé et le cm comme unité
-% utile pour la compatibilité avec pgf 2
-%<--------------------------------------------------------------------------–>
-% Duplicate Length à revoir pas de pt pas de global
-% ||v(CN)||= ||v(AB)|| et v(CN) colineaire à v(CD)
-% A-->#1 B-->#2 C-->#3 D-->#4 N-->#5 ?????
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% Outils pour les vecteurs
-%<--------------------------------------------------------------------------–>
-% ce sont des outils élémentaires qui à partir de deux points en définissent
-% un troisième
-% #1 si c'est une option alors c'est un nombre réel
-% #2 et #3 sont deux points
-% #4 est le nom du point qui résulte de la transformation
-% exemple : \tkzVecKNorm (A,B){C} définit un point C tel que AC = 1 et C est % % un point de la droite (AC). #1 peut être négatif
-
-\def\tkzDuplicateSegment(#1,#2)(#3,#4){%
-\begingroup
- \tkz@@CalcLength(#1,#2){tkz at firstlen}%
- \tkz@@CalcLength(#3,#4){tkz at secondlen}%
- \edef\tkz at ratio{\tkz at Dec{\tkz at firstlen/\tkz at secondlen}}
- \tkz at VecKCoLinear[\tkz at ratio](#3,#4,#3)%
-\endgroup
-}
-\let\tkzDuplicateLength\tkzDuplicateSegment
-%<--------------------------------------------------------------------------–>
-% Coordonnées d'un vecteur (couple de points)
-% Deux points A et B donc un vecteur on récupère les coordonnées de v(AB)
-% en cm
-% tkzGetVecCoord en cm ou en pt ???
-%<--------------------------------------------------------------------------–>
-%result in #3x et #3y #1 et #2 sont les points
-% passage en cm avec fp ?
-% 28.45274 =1 cm
-\def\tkzGetVectxy(#1,#2)#3{%
-\begingroup
-\pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
-\pgfmathparse{\pgf at sys@tonumber{\pgf at x}/1cm}%
-\let\tkzresultx\pgfmathresult
-\pgfmathparse{\pgf at sys@tonumber{\pgf at y}/1cm}%
-\let\tkzresulty\pgfmathresult
-\global\expandafter\edef\csname #3x\endcsname{\tkzresultx}%
-\global\expandafter\edef\csname #3y\endcsname{\tkzresulty}%
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% options #1 two points #2,#3 result in #4
-%
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% tkzDefPointWith
-%<--------------------------------------------------------------------------–>
-\def\tkz at numv{0}
-\pgfkeys{/@pointwith/.cd,
- colinear/.code args = {at #1}{\def\tkz at numv{0}\def\tkz at frompoint{#1}},
- orthogonal/.code = {\def\tkz at numv{1}},
- linear/.code = {\def\tkz at numv{2}},
- orthogonal normed/.code = {\def\tkz at numv{3}},
- linear normed/.code = {\def\tkz at numv{4}},
- colinear normed/.code args = {at #1}{\def\tkz at numv{5}\def\tkz at frompoint{#1}},
- K/.code = {\edef\tkz at coeff{\fpeval{#1}}},
- K = 1,
- normed/.is if = tkz at line@normed,
- normed/.default = true,
- normed = false,
- orthogonal
-}
-\def\tkzDefPointWith{\pgfutil at ifnextchar[{\tkz at DefPointWith}{\tkz at DefPointWith[]}}
-
-\def\tkz at DefPointWith[#1](#2,#3){%
-\begingroup
-\pgfkeys{/@pointwith/.cd,K=1}
-\pgfqkeys{/@pointwith}{#1}
-\ifcase\tkz at numv%
- % first case 0
- \tkz at DefVectorColinearat[\tkz at coeff](#2,#3)
- \or% 1
- \tkz at VecKOrth[\tkz at coeff](#2,#3)
- \or% 2
- \tkz at VecK[\tkz at coeff](#2,#3)
- \or% 3
- \tkz at VecKOrthNorm[\tkz at coeff](#2,#3)
- \or% 4
- \tkz at VecKNorm[\tkz at coeff](#2,#3)
- \or% 5
- \tkz at VecKColinearNorm[\tkz at coeff](#2,#3)
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% tkzDefVectorfrom
-%<--------------------------------------------------------------------------–>
-% tkz at numv 0
-\def\tkz at DefVectorColinearat[#1](#2,#3){%
-\iftkz at line@normed
- \tkz at VecKColinearNorm[#1](#2,#3)
-\else
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}%
- \pgf at xa=\pgf at x\relax%
- \pgf at ya=\pgf at y\relax%
- \pgfinterruptboundingbox
- \path (\tkz at frompoint)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-\fi
-}
-%<--------------------------------------------------------------------------–>
-% tkzVector K Orth coeff dans #1
-% v(AN) perp v(AB) (v(AB) , v(AN) ) sens direct cercle trigo
-% ||v(AN)||=||v(AB)||
-%<--------------------------------------------------------------------------–>
-% tkz at numv 1
-\def\tkzVecKOrth{\pgfutil at ifnextchar[{\tkz at VecKOrth}{\tkz at VecKOrth[1]}}
-\def\tkz at VecKOrth[#1](#2,#3){%
-\iftkz at line@normed
- \tkz at VecKOrthNorm[#1](#2,#3)
-\else
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}%
- \pgf at xa=-\pgf at y%
- \pgf at ya=\pgf at x%
- \pgfinterruptboundingbox
- \path (#2)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-\fi
-}%
-
-%<--------------------------------------------------------------------------–>
-% v(AN)=#1 x v(AB)
-% #1 le coeff; #2--> A #3--> B #4-->N tq #4-#2 = #1*(#3-#2)
-%<--------------------------------------------------------------------------–>
-% tkz at numv 2
-\def\tkzVecK{\pgfutil at ifnextchar[{\tkz at VecK}{\tkz at VecK[1]}}
-\def\tkz at VecK[#1](#2,#3){%
-\iftkz at line@normed
- \tkz at VecKNorm[#1](#2,#3)
-\else
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \pgf at xa=\pgf at x\relax%
- \pgf at ya=\pgf at y\relax%
- \pgfmathparse{#1}
- \let\tkz at coeff\pgfmathresult
- \pgfinterruptboundingbox
- \path (#2)--++(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-\fi
-}%
-%<--------------------------------------------------------------------------–>
-% tkzVecKOrthNorm coeff dans #1
-% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo
-% ||v(AN||=1 si #1 est vide ou =1 sinon ||v(AN||=K
-%<--------------------------------------------------------------------------–>
-% tkz at numv 3
-\def\tkzVecKOrthNorm{\pgfutil at ifnextchar[{\tkz at VecKOrthNorm}%
- {\tkz at VecKOrthNorm[1]}}
-\def\tkz at VecKOrthNorm[#1](#2,#3){%
-\begingroup
- \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}}
- \pgf at xa=-\pgf at y\relax%
- \pgf at ya=\pgf at x\relax%
- \pgfmathparse{#1}
- \let\tkz at tmp\pgfmathresult
- \edef\tkz at x{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at xa}}
- \edef\tkz at y{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at ya}}
- \pgfinterruptboundingbox
- \path (#2)--++(\tkz at x pt,\tkz at y pt) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-}%
-%<--------------------------------------------------------------------------–>
-% VectorNormalised ou K*VectorNormalised
-% A-->#2 B-->#3 N-->#4 v(AB) devient v(AN) tq ||v(AN)||=1 si #1=1
-% sinon ||v(AN)||=#1
-%<--------------------------------------------------------------------------–>
-% tkz at numv 4
-\def\tkzVecKNorm{\pgfutil at ifnextchar[{\tkz at VecKNorm}{\tkz at VecKNorm[1]}}
-\def\tkz at VecKNorm[#1](#2,#3){%
-\begingroup
- \tkzpointnormalised{%
- \pgfpointdiff{\pgfpointanchor{#2}{center}}
- {\pgfpointanchor{#3}{center}}}
- \pgf at xa=\pgf at x\relax%
- \pgf at ya=\pgf at y\relax%
- \pgfmathparse{#1}
- \let\tkz at tmp\pgfmathresult
- \edef\tkz at x{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at xa}}
- \edef\tkz at y{\tkz at Dec{28.45274*\tkz at tmp*\strip at pt\pgf at ya}}
- \pgfinterruptboundingbox
- \path (#2)--++(\tkz at x pt,\tkz at y pt) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-}%
-%<--------------------------------------------------------------------------–>
-% \tkz at VecKColinearNorm
-%<--------------------------------------------------------------------------–>
-%% tkz at numv 5
-\def\tkz at VecKColinearNorm[#1](#2,#3){%
-\begingroup
- \tkzpointnormalised{%
- \pgfpointdiff{\pgfpointanchor{#2}{center}}
- {\pgfpointanchor{#3}{center}}}
- \pgf at xa=\pgf at x\relax%
- \pgf at ya=\pgf at y\relax%
- \edef\tkz at x{\tkz at Dec{28.45274*(\tkz at coeff)*\strip at pt\pgf at xa}}
- \edef\tkz at y{\tkz at Dec{28.45274*(\tkz at coeff)*\strip at pt\pgf at ya}}
- \pgfinterruptboundingbox
- \path (\tkz at frompoint)--++(\tkz at x pt,\tkz at y pt) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-}%
-%<--------------------------------------------------------------------------–>
-% VecKCoLinear CN = K x AB #1 pt #2 pt #3 pt #4 nb #5 pt result
-% il faut modifier cette macro : on supprime #3 pour la colinéarité
-% Il suffit d'utiliser Replicate ou Duplicate coeff dans #1
-% v(CD)=#1 x v(AB) #1 le coeff; #2-->A #3-->B #4-->C
-%<--------------------------------------------------------------------------–>
-\def\tkz at VecKCoLinear[#1](#2,#3,#4){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \pgf at xa=\pgf at x\relax%
- \pgf at ya=\pgf at y\relax%
- \edef\tkz at coeff{\fpeval{#1}}
- \pgfinterruptboundingbox
- \path (#4)--+(\tkz at coeff\pgf at xa,\tkz at coeff\pgf at ya) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-}%
-\def\tkz at VecCoLinear(#1,#2,#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \pgf at xa=\pgf at x\relax%
- \pgf at ya=\pgf at y\relax%
- \pgfinterruptboundingbox
- \path (#3)--+(\pgf at xa,\pgf at ya) coordinate (tkzPointResult);
- \endpgfinterruptboundingbox
-\endgroup
-}%
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,166 +0,0 @@
- % tkz-obj-lua-points.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-lua-points.tex}
-\makeatletter
-%<--------------------------------------------------------------------------->
-% init def point
-%<--------------------------------------------------------------------------->
-% tkzDefPoint
-%<--------------------------------------------------------------------------->
-% macros complémentaires pour def point
-%<--------------------------------------------------------------------------->
-\def\tkz at parsecoordinate#1{%
-\tkz at getseparator#1,\@nil
-\iftkz at polar
- \tkz at getfrompolar#1\@nil
-\else
- \tkz at getfromcart#1\@nil
-\fi
-}
-\def\tkz at getseparator#1,#2\@nil{%
-\ifx\tkzempty#2\tkzempty%
- \tkz at polartrue
-\else
- \tkz at polarfalse
-\fi
-}
-\def\tkz at getfrompolar#1:#2\@nil{%
-\edef\tkz at a{\fpeval{#1}}
-\edef\tkz at r{\fpeval{#2}}
-\xdef\tkz at polarrad{\tkz at r}
-\xdef\tkz at polarangle{\tkz at a}
-}
-\def\tkz at getfromcart#1,#2\@nil{%
-\edef\tkz at x{\fpeval{#1}}
-\edef\tkz at y{\fpeval{#2}}
-\xdef\tkz at absc{\tkz at x}
-\xdef\tkz at ord{\tkz at y}
-}
-%<--------------------------------------------------------------------------->
-% options pour point definition
-%<--------------------------------------------------------------------------->
-\pgfkeys{/tkzPt/.cd,
- polar/.is if = tkz at pt@polar,
- polar/.default = true,
- polar = false
-}
-%<--------------------------------------------------------------------------->
-% tkz at ptStar
-%<--------------------------------------------------------------------------->
-\def\tkz at ptStar[#1](#2,#3)#{%
-\pgfkeys{/tkzPt/.cd, polar = false}
-\pgfqkeys{/tkzPt}{#1}
-\iftkz at pt@polar%
- \edef\tkz at x{\fpeval{#3*cosd(#2)}}
- \edef\tkz at y{\fpeval{#3*sind(#2)}}
-\else
- \edef\tkz at x{\fpeval{#2}}
- \edef\tkz at y{\fpeval{#3}}
-\fi
-\edef\tkzpt at xa{\tkz at Dec{(\tkz at x-(\tkz at init@xorigine))/\tkz at init@xstep}}
-\edef\tkzpt at ya{\tkz at Dec{(\tkz at y-(\tkz at init@yorigine))/\tkz at init@ystep}}
-\tkz at 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 at ifnextchar[{\tkz at DefPoint}{\tkz at DefPoint[]}}
-
-\def\tkz at DefPoint[#1](#2)#{%
-\tkz at parsecoordinate{#2}
-\iftkz at polar
- \tkz at ptStar[polar](\tkz at polarangle,\tkz at polarrad){tkz at coord@temp}
-\else
- \tkz at ptStar[](#2){tkz at coord@temp}
-\fi
-\tkz at DefPointEnd[#1]
-}%
-\def\tkz at DefPointEnd[#1]#2{\coordinate[#1] (#2) at (tkz at coord@temp);}
-%<--------------------------------------------------------------------------->
-% tkzDefPoints
-%<--------------------------------------------------------------------------->
-\def\tkzDefPoints{\pgfutil at ifnextchar[{\tkz at DefPoints}{\tkz at DefPoints[]}}
-\def\tkz at DefPoints[#1]#2{%
- \begingroup
- \def\tkz at parenthesis@for at err{(}%
- \def\tkz at maybe@parenthesis{#2}%
- \ifx\tkz at maybe@parenthesis\tkz at parenthesis@for at err
- \PackageError{tkz-base}{Syntax error use {} instead of ()}{You need to use {} instead of ()}%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\tkz at absorb@bad at arg}%
- {\foreach \ptx/\pty/\name in {#2}{\tkzDefPoint[#1](\ptx,\pty){\name}}%
- \endgroup}%
-}
-\def\tkz at absorb@bad at arg#1){\endgroup}
-%<--------------------------------------------------------------------------->
-\def\tkz at node#1{ \pgfinterruptboundingbox
-\path[coordinate](\tkzpt at xa,\tkzpt at ya) coordinate(#1);
- \endpgfinterruptboundingbox}
-%<--------------------------------------------------------------------------->
-\def\tkzRenamePoint(#1)#2{\coordinate (#2) at (#1);}
-\def\tkz at RenamePointEnd[#1]#2{\coordinate[#1] (#2) at (\tkz at ax,\tkz at 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\tkzGetThirdPoint#1{\coordinate (#1) at (tkzThirdPointResult);}
-\def\tkzDefShiftPointCoord[#1](#2)#3{%
- \begin{scope}[shift={(#1)}]
- \coordinate (#3) at (#2);
- \end{scope}
- }%
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------->
-% tkzDefShiftPoint
-%<--------------------------------------------------------------------------->
-\def\tkzDefShiftPoint[#1](#2)#3{%
- \tkz@@extractxy{#1}
- \tkz at ax\pgf at x %
- \tkz at ay\pgf at y %
-\begin{scope}[shift={(\tkz at ax,\tkz at ay)}]
- \coordinate (#3) at (#2);
-\end{scope}
-}
-%<--------------------------------------------------------------------------->
-% 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 ?? todo
-%<--------------------------------------------------------------------------->
-\def\tkzGetPointCoord(#1)#2{%
-\begingroup
- \pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
- \pgfmathparse{\pgf at sys@tonumber{\pgf at x}/28.45274}
- \global\let\tkzresultx\pgfmathresult
- \global\expandafter\edef\csname #2x\endcsname{\tkzresultx}%
- \pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
- \pgfmathparse{\pgf at sys@tonumber{\pgf at y}/28.45274}
- \global\let\tkzresulty\pgfmathresult
- \global\expandafter\edef\csname #2y\endcsname{\tkzresulty}
-\endgroup
-}
-\def\tkz@@extractxy#1{%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
-}
-\let\tkzGetPointxy\tkzGetPointCoord
-\makeatother
-\endinput
\ No newline at end of file
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-obj-eu-BB.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-obj-eu-BB.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
\def\tkzShowBB{\pgfutil at ifnextchar[{\tkz at ShowBB}{\tkz at ShowBB[]}}
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-angles.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-angles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
%<--------------------------------------------------------------------------–>
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-base.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-base.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
\global\let\tkz at tmp@xa\tkz at init@xmin% modif 2016
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-colors}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-colors}
\makeatletter
%<------ Initialisation of the colors with tkzSetUpColors ----------------->
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -13,9 +13,9 @@
% The Current Maintainer of this work is Alain Matthes.
% utf8 encoding
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-intersections.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-intersections.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% intersection de deux lignes
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-angles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-angles.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-angles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,102 @@
+% tkz-tools-lua-angles.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-lua-angles.tex}
+\makeatletter
+\def\tkzmathrotatepointaround#1#2#3{%
+ \pgf at process{%
+ \pgf at process{#1}%
+ \pgf at xc=\pgf at x%
+ \pgf at yc=\pgf at y%
+ \pgf at process{#2}%
+ \pgf at xa\pgf at x%
+ \pgf at ya\pgf at y%
+ \pgf at xb\pgf at x%
+ \pgf at yb\pgf at y%
+ \pgf at x=\pgf at xc%
+ \pgf at y=\pgf at yc%
+ \advance\pgf at x-\pgf at xa%
+ \advance\pgf at y-\pgf at ya%
+ \pgfmathsetmacro\angle{#3}%
+ \edef\sineangle{\tkz at Dec{\tkz at Sin{\tkz at Rad{\angle}}}}%
+ \edef\cosineangle{\tkz at Dec{\tkz at Cos{\tkz at Rad{\angle}}}}%
+ \pgf at xa\cosineangle\pgf at x%
+ \advance\pgf at xa-\sineangle\pgf at y%
+ \pgf at ya\sineangle\pgf at x%
+ \advance\pgf at ya\cosineangle\pgf at y%
+ \pgf at x\pgf at xb%
+ \pgf at y\pgf at yb%
+ \advance\pgf at x\pgf at xa%
+ \advance\pgf at y\pgf at ya%
+ }%
+}
+
+%<-------------------------------------------------------------------------->
+% Angles
+%<-------------------------------------------------------------------------->
+\def\tkzmathanglebetweenpoints#1#2{
+\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}%
+\edef\tkzax{\strip at pt\pgf at x}%
+\edef\tkzay{\strip at pt\pgf at y}%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}%
+\edef\tkzbx{\strip at pt\pgf at x}%
+\edef\tkzby{\strip at pt\pgf at y}%
+\edef\tkz at tmp{\tkz at Angle{\tkzax}{\tkzay}{\tkzbx}{\tkzby}}
+\edef\pgfmathresult{\tkz at Dec{\tkz at Round{\tkz at tmp}{2}}}
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% thanks karu : http://tex.stackexchange.com/questions/151667/tkzgetangle-strange-behavior/196224#196224
+% \tkzGetAngle strange behavior
+% defines \tkz at FirstAngle and \tkz at SecondAngle sens trigo
+%<--------------------------------------------------------------------------–>
+
+\def\tkzNormalizeAngle(#1,#2){%
+\directlua{angleA, angleB = normalize(#1,#2)
+token.set_macro("tkz at FirstAngle", angleA)
+token.set_macro("tkz at SecondAngle", angleB)
+}}
+%<--------------------------------------------------------------------------–>
+% Angle
+% Recherche l'angle formé par #1 et #2 par rapport à l'horizontale
+%<--------------------------------------------------------------------------–>
+\def\tkzFindSlopeAngle(#1,#2){%
+\begingroup
+ \tkzmathanglebetweenpoints{#1}{#2}
+ \global\let\tkzAngleResult\pgfmathresult
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Angle avec trois nodes
+%<--------------------------------------------------------------------------–>
+\def\tkzFindAngle(#1,#2,#3){% new code 2016
+\begingroup
+ \tkzFindSlopeAngle(#2,#1)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at SecondAngle}
+ \tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
+ \edef\tkz at Angle{\fpeval{\tkz at SecondAngle-\tkz at FirstAngle}}
+ \global\let\tkzAngleResult\tkz at Angle
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Find angle
+%<--------------------------------------------------------------------------–>
+\def\tkzGetAngle#1{%
+ \global\expandafter\edef\csname #1\endcsname{\tkzAngleResult}
+}
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-angles.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-base.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-base.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-base.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,89 @@
+% tkz-tools-lua-base.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-lua-base.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+\global\let\tkz at tmp@xa\tkz at init@xmin% modif 2016
+\global\let\tkz at tmp@xb\tkz at init@xmax% modif 2016
+\global\let\tkz at tmp@ya\tkz at init@ymin% modif 2016
+\global\let\tkz at tmp@yb\tkz at init@ymax% modif 2016
+%<--------------------------------------------------------------------------–>
+\pgfkeys{
+ /tkzInit/.cd,
+ xmin/.store in = \tkz at init@xmin,
+ xmax/.store in = \tkz at init@xmax,
+ xstep/.store in = \tkz at init@xstep,
+ ymin/.store in = \tkz at init@ymin,
+ ymax/.store in = \tkz at init@ymax,
+ ystep/.store in = \tkz at init@ystep,
+ NO/.is if = tkz at init@NO,
+ NO/.default = true,
+ xmin = 0,
+ xmax = 10,
+ xstep = 1,
+ ymin = 0,
+ ymax = 10,
+ ystep = 1,
+ NO = false
+ }
+
+\def\tkzInit{\pgfutil at ifnextchar[{\tkz at Init}{\tkz at Init[]}}
+\def\tkz at Init[#1]{%
+ \pgfqkeys{/tkzInit}{#1}
+ \ifx\tkzfctloaded\undefined
+ \else
+ \tkz at tkzf@fct=0 % only if tkz-fct loaded
+ \fi
+ \xdef\tkz at init@xorigine{0}
+ \xdef\tkz at init@yorigine{0}
+ \edef\@xsgmin{\fpeval{sign(\tkz at init@xmin)}}
+ \edef\@xsgmax{\fpeval{sign(\tkz at init@xmax)}}
+ \edef\@ysgmin{\fpeval{sign(\tkz at init@ymin)}}
+ \edef\@ysgmax{\fpeval{sign(\tkz at init@ymax)}}
+ \let\tkz at tmp@xa\tkz at init@xmin %modif 2016
+ \let\tkz at tmp@xb\tkz at init@xmax %modif 2016
+ \let\tkz at tmp@ya\tkz at init@ymin %modif 2016
+ \let\tkz at tmp@yb\tkz at init@ymax %modif 2016
+ \tkz at init@NOfalse
+ \ifx\@xsgmin\@xsgmax \tkz at init@NOtrue \fi
+ \ifx\@ysgmin\@ysgmax \tkz at init@NOtrue \fi
+ \iftkz at init@NO%
+ \ifx\@xsgmin\@xsgmax
+ \edef\tkz at init@xmax{\tkz at Dec{\tkz at init@xmax-(\tkz at init@xmin)}}
+ \edef\tkz at init@xorigine{\tkz at init@xmin}
+ \edef\tkz at init@xmin{0}
+ \fi
+ \ifx\@ysgmin\@ysgmax
+ \edef\tkz at init@ymax{\tkz at Dec{\tkz at init@ymax-(\tkz at init@ymin)}}
+ \edef\tkz at init@yorigine{\tkz at init@ymin}
+ \edef\tkz at init@ymin{0}
+ \fi
+ \fi
+ \edef\tkz at xa{\tkz at Dec{\tkz at init@xmin/\tkz at init@xstep}}
+ \edef\tkz at xb{\tkz at Dec{\tkz at init@xmax/\tkz at init@xstep}}
+ \edef\tkz at ya{\tkz at Dec{\tkz at init@ymin/\tkz at init@ystep}}
+ \edef\tkz at yb{\tkz at Dec{\tkz at init@ymax/\tkz at init@ystep}}
+ \tkz at getdecimal{\tkz at init@xstep} % amélioration nb dec et integer
+ \xdef\tkz at init@xdec{\number\c at pgfmath@countb}
+ \tkz at getdecimal{\tkz at init@ystep}
+ \xdef\tkz at init@ydec{\number\c at pgfmath@countb}
+}%
+\def\tkzAddName{\pgfutil at ifnextchar[{\tkz at AddName}{\tkz at AddName[]}}
+\def\tkz at AddName[#1]#2{%
+\node[above left,#1] at (\pgf at path@lastx,\pgf at path@lasty){#2};
+}%
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-base.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-intersections.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-intersections.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-intersections.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,525 @@
+% tkz-tools-lua-intersections.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status “maintained”.
+%
+% The Current Maintainer of this work is Alain Matthes.
+% utf8 encoding
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-lua-intersections.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% intersection de deux lignes
+%<--------------------------------------------------------------------------–>
+\def\tkzInterLL(#1,#2)(#3,#4){% méthode avec xfp
+\tkz at InterLL(#1,#2)(#3,#4){tkzPointResult}
+}
+
+\def\tkz at InterLL(#1,#2)(#3,#4)#5{%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}%
+\tkz at ax\pgf at x%
+\tkz at ay\pgf at y%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}
+\tkz at bx\pgf at x%
+\tkz at by\pgf at y%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}%
+\tkz at cx\pgf at x%
+\tkz at cy\pgf at y%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#4}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#4}{center}}%
+\tkz at dx\pgf at x%
+\tkz at dy\pgf at y%
+\edef\tkzax{\strip at pt\tkz at ax}%
+\edef\tkzay{\strip at pt\tkz at ay}%
+\edef\tkzbx{\strip at pt\tkz at bx}%
+\edef\tkzby{\strip at pt\tkz at by}%
+\edef\tkzcx{\strip at pt\tkz at cx}%
+\edef\tkzcy{\strip at pt\tkz at cy}%
+\edef\tkzdx{\strip at pt\tkz at dx}%
+\edef\tkzdy{\strip at pt\tkz at dy}%
+\edef\tkz at deltax{\tkz at Dec{(\tkzax-(\tkzbx))/(28.45274)}}
+\edef\tkz at deltaxx{\tkz at Dec{(\tkzcx-(\tkzdx))/(28.45274)}}
+\edef\tkz at deltay{\tkz at Dec{(\tkzay-(\tkzby))/(28.45274)}}
+\edef\tkz at deltayy{\tkz at Dec{(\tkzcy-(\tkzdy))/(28.45274)}}
+\edef\tkz at deltaxy{\tkz at Dec{((\tkzax*\tkzby)-(\tkzay*\tkzbx))/(809.55841)}}
+\edef\tkz at deltaxxyy{\tkz at Dec{((\tkzcx*\tkzdy)-(\tkzcy*\tkzdx))/(809.55841)}}
+\edef\tkz at div{\tkz at Dec{(\tkz at deltax*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxx)}}
+\edef\tkz at numx{\tkz at Dec{(\tkz at deltaxy*\tkz at deltaxx)-(\tkz at deltax*\tkz at deltaxxyy)}}
+\edef\tkz at numy{\tkz at Dec{(\tkz at deltaxy*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxxyy)}}
+\edef\tkz at xs{\tkz at Dec{\tkz at numx/\tkz at div}}
+\edef\tkz at ys{\tkz at Dec{\tkz at numy/\tkz at div}}
+\edef\tkz at xs{\tkz at Round{\tkz at xs}{5}}
+\edef\tkz at ys{\tkz at Round{\tkz at ys}{5}}
+\path[coordinate](\tkz at xs,\tkz at ys) coordinate (#5);
+}
+
+
+% méthode with coordinates
+\def\tkzInterLLxy(#1,#2,#3,#4)(#5,#6,#7,#8){%
+%\path (intersection of #1--#2 and #3--#4) coordinate(#5);%
+\tkz at ax#1%
+\tkz at ay#2%
+\tkz at bx#3%
+\tkz at by#4%
+\tkz at cx#5%
+\tkz at cy#6%
+\tkz at dx#7%
+\tkz at dy#8%
+\edef\tkzax{\strip at pt\tkz at ax}%
+\edef\tkzay{\strip at pt\tkz at ay}%
+\edef\tkzbx{\strip at pt\tkz at bx}%
+\edef\tkzby{\strip at pt\tkz at by}%
+\edef\tkzcx{\strip at pt\tkz at cx}%
+\edef\tkzcy{\strip at pt\tkz at cy}%
+\edef\tkzdx{\strip at pt\tkz at dx}%
+\edef\tkzdy{\strip at pt\tkz at dy}%
+\edef\tkz at deltax{\tkz at Dec{(\tkzax-(\tkzbx))/(28.45274)}}
+\edef\tkz at deltaxx{\tkz at Dec{(\tkzcx-(\tkzdx))/(28.45274)}}
+\edef\tkz at deltay{\tkz at Dec{(\tkzay-(\tkzby))/(28.45274)}}
+\edef\tkz at deltayy{\tkz at Dec{(\tkzcy-(\tkzdy))/(28.45274)}}
+\edef\tkz at deltaxy{\tkz at Dec{((\tkzax*\tkzby)-(\tkzay*\tkzbx))/(809.55841)}}
+\edef\tkz at deltaxxyy{\tkz at Dec{((\tkzcx*\tkzdy)-(\tkzcy*\tkzdx))/(809.55841)}}
+\edef\tkz at div{\tkz at Dec{(\tkz at deltax*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxx)}}
+\edef\tkz at numx{\tkz at Dec{(\tkz at deltaxy*\tkz at deltaxx)-(\tkz at deltax*\tkz at deltaxxyy)}}
+\edef\tkz at numy{\tkz at Dec{(\tkz at deltaxy*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxxyy)}}
+\edef\tkz at xs{\tkz at Dec{\tkz at numx/\tkz at div}}
+\edef\tkz at ys{\tkz at Dec{\tkz at numy/\tkz at div}}
+\edef\tkz at xs{\tkz at Round{\tkz at xs}{5}}
+\edef\tkz at ys{\tkz at Round{\tkz at ys}{5}}
+\path[coordinate](\tkz at xs,\tkz at ys) coordinate (tkzPointResult);
+}
+
+%<--------------------------------------------------------------------------–>
+% intersection de Ligne Cercle rayon connu
+%<--------------------------------------------------------------------------–>
+% /*
+% Calculate the intersection of a ray and a sphere
+% The line segment is defined from p1 to p2
+% The sphere is of radius r and centered at sc
+% There are potentially two points of intersection given by
+% p = p1 + mu1 (p2 - p1)
+% p = p1 + mu2 (p2 - p1)
+% Return FALSE if the ray doesn't intersect the sphere.
+% */
+% int RaySphere(XYZ p1,XYZ p2,XYZ sc,double r,double *mu1,double *mu2)
+% {
+% double a,b,c;
+% double bb4ac;
+% XYZ dp;
+%
+% dp.x = p2.x - p1.x;
+% dp.y = p2.y - p1.y;
+% dp.z = p2.z - p1.z;
+% a = dp.x * dp.x + dp.y * dp.y + dp.z * dp.z;
+% b = 2 * (dp.x * (p1.x - sc.x) + dp.y * (p1.y - sc.y) + dp.z * (p1.z - sc.z));
+% c = sc.x * sc.x + sc.y * sc.y + sc.z * sc.z;
+% c += p1.x * p1.x + p1.y * p1.y + p1.z * p1.z;
+% 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) {
+% *mu1 = 0;
+% *mu2 = 0;
+% return(FALSE);
+% }
+%
+% *mu1 = (-b + sqrt(bb4ac)) / (2 * a);
+% *mu2 = (-b - sqrt(bb4ac)) / (2 * a);
+%
+% return(TRUE);
+% }
+%<---------- test ------------------------------------------------------–>
+\def\tkzTestInterLC(#1,#2)(#3,#4){%
+\begingroup
+\tkz at Projection(#1,#2)(#3){tkz at pth}% distance centre à la ligne
+\tkz@@CalcLength(#3,tkz at pth){tkz at mathLen}%
+\tkz@@CalcLength(#3,#4){tkzLengthResult}%calcul du rayon
+\ifdim\tkz at mathLen pt>\tkzLengthResult pt\relax%
+\global\tkzFlagLCfalse
+\else
+\global\tkzFlagLCtrue
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkz at numlc{0}
+\pgfkeys{/linecircle/.cd,
+ node/.code = \def\tkz at numlc{0},
+ R/.code = \def\tkz at numlc{1},
+ with nodes/.code = \def\tkz at numlc{2},
+ common/.store in = \tkz at common,
+ common = {},
+ near/.is if = tkz at near,
+ near/.default = true,
+ near = false,
+ next to/.store in = \tkz at nextto,
+ next to/.initial = {},
+ next/.default = {},
+ next to = {},
+ next to/.value required,
+ node
+ }
+%<--------------------------------------------------------------------------–>
+\def\tkzInterLC{\pgfutil at ifnextchar[{\tkz at InterLC}{\tkz at InterLC[]}}
+\def\tkz at InterLC[#1](#2,#3)(#4,#5){%
+\begingroup
+\pgfqkeys{/linecircle}{#1}
+ \pgfinterruptboundingbox
+\ifcase\tkz at numlc%
+ % first case 0
+ \tkz@@CalcLength(#4,#5){tkzLengthResult}
+ \tkzInterLCR(#2,#3)(#4,\tkzLengthResult pt){tkzFirstPointResult}%
+ {tkzSecondPointResult}
+\or% 1
+ \tkzInterLCR(#2,#3)(#4,#5 cm){tkzFirstPointResult}
+ {tkzSecondPointResult}%
+\or% 2
+ \tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}%
+ {tkzSecondPointResult}%
+\fi
+\iftkz at 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
+\else
+ \ifx\tkz at common\tkzutil at empty
+ \ifx\tkz at nextto\tkzutil at empty
+ \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4)
+ \tkzGetAngle{tkz at an}
+ \ifdim\tkz at an pt<180 pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+ \else
+ \tkz@@CalcLength(\tkz at nextto,tkzFirstPointResult){tkzLengthFirst}
+ \tkz@@CalcLength(\tkz at 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 at common,tkzSecondPointResult){tkz at mathLen}
+ \ifdim\tkz at mathLen pt<1pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+ \fi
+\fi%near
+\endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzInterLCR(#1,#2)(#3,#4)#5#6{%
+\begingroup
+\tkz at radi=#4%
+\tkz@@extractxy{#3}
+\tkz at bx =\pgf at x\relax%
+\tkz at by =\pgf at y\relax%
+\tkz at Projection(#1,#2)(#3){tkz at pth}
+\tkz@@CalcLength(#3,tkz at pth){tkz at mathLen}
+ \ifdim\tkz at mathLen pt<0.05pt\relax%
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz at ax=\pgf at x%
+ \tkz at ay=\pgf at y%
+ \pgfpointborderellipse{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at radi}{\tkz at radi}}
+ \tkz at ax=\pgf at x\relax%
+ \tkz at ay=\pgf at y\relax%
+ \advance\tkz at bx by\tkz at ax\relax%
+ \advance\tkz at by by\tkz at ay\relax%
+ \pgfcoordinate{#6}{\pgfqpoint{\tkz at bx}{\tkz at by}}
+ \tkzCSym(#3)(#6){#5}
+ \else
+ \edef\pgfmathresult{\fpeval{\tkz at mathLen/\tkz at radi}}
+ % \edef\tkz at angle{\fpeval{acosd(\pgfmathresult)}}
+ \pgfmathacos@{\pgfmathresult}%
+ \let\tkz at angle\pgfmathresult%
+ \pgfpointdiff{\pgfpointanchor{#3}{center}}%
+ {\pgfpointanchor{tkz at pth}{center}}%
+ \tkz at ax=\pgf at x%
+ \tkz at ay=\pgf at y%
+ \pgfpointborderellipse{\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\pgfpoint{\tkz at radi}{\tkz at radi}}
+ \tkz at ax =\pgf at x\relax%
+ \tkz at ay =\pgf at y\relax%
+ \advance\tkz at bx by\tkz at ax\relax%
+ \advance\tkz at by by\tkz at ay\relax%
+ \tkz@@extractxy{#3}
+ \tkz at ax =\pgf at x\relax%
+ \tkz at ay =\pgf at y\relax%
+ \tkz@@extractxy{tkz at pth}
+ \pgfmathrotatepointaround{\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {\tkz at angle}
+ \pgfcoordinate{#5}{\pgfqpoint{\pgf at x}{\pgf at y}}
+ \pgfmathrotatepointaround{\pgfpoint{\tkz at bx}{\tkz at by}}%
+ {\pgfpoint{\tkz at ax}{\tkz at ay}}%
+ {-\tkz at angle}
+ \pgfcoordinate{#6}{\pgfqpoint{\pgf at x}{\pgf at y}}
+
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% intersection de Ligne Cercle
+% #4 center #5 point sur le cercle
+%<--------------------------------------------------------------------------–>
+% \def\tkzInterLC(#1,#2)(#3,#4)#5#6{%
+% \begingroup
+% \tkz@@CalcLength(#3,#4){tkz at rad}
+% \tkzInterLCR(#1,#2)(#3,\tkz at rad pt){#5}{#6}
+% \endgroup
+% }
+%<--------------------------------------------------------------------------–>
+% intersection de Ligne Cercle rayon inconnu
+%<--------------------------------------------------------------------------–>
+\def\tkzInterLCWithNodes(#1,#2)(#3,#4,#5)#6#7{%
+\begingroup
+ \tkz@@CalcLength(#4,#5){tkz at radius}
+ \tkzInterLCR(#1,#2)(#3,\tkz at radius pt){#6}{#7}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Intersection of 2 circles
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% méthode
+% /* circle_circle_intersection() *
+% * Determine the points where 2 circles in a common plane intersect.
+% *
+% * int circle_circle_intersection(
+% * // center and radius of 1st circle
+% * double x0, double y0, double r0,
+% * // center and radius of 2nd circle
+% * double x1, double y1, double r1,
+% * // 1st intersection point
+% * // 2nd intersection point
+% *
+% * This is a public domain work. 3/26/2005 Tim Voght
+% *
+% int circle_circle_intersection(double x0, double y0, double r0,
+% double x1, double y1, double r1,
+% double *xi, double *yi,
+% double *xi_prime, double *yi_prime)
+% {
+% double a, dx, dy, d, h, rx, ry;
+% double x2, y2;
+%
+% /* dx and dy are the vertical and horizontal distances between
+% * the circle centers.
+% */
+% dx = x1 - x0;
+% dy = y1 - y0;
+%
+% /* Determine the straight-line distance between the centers. */
+% //d = sqrt((dy*dy) + (dx*dx));
+% d = hypot(dx,dy); // Suggested by Keith Briggs
+%
+% /* Check for solvability. */
+% if (d > (r0 + r1))
+% {
+% /* no solution. circles do not intersect. */
+% return 0;
+% }
+% if (d < fabs(r0 - r1))
+% {
+% /* no solution. one circle is contained in the other */
+% return 0;
+% }
+%
+% /* 'point 2' is the point where the line through the circle
+% * intersection points crosses the line between the circle
+% * centers.
+% */
+%
+% /* Determine the distance from point 0 to point 2. */
+% a = ((r0*r0) - (r1*r1) + (d*d)) / (2.0 * d) ;
+%
+% /* Determine the coordinates of point 2. */
+% x2 = x0 + (dx * a/d);
+% y2 = y0 + (dy * a/d);
+%
+% /* Determine the distance from point 2 to either of the
+% * intersection points.
+% */
+% h = sqrt((r0*r0) - (a*a));
+%
+% /* Now determine the offsets of the intersection points from
+% * point 2.
+% */
+% rx = -dy * (h/d);
+% ry = dx * (h/d);
+%
+% /* Determine the absolute intersection points. */
+% *xi = x2 + rx;
+% *xi_prime = x2 - rx;
+% *yi = y2 + ry;
+% *yi_prime = y2 - ry;
+%
+% return 1;
+% }
+%<--------------------------------------------------------------------------–>
+% Intersection de deux cercles
+%<--------------------------------------------------------------------------–>
+%<---------- test ------------------------------------------------------–>
+% test avec des nodes R-r <= d <= R+r
+\def\tkzTestInterCC(#1,#2)(#3,#4){%
+\begingroup
+\tkz@@CalcLength(#1,#3){tkz at mathLen}% distance entre les centres
+\tkz@@CalcLength(#2,#1){tkz at rA}%calcul du rayon
+\tkz@@CalcLength(#4,#3){tkz at rB}%calcul du rayon
+% test if d <= rA + rB ?
+\edef\tkz at rS{\fpeval{\tkz at rA+\tkz at rB}}
+\ifdim\tkz at mathLen pt > \tkz at rS pt\relax%
+\global\tkzFlagCCfalse
+\else
+% now test if d>= rA - rB or rB-rA
+ \ifdim \tkz at rA pt > \tkz at rB pt\relax%
+ \edef\tkz at rD{\fpeval{\tkz at rA-\tkz at rB}}
+ \else
+ \edef\tkz at rD{\fpeval{\tkz at rB-\tkz at rA}}
+ \fi
+\ifdim \tkz at rD pt > \tkz at mathLen pt\relax%
+ \global\tkzFlagCCfalse
+\else
+\global\tkzFlagCCtrue
+\fi
+\fi
+\endgroup
+}
+
+\def\tkz at numcc{0}
+\pgfkeys{
+/circlecircle/.cd,
+ node/.code = \def\tkz at numcc{0},
+ R/.code = \def\tkz at numcc{1},
+ with nodes/.code = \def\tkz at numcc{2},
+ common/.store in = \tkz at common,
+ common = {},
+ node
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzInterCC{\pgfutil at ifnextchar[{\tkz at InterCC}{\tkz at InterCC[]}}
+\def\tkz at InterCC[#1](#2,#3)(#4,#5){%
+\begingroup
+\pgfqkeys{/circlecircle}{#1}
+\ifcase\tkz at numcc%
+ % first case 0
+ \tkz at save@length
+ \tkz@@CalcLengthcm(#2,#3){tkz at rayA}
+ \tkz@@CalcLengthcm(#4,#5){tkz at rayB}
+ \tkz at restore@length
+\tkzInterCCR(#2,\tkz at rayA)(#4,\tkz at rayB){tkzFirstPointResult}{tkzSecondPointResult}
+ \or% 1
+ \tkzInterCCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}%
+ \or%2
+ \tkzInterCCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}
+\fi
+ \ifx\tkz at common\tkzutil at empty
+ \tkzFindAngle(#2,tkzFirstPointResult,#4) \tkzGetAngle{tkz at an}
+ \ifdim\tkz at an pt<180 pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+ \else
+\tkz@@CalcLength(\tkz at common,tkzSecondPointResult){tkz at mathLen}
+ \ifdim\tkz at mathLen pt<0.05pt\relax%
+ \else
+ \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
+ \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
+ \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
+ \fi
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+
+\def\tkzInterCCR(#1,#2)(#3,#4)#5#6{%
+\begingroup
+\pgfinterruptboundingbox
+\tkz at save@length
+\tkz@@CalcLength(#1,#3){tkz at dd}
+\tkz at restore@length
+\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
+\tkz at ax\pgf at x %
+\tkz at ay\pgf at y %
+\edef\tkzcax{\strip at pt\tkz at ax}%
+\edef\tkzcay{\strip at pt\tkz at ay}%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}
+\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}
+\tkz at bx\pgf at x %
+\tkz at by\pgf at y %
+\edef\tkzcbx{\strip at pt\tkz at bx}%
+\edef\tkzcby{\strip at pt\tkz at by}%
+\tkz at cx#2cm %
+\tkz at cy#4cm %
+\edef\tkzccx{\strip at pt\tkz at cx}%
+\edef\tkzccy{\strip at pt\tkz at cy}%
+\edef\tkz at aa{\tkz at Dec{((\tkzccx+\tkzccy)/(2*\tkz at dd))*(\tkzccx-(\tkzccy))+\tkz at dd/2}}
+\edef\tkz at xx{\tkz at Dec{\tkzcax+\tkz at aa/\tkz at dd*(\tkzcbx - (\tkzcax))}}
+\edef\tkz at yy{\tkz at Dec{\tkzcay+\tkz at aa/\tkz at dd*(\tkzcby - (\tkzcay))}}
+\path[coordinate](\tkz at xx pt,\tkz at yy pt) coordinate (tkzRadialCenter);
+\edef\tkz at hh{\tkz at Abs{(\tkzccx+\tkz at aa)*(\tkzccx-(\tkz at aa))}}
+\edef\tkz at hh{\tkz at Dec{\tkz at Sqrt{\tkz at hh}}}
+ \edef\tkz at rx{\tkz at Dec{\tkz at hh / \tkz at dd * (\tkzcay - (\tkzcby))}}
+\edef\tkz at ry{\tkz at Dec{\tkz at hh / \tkz at dd * (\tkzcbx - (\tkzcax))}}
+\edef\tkz at xs{\tkz at Dec{\tkz at xx + \tkz at rx}}
+\edef\tkz at ys{\tkz at Dec{\tkz at yy + \tkz at ry}}
+\path[coordinate](\tkz at xs pt,\tkz at ys pt) coordinate (#5);
+\edef\tkz at xss{\tkz at Dec{\tkz at xx - \tkz at rx}}
+\edef\tkz at yss{\tkz at Dec{\tkz at yy - \tkz at ry}}
+\path[coordinate](\tkz at xss pt,\tkz at yss pt) coordinate (#6);
+\endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% #2 node #3 node #4 node #5 node
+% \def\tkzInterCC(#1,#2)(#3,#4)#5#6{%
+% \begingroup
+% \tkz@@CalcLength(#1,#2){tkz at rayA}
+% \tkz@@CalcLength(#3,#4){tkz at rayB}
+% \tkzInterCCR(#1,\tkz at rayA pt)(#3,\tkz at rayB pt){#5}{#6}
+% \endgroup
+% }
+%<--------------------------------------------------------------------------–>
+% Intersection de deux cercles Avec deux points
+%<--------------------------------------------------------------------------–>
+% la première variante devrait être #2 #3 avec #4 #5
+\def\tkzInterCCWithNodes(#1,#2,#3)(#4,#5,#6)#7#8{%
+\begingroup
+ \tkz@@CalcLengthcm(#2,#3){tkz at rayA}
+ \tkz@@CalcLengthcm(#5,#6){tkz at rayB}
+ \tkzInterCCR(#1,\tkz at rayA)(#4,\tkz at rayB){#7}{#8}
+\endgroup
+}
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-intersections.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-math.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-math.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-math.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -0,0 +1,310 @@
+% tkz-tools-lua-math.tex
+% Copyright 2023 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-lua-math.tex}
+\makeatletter
+%<-------------------------------------------------------------------------->
+%<-------------------------------------------------------------------------->
+% Lengths
+%<-------------------------------------------------------------------------->
+%<-------------------------------------------------------------------------->
+
+\begin{luacode*}
+ function normalize(angleA,angleB)
+ if angleA > 0 then
+ if angleA > angleB then
+ angleA = angleA - 360
+ end
+ else
+ if angleA > angleB then
+ angleB = angleB + 360
+ end
+ end
+ return angleA, angleB
+ end
+
+ function math.angle(x1, y1, x2, y2)
+ local a = math.deg(math.atan(y2 - y1, x2 - x1))
+ if a < 0 then
+ return a + 360
+ else
+ return a
+ end
+ end
+
+ function tkzop(...)
+ inf = math.huge
+ return ...
+end
+
+function tkzround(nb, ND)
+ local p = 10^(ND or 0)
+ return math.floor(nb * p + 0.5) / p
+end
+\end{luacode*}
+
+\def\tkz at Dec#1{%
+ \directlua{tex.print(string.format('\@percentchar.6f',#1))}
+ }
+\def\tkz at Op#1{\directlua{tex.sprint(tostring(tkzop(#1)))}}
+\def\tkz at Log#1{\directlua{tex.sprint(math.log(#1))}}
+\def\tkz at Exp#1{\directlua{tex.sprint(math.exp(#1))}}
+\def\tkz at Sqrt#1{\directlua{tex.sprint(math.sqrt(#1))}}
+\def\tkz at Abs#1{\directlua{tex.sprint(math.abs(#1))}}
+\def\tkz at Pi{\directlua{tex.sprint(math.pi)}}
+\def\tkz at Cos#1{\directlua{tex.sprint(math.cos(#1))}}
+\def\tkz at Sin#1{\directlua{tex.sprint(tostring(math.sin(#1)))}}
+\def\tkz at Tan#1{\directlua{tex.sprint(math.tan(#1))}}
+\def\tkz at Rad#1{\directlua{tex.sprint(math.rad(#1))}}
+\def\tkz at Acos#1{\directlua{tex.sprint(math.acos(#1))}}
+\def\tkz at Asin#1{\directlua{tex.sprint(math.asin(#1))}}
+\def\tkz at Atan#1{\directlua{tex.sprint(math.atan(#1))}}
+\def\tkz at Round#1#2{\directlua{tex.sprint(tostring(tkzround(#1,#2)))}}
+\def\tkz at Angle#1#2#3#4{\directlua{tex.sprint(math.angle(#1,#2,#3,#4))}}
+\def\tkz at Ceil#1{\directlua{tex.sprint(math.ceil(#1))}}
+\def\tkz at Floor#1{\directlua{tex.sprint(math.floor(#1))}}
+\def\tkz at Huge{\directlua{tex.sprint(math.huge)}}
+\def\tkz at Max#1{\directlua{tex.sprint(math.max(#1))}}
+\def\tkz at Min#1{\directlua{tex.sprint(math.min(#1))}}
+\def\tkz at Random#1{\directlua{tex.sprint(math.random(#1))}}
+\def\tkz at veclen#1#2{%
+ \directlua{%
+ tex.print(string.format('\@percentchar.6f',math.sqrt((#1)^2+(#2)^2)))%
+ }%
+}
+\let\tkzSqrt\tkz at Sqrt
+\let\tkzPi\tkz at Pi
+\let\tkzExp\tkz at Exp
+\let\tkzLog\tkz at Log
+\let\tkzSin\tkz at Sin
+\let\tkzCos\tkz at Cos
+
+% \tkzpointnormalised normalise un point A-->A' tq ||v(OA')=1||
+% example
+% \tkzpointnormalised{%
+% \pgfpointdiff{\pgfpointanchor{A}{center}}
+% {\pgfpointanchor{B}{center}}}
+
+% or
+% \pgf at x=1 cm
+% \pgf at y=12 cm
+% \tkzpointnormalised{}
+%<--------------------------------------------------------------------------
+\def\tkzpointnormalised#1{%
+\pgf at process{#1}%
+\pgf at xa=\pgf at x%
+\pgf at ya=\pgf at y%
+\edef\tkz at temp@xa{\strip at pt\pgf at xa}%
+\edef\tkz at temp@ya{\strip at pt\pgf at ya}%
+\edef\tkz at den{\tkz at veclen{\tkz at temp@xa}{\tkz at temp@ya}}
+\edef\tkz at coordx{\tkz at Op{\tkz at temp@xa/\tkz at den}}
+\edef\tkz at coordx{\tkz at Dec{\tkz at Round{\tkz at coordx}{5}}}
+\edef\tkz at coordy{\tkz at Op{\tkz at temp@ya/\tkz at den}}
+\edef\tkz at coordy{\tkz at Dec{\tkz at Round{\tkz at coordy}{5}}}
+\pgf at x = \tkz at coordx pt
+\pgf at y = \tkz at coordy pt
+}
+%\def\tkz at Dec#1{\directlua{tex.print(string.format('\@percentchar.12f',#1))}}
+%<-------------------------------------------------------------------------->
+% restaure and save length
+\def\tkz at save@length{\global\let\tkz at temp@length\tkzLengthResult}%
+\def\tkz at restore@length{\global\let\tkzLengthResult\tkz at temp@length }%
+%<-------------------------------------------------------------------------->
+% \tkzCalcLength Distance entre deux points en pt ou en cm avec xfp
+% \veclen mais avec fp
+% option cm le résultat est en cm sinon en pt with cm=false
+%<-------------------------------------------------------------------------->
+\pgfkeys{tkzcalclen/.cd,
+ cm/.is if = tkzLengthIncm,
+ cm/.default = true,
+ cm = true}
+
+\def\tkzCalcLength{\pgfutil at ifnextchar[{\tkz at CalcLength}{\tkz at CalcLength[]}}
+\def\tkz at CalcLength[#1](#2,#3){%
+\pgfqkeys{/tkzcalclen}{#1}%
+\begingroup
+\tkz@@CalcLength(#2,#3){tkzLengthResult}
+\iftkzLengthIncm
+ \edef\tkz at xfpMathLen{\tkz at Dec{\tkz at Round{\tkzLengthResult/28.45274}{6}}}
+ \global\let\tkzLengthResult\tkz at xfpMathLen
+\fi
+\endgroup
+}%
+
+\def\tkz@@CalcLength(#1,#2)#3{%
+\pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+\edef\tkz at xa{\strip at pt\pgf at x}%
+\edef\tkz at ya{\strip at pt\pgf at y}%
+\edef\tkz at xfpMathLen{\tkz at veclen{\tkz at xa}{\tkz at ya}}
+\global\expandafter\edef\csname #3\endcsname{\tkz at xfpMathLen}
+}
+
+\def\tkz@@CalcLengthcm(#1,#2)#3{%
+\pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+\edef\tkz at xa{\strip at pt\pgf at x}%
+\edef\tkz at ya{\strip at pt\pgf at y}%
+\edef\tkz at xfpMathLen{\tkz at veclen{\tkz at xa}{\tkz at ya}}
+\edef\tkz at xfpMathLen{\tkz at Dec{\tkz at Round{\tkz at xfpMathLen/28.45274}{6}}}
+\global\expandafter\edef\csname #3\endcsname{\tkz at xfpMathLen}
+}
+\def\tkz@@CalcLengthb(#1,#2)#3{%
+\pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+\edef\tkz at xfpMathLen{\fpeval{sqrt((\pgf at x)^2+(\pgf at y)^2)}}
+\edef\tkz at xfpMathLen{\fpeval{round(\tkz at xfpMathLen,6)}}
+\global\expandafter\edef\csname #3\endcsname{\tkz at xfpMathLen}
+}
+%<-------------------------------------------------------------------------->
+\def\tkzGetLength#1{%
+\global\expandafter\edef\csname #1\endcsname{\tkzLengthResult}}
+%<-------------------------------------------------------------------------->
+% \tkzpttocm passage de pt cm div par 28.45274
+%<-------------------------------------------------------------------------->
+\def\tkzpttocm(#1)#2{%
+\begingroup
+ \edef\tkz at mathresult{\tkz at Round{#1/28.45274}{6}}
+ \global\expandafter\edef\csname #2\endcsname{\tkz at mathresult}%
+\endgroup
+}%
+%<-------------------------------------------------------------------------->
+% \tkzcmtopt passage de cm pt mul par 28.45274
+%<--------------------------------------------------------------------------
+\def\tkzcmtopt(#1)#2{%
+\begingroup
+ \edef\tkz at mathresult{\tkz at Round{#1*28.45274}{6}}
+ \global\expandafter\edef\csname #2\endcsname{\tkz at mathresult}%
+\endgroup
+}%
+%<---------------------------------------------------------–>
+ \def\tkzGetResult#1{%
+ \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}}
+%<---------------------------------------------------------–>
+% Schrodinger's cat idea 03/01/20
+\tikzset{veclen/.code={%
+\pgfmathdeclarefunction*{veclen}{2}{%
+\begingroup%
+ \pgfmath at x##1pt\relax%
+ \pgfmath at y##2pt\relax%
+ \pgf at xa=\pgf at x%
+ \pgf at ya=\pgf at y%
+ \edef\tkz at temp@xa{\strip at pt\pgf at xa}%
+ \edef\tkz at temp@ya{\strip at pt\pgf at ya}%
+ \edef\tkz at xfpMathLen{\tkz at veclen{\tkz at temp@xa}{\tkz at temp@ya}}%
+ \pgfmath at returnone\tkz at xfpMathLen pt%
+\endgroup%
+}}}%
+%<---------------------------------------------------------–>
+\def\tkzSwapPoints(#1,#2){
+ \pgfnodealias{tkzPointTmp}{#2}
+ \pgfnodealias{#2}{#1}
+ \pgfnodealias{#1}{tkzPointTmp}}
+%<---------------------------------------------------------–>
+\def\tkzPermute(#1,#2,#3){
+ \tkzURotateWithNodes(#1,#3,#2)(#3) \tkzGetPoint{tkzpt}
+ \tkzURotateWithNodes(#1,#2,#3)(#2) \tkzGetPoint{#2}
+ \tkzSwapPoints(tkzpt,#3)
+}
+%<---------------------------------------------------------–>
+\def\tkzDotProduct(#1,#2,#3){%
+\begingroup
+\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}%
+\edef\tkzax{\strip at pt\pgf at x}%
+\edef\tkzay{\strip at pt\pgf at y}%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}%
+\edef\tkzbx{\strip at pt\pgf at x}%
+\edef\tkzby{\strip at pt\pgf at y}%
+\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}%
+\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}%
+\edef\tkzcx{\strip at pt\pgf at x}%
+\edef\tkzcy{\strip at pt\pgf at y}%
+\edef\tkz at tmp{\tkz at Dec{\tkz at Round{((\tkzbx-(\tkzax))*(\tkzcx-(\tkzax))+(\tkzby-(\tkzay))*(\tkzcy-(\tkzay)))/809.55841}{6}}}
+\global\let\tkzMathResult\tkz at tmp
+\endgroup
+}
+
+% #1,#2 and #3 aligned
+\def\tkzIsLinear(#1,#2,#3){%
+\begingroup
+\tkz@@CalcLengthcm(#1,#2){tkz at la}
+\tkz@@CalcLengthcm(#1,#3){tkz at lb}
+\tkzDotProduct(#1,#2,#3)
+\edef\tkzResult{\tkz at Dec{\tkz at Abs{\tkzMathResult}-(\tkz at la)*(\tkz at lb)}}
+\ifdim \tkzResult pt < 0.01 pt\relax%
+\global\tkzLineartrue
+\else
+\global\tkzLinearfalse
+\fi
+\endgroup
+}
+%<---------------------------------------------------------–>
+% syntax : vec(#2,#1) ortho vec(#3,#1)
+\def\tkzIsOrtho(#1,#2,#3){%
+\begingroup
+\tkzDotProduct(#1,#2,#3)
+\edef\tkzResult{\tkz at Dec{\tkz at Abs{\tkzMathResult}}}
+\ifdim \tkzResult pt < 1 pt\relax%
+\global\tkzOrthotrue
+\else
+\global\tkzOrthofalse
+\fi
+\endgroup
+}
+%<---------------------------------------------------------–>
+% \tkzPowerCircle(M)(O,A) --> OM^2-OA^2
+\def\tkzPowerCircle(#1)(#2,#3){%
+\begingroup
+\tkz@@CalcLengthcm(#2,#3){tkz at ra}
+\tkz@@CalcLengthcm(#1,#2){tkz at om}
+\gdef\tkzMathResult{\tkz at Dec{(\tkz at om)^2-(\tkz at ra)^2}}
+\endgroup
+}
+%<---------------------------------------------------------–>
+\def\tkzDefRadicalAxis(#1,#2)(#3,#4){%
+\begingroup
+\tkz@@CalcLengthcm(#1,#3){tkz at d}
+\tkz@@CalcLengthcm(#1,#2){tkz at ra}
+\tkz@@CalcLengthcm(#3,#4){tkz at rb}
+\edef\tkzMathResult{\tkz at Dec{\tkz at d-(\tkz at ra+\tkz at rb)}}
+\edef\tkzMathResultb{\tkz at Dec{\tkz at Abs{(\tkz at d-(\tkz at ra+\tkz at rb))}}}
+\edef\tkzMathResultc{\tkz at Dec{\tkz at Abs{\tkz at d-\tkz at Abs{(\tkz at ra-(\tkz at rb))}}}}
+\ifdim \tkzMathResultc pt < 0.1 pt\relax%
+ \tkzURotateAngle(#2,90)(#3) \tkzGetPoint{tkzFirstPointResult}
+ \tkzURotateAngle(#2,-90)(#3) \tkzGetPoint{tkzSecondPointResult}
+\else
+\ifdim \tkzMathResultb pt < 0.1 pt\relax%
+ \tkzURotateAngle(#2,90)(#3) \tkzGetPoint{tkzFirstPointResult}
+ \tkzURotateAngle(#2,-90)(#3) \tkzGetPoint{tkzSecondPointResult}
+ \else
+\ifdim \tkzMathResult pt > 1 pt\relax%
+ \tkzURotateAngle(#1,60)(#3) \tkzGetPoint{tkz at aux}
+ \tkzInterCC(#1,#2)(tkz at aux,#1) \tkzGetPoints{tkz at pta}{tkz at ptb}
+ \tkzInterCC(#3,#4)(tkz at aux,#1) \tkzGetPoints{tkz at ptc}{tkz at ptd}
+ \tkzInterLL(tkz at pta,tkz at ptb)(tkz at ptc,tkz at ptd) \tkzGetPoint{tkz at pta}
+ \tkzUProjection(#1,#3)(tkz at pta) \tkzGetPoint{tkz at ptb}
+ \pgfnodealias{tkzSecondPointResult}{tkz at ptb}
+ \pgfnodealias{tkzFirstPointResult}{tkz at pta}
+\else
+\tkzInterCCR(#1,\tkz at ra)(#3,\tkz at rb){tkzFirstPointResult}{tkzSecondPointResult}
+\fi
+\fi
+\fi
+\endgroup
+}
+
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-lua-math.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-math.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-math.tex}
\makeatletter
%<-------------------------------------------------------------------------->
% \tkzpointnormalised#
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-utilities.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-utilities.tex}
\makeatletter
%<------------- % chargement des modules ---------------------------------->
\def\tkz at obj@all{angles,arcs,compass,defcircles,deflines,defpoints,defpointsby,defpointsrnd,defpointswith,polygons,protractor,sectors,show,triangles}%
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-text.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-text.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzText
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-eu-utilities.tex}
+\def\fileversion{5.04c}
+\def\filedate{2023/10/26}
+\typeout{2023/10/26 5.04c tkz-tools-eu-utilities.tex}
\makeatletter
\pgfkeys{/tkzClip/.cd,
space/.store in = {\tkz at CLI@space},
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-angles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-angles.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-angles.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,102 +0,0 @@
-% tkz-tools-lua-angles.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-lua-angles.tex}
-\makeatletter
-\def\tkzmathrotatepointaround#1#2#3{%
- \pgf at process{%
- \pgf at process{#1}%
- \pgf at xc=\pgf at x%
- \pgf at yc=\pgf at y%
- \pgf at process{#2}%
- \pgf at xa\pgf at x%
- \pgf at ya\pgf at y%
- \pgf at xb\pgf at x%
- \pgf at yb\pgf at y%
- \pgf at x=\pgf at xc%
- \pgf at y=\pgf at yc%
- \advance\pgf at x-\pgf at xa%
- \advance\pgf at y-\pgf at ya%
- \pgfmathsetmacro\angle{#3}%
- \edef\sineangle{\tkz at Dec{\tkz at Sin{\tkz at Rad{\angle}}}}%
- \edef\cosineangle{\tkz at Dec{\tkz at Cos{\tkz at Rad{\angle}}}}%
- \pgf at xa\cosineangle\pgf at x%
- \advance\pgf at xa-\sineangle\pgf at y%
- \pgf at ya\sineangle\pgf at x%
- \advance\pgf at ya\cosineangle\pgf at y%
- \pgf at x\pgf at xb%
- \pgf at y\pgf at yb%
- \advance\pgf at x\pgf at xa%
- \advance\pgf at y\pgf at ya%
- }%
-}
-
-%<-------------------------------------------------------------------------->
-% Angles
-%<-------------------------------------------------------------------------->
-\def\tkzmathanglebetweenpoints#1#2{
-\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}%
-\edef\tkzax{\strip at pt\pgf at x}%
-\edef\tkzay{\strip at pt\pgf at y}%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}%
-\edef\tkzbx{\strip at pt\pgf at x}%
-\edef\tkzby{\strip at pt\pgf at y}%
-\edef\tkz at tmp{\tkz at Angle{\tkzax}{\tkzay}{\tkzbx}{\tkzby}}
-\edef\pgfmathresult{\tkz at Dec{\tkz at Round{\tkz at tmp}{2}}}
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% thanks karu : http://tex.stackexchange.com/questions/151667/tkzgetangle-strange-behavior/196224#196224
-% \tkzGetAngle strange behavior
-% defines \tkz at FirstAngle and \tkz at SecondAngle sens trigo
-%<--------------------------------------------------------------------------–>
-
-\def\tkzNormalizeAngle(#1,#2){%
-\directlua{angleA, angleB = normalize(#1,#2)
-token.set_macro("tkz at FirstAngle", angleA)
-token.set_macro("tkz at SecondAngle", angleB)
-}}
-%<--------------------------------------------------------------------------–>
-% Angle
-% Recherche l'angle formé par #1 et #2 par rapport à l'horizontale
-%<--------------------------------------------------------------------------–>
-\def\tkzFindSlopeAngle(#1,#2){%
-\begingroup
- \tkzmathanglebetweenpoints{#1}{#2}
- \global\let\tkzAngleResult\pgfmathresult
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Angle avec trois nodes
-%<--------------------------------------------------------------------------–>
-\def\tkzFindAngle(#1,#2,#3){% new code 2016
-\begingroup
- \tkzFindSlopeAngle(#2,#1)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at SecondAngle}
- \tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
- \edef\tkz at Angle{\fpeval{\tkz at SecondAngle-\tkz at FirstAngle}}
- \global\let\tkzAngleResult\tkz at Angle
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Find angle
-%<--------------------------------------------------------------------------–>
-\def\tkzGetAngle#1{%
- \global\expandafter\edef\csname #1\endcsname{\tkzAngleResult}
-}
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-base.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-base.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-base.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,89 +0,0 @@
-% tkz-tools-lua-base.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-lua-base.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-\global\let\tkz at tmp@xa\tkz at init@xmin% modif 2016
-\global\let\tkz at tmp@xb\tkz at init@xmax% modif 2016
-\global\let\tkz at tmp@ya\tkz at init@ymin% modif 2016
-\global\let\tkz at tmp@yb\tkz at init@ymax% modif 2016
-%<--------------------------------------------------------------------------–>
-\pgfkeys{
- /tkzInit/.cd,
- xmin/.store in = \tkz at init@xmin,
- xmax/.store in = \tkz at init@xmax,
- xstep/.store in = \tkz at init@xstep,
- ymin/.store in = \tkz at init@ymin,
- ymax/.store in = \tkz at init@ymax,
- ystep/.store in = \tkz at init@ystep,
- NO/.is if = tkz at init@NO,
- NO/.default = true,
- xmin = 0,
- xmax = 10,
- xstep = 1,
- ymin = 0,
- ymax = 10,
- ystep = 1,
- NO = false
- }
-
-\def\tkzInit{\pgfutil at ifnextchar[{\tkz at Init}{\tkz at Init[]}}
-\def\tkz at Init[#1]{%
- \pgfqkeys{/tkzInit}{#1}
- \ifx\tkzfctloaded\undefined
- \else
- \tkz at tkzf@fct=0 % only if tkz-fct loaded
- \fi
- \xdef\tkz at init@xorigine{0}
- \xdef\tkz at init@yorigine{0}
- \edef\@xsgmin{\fpeval{sign(\tkz at init@xmin)}}
- \edef\@xsgmax{\fpeval{sign(\tkz at init@xmax)}}
- \edef\@ysgmin{\fpeval{sign(\tkz at init@ymin)}}
- \edef\@ysgmax{\fpeval{sign(\tkz at init@ymax)}}
- \let\tkz at tmp@xa\tkz at init@xmin %modif 2016
- \let\tkz at tmp@xb\tkz at init@xmax %modif 2016
- \let\tkz at tmp@ya\tkz at init@ymin %modif 2016
- \let\tkz at tmp@yb\tkz at init@ymax %modif 2016
- \tkz at init@NOfalse
- \ifx\@xsgmin\@xsgmax \tkz at init@NOtrue \fi
- \ifx\@ysgmin\@ysgmax \tkz at init@NOtrue \fi
- \iftkz at init@NO%
- \ifx\@xsgmin\@xsgmax
- \edef\tkz at init@xmax{\tkz at Dec{\tkz at init@xmax-(\tkz at init@xmin)}}
- \edef\tkz at init@xorigine{\tkz at init@xmin}
- \edef\tkz at init@xmin{0}
- \fi
- \ifx\@ysgmin\@ysgmax
- \edef\tkz at init@ymax{\tkz at Dec{\tkz at init@ymax-(\tkz at init@ymin)}}
- \edef\tkz at init@yorigine{\tkz at init@ymin}
- \edef\tkz at init@ymin{0}
- \fi
- \fi
- \edef\tkz at xa{\tkz at Dec{\tkz at init@xmin/\tkz at init@xstep}}
- \edef\tkz at xb{\tkz at Dec{\tkz at init@xmax/\tkz at init@xstep}}
- \edef\tkz at ya{\tkz at Dec{\tkz at init@ymin/\tkz at init@ystep}}
- \edef\tkz at yb{\tkz at Dec{\tkz at init@ymax/\tkz at init@ystep}}
- \tkz at getdecimal{\tkz at init@xstep} % amélioration nb dec et integer
- \xdef\tkz at init@xdec{\number\c at pgfmath@countb}
- \tkz at getdecimal{\tkz at init@ystep}
- \xdef\tkz at init@ydec{\number\c at pgfmath@countb}
-}%
-\def\tkzAddName{\pgfutil at ifnextchar[{\tkz at AddName}{\tkz at AddName[]}}
-\def\tkz at AddName[#1]#2{%
-\node[above left,#1] at (\pgf at path@lastx,\pgf at path@lasty){#2};
-}%
-%<--------------------------------------------------------------------------–>
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-intersections.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-intersections.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-intersections.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,525 +0,0 @@
-% tkz-tools-lua-intersections.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status “maintained”.
-%
-% The Current Maintainer of this work is Alain Matthes.
-% utf8 encoding
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-lua-intersections.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% intersection de deux lignes
-%<--------------------------------------------------------------------------–>
-\def\tkzInterLL(#1,#2)(#3,#4){% méthode avec xfp
-\tkz at InterLL(#1,#2)(#3,#4){tkzPointResult}
-}
-
-\def\tkz at InterLL(#1,#2)(#3,#4)#5{%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}%
-\tkz at ax\pgf at x%
-\tkz at ay\pgf at y%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}
-\tkz at bx\pgf at x%
-\tkz at by\pgf at y%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}%
-\tkz at cx\pgf at x%
-\tkz at cy\pgf at y%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#4}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#4}{center}}%
-\tkz at dx\pgf at x%
-\tkz at dy\pgf at y%
-\edef\tkzax{\strip at pt\tkz at ax}%
-\edef\tkzay{\strip at pt\tkz at ay}%
-\edef\tkzbx{\strip at pt\tkz at bx}%
-\edef\tkzby{\strip at pt\tkz at by}%
-\edef\tkzcx{\strip at pt\tkz at cx}%
-\edef\tkzcy{\strip at pt\tkz at cy}%
-\edef\tkzdx{\strip at pt\tkz at dx}%
-\edef\tkzdy{\strip at pt\tkz at dy}%
-\edef\tkz at deltax{\tkz at Dec{(\tkzax-(\tkzbx))/(28.45274)}}
-\edef\tkz at deltaxx{\tkz at Dec{(\tkzcx-(\tkzdx))/(28.45274)}}
-\edef\tkz at deltay{\tkz at Dec{(\tkzay-(\tkzby))/(28.45274)}}
-\edef\tkz at deltayy{\tkz at Dec{(\tkzcy-(\tkzdy))/(28.45274)}}
-\edef\tkz at deltaxy{\tkz at Dec{((\tkzax*\tkzby)-(\tkzay*\tkzbx))/(809.55841)}}
-\edef\tkz at deltaxxyy{\tkz at Dec{((\tkzcx*\tkzdy)-(\tkzcy*\tkzdx))/(809.55841)}}
-\edef\tkz at div{\tkz at Dec{(\tkz at deltax*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxx)}}
-\edef\tkz at numx{\tkz at Dec{(\tkz at deltaxy*\tkz at deltaxx)-(\tkz at deltax*\tkz at deltaxxyy)}}
-\edef\tkz at numy{\tkz at Dec{(\tkz at deltaxy*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxxyy)}}
-\edef\tkz at xs{\tkz at Dec{\tkz at numx/\tkz at div}}
-\edef\tkz at ys{\tkz at Dec{\tkz at numy/\tkz at div}}
-\edef\tkz at xs{\tkz at Round{\tkz at xs}{5}}
-\edef\tkz at ys{\tkz at Round{\tkz at ys}{5}}
-\path[coordinate](\tkz at xs,\tkz at ys) coordinate (#5);
-}
-
-
-% méthode with coordinates
-\def\tkzInterLLxy(#1,#2,#3,#4)(#5,#6,#7,#8){%
-%\path (intersection of #1--#2 and #3--#4) coordinate(#5);%
-\tkz at ax#1%
-\tkz at ay#2%
-\tkz at bx#3%
-\tkz at by#4%
-\tkz at cx#5%
-\tkz at cy#6%
-\tkz at dx#7%
-\tkz at dy#8%
-\edef\tkzax{\strip at pt\tkz at ax}%
-\edef\tkzay{\strip at pt\tkz at ay}%
-\edef\tkzbx{\strip at pt\tkz at bx}%
-\edef\tkzby{\strip at pt\tkz at by}%
-\edef\tkzcx{\strip at pt\tkz at cx}%
-\edef\tkzcy{\strip at pt\tkz at cy}%
-\edef\tkzdx{\strip at pt\tkz at dx}%
-\edef\tkzdy{\strip at pt\tkz at dy}%
-\edef\tkz at deltax{\tkz at Dec{(\tkzax-(\tkzbx))/(28.45274)}}
-\edef\tkz at deltaxx{\tkz at Dec{(\tkzcx-(\tkzdx))/(28.45274)}}
-\edef\tkz at deltay{\tkz at Dec{(\tkzay-(\tkzby))/(28.45274)}}
-\edef\tkz at deltayy{\tkz at Dec{(\tkzcy-(\tkzdy))/(28.45274)}}
-\edef\tkz at deltaxy{\tkz at Dec{((\tkzax*\tkzby)-(\tkzay*\tkzbx))/(809.55841)}}
-\edef\tkz at deltaxxyy{\tkz at Dec{((\tkzcx*\tkzdy)-(\tkzcy*\tkzdx))/(809.55841)}}
-\edef\tkz at div{\tkz at Dec{(\tkz at deltax*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxx)}}
-\edef\tkz at numx{\tkz at Dec{(\tkz at deltaxy*\tkz at deltaxx)-(\tkz at deltax*\tkz at deltaxxyy)}}
-\edef\tkz at numy{\tkz at Dec{(\tkz at deltaxy*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxxyy)}}
-\edef\tkz at xs{\tkz at Dec{\tkz at numx/\tkz at div}}
-\edef\tkz at ys{\tkz at Dec{\tkz at numy/\tkz at div}}
-\edef\tkz at xs{\tkz at Round{\tkz at xs}{5}}
-\edef\tkz at ys{\tkz at Round{\tkz at ys}{5}}
-\path[coordinate](\tkz at xs,\tkz at ys) coordinate (tkzPointResult);
-}
-
-%<--------------------------------------------------------------------------–>
-% intersection de Ligne Cercle rayon connu
-%<--------------------------------------------------------------------------–>
-% /*
-% Calculate the intersection of a ray and a sphere
-% The line segment is defined from p1 to p2
-% The sphere is of radius r and centered at sc
-% There are potentially two points of intersection given by
-% p = p1 + mu1 (p2 - p1)
-% p = p1 + mu2 (p2 - p1)
-% Return FALSE if the ray doesn't intersect the sphere.
-% */
-% int RaySphere(XYZ p1,XYZ p2,XYZ sc,double r,double *mu1,double *mu2)
-% {
-% double a,b,c;
-% double bb4ac;
-% XYZ dp;
-%
-% dp.x = p2.x - p1.x;
-% dp.y = p2.y - p1.y;
-% dp.z = p2.z - p1.z;
-% a = dp.x * dp.x + dp.y * dp.y + dp.z * dp.z;
-% b = 2 * (dp.x * (p1.x - sc.x) + dp.y * (p1.y - sc.y) + dp.z * (p1.z - sc.z));
-% c = sc.x * sc.x + sc.y * sc.y + sc.z * sc.z;
-% c += p1.x * p1.x + p1.y * p1.y + p1.z * p1.z;
-% 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) {
-% *mu1 = 0;
-% *mu2 = 0;
-% return(FALSE);
-% }
-%
-% *mu1 = (-b + sqrt(bb4ac)) / (2 * a);
-% *mu2 = (-b - sqrt(bb4ac)) / (2 * a);
-%
-% return(TRUE);
-% }
-%<---------- test ------------------------------------------------------–>
-\def\tkzTestInterLC(#1,#2)(#3,#4){%
-\begingroup
-\tkz at Projection(#1,#2)(#3){tkz at pth}% distance centre à la ligne
-\tkz@@CalcLength(#3,tkz at pth){tkz at mathLen}%
-\tkz@@CalcLength(#3,#4){tkzLengthResult}%calcul du rayon
-\ifdim\tkz at mathLen pt>\tkzLengthResult pt\relax%
-\global\tkzFlagLCfalse
-\else
-\global\tkzFlagLCtrue
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkz at numlc{0}
-\pgfkeys{/linecircle/.cd,
- node/.code = \def\tkz at numlc{0},
- R/.code = \def\tkz at numlc{1},
- with nodes/.code = \def\tkz at numlc{2},
- common/.store in = \tkz at common,
- common = {},
- near/.is if = tkz at near,
- near/.default = true,
- near = false,
- next to/.store in = \tkz at nextto,
- next to/.initial = {},
- next/.default = {},
- next to = {},
- next to/.value required,
- node
- }
-%<--------------------------------------------------------------------------–>
-\def\tkzInterLC{\pgfutil at ifnextchar[{\tkz at InterLC}{\tkz at InterLC[]}}
-\def\tkz at InterLC[#1](#2,#3)(#4,#5){%
-\begingroup
-\pgfqkeys{/linecircle}{#1}
- \pgfinterruptboundingbox
-\ifcase\tkz at numlc%
- % first case 0
- \tkz@@CalcLength(#4,#5){tkzLengthResult}
- \tkzInterLCR(#2,#3)(#4,\tkzLengthResult pt){tkzFirstPointResult}%
- {tkzSecondPointResult}
-\or% 1
- \tkzInterLCR(#2,#3)(#4,#5 cm){tkzFirstPointResult}
- {tkzSecondPointResult}%
-\or% 2
- \tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}%
- {tkzSecondPointResult}%
-\fi
-\iftkz at 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
-\else
- \ifx\tkz at common\tkzutil at empty
- \ifx\tkz at nextto\tkzutil at empty
- \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4)
- \tkzGetAngle{tkz at an}
- \ifdim\tkz at an pt<180 pt\relax%
- \else
- \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
- \fi
- \else
- \tkz@@CalcLength(\tkz at nextto,tkzFirstPointResult){tkzLengthFirst}
- \tkz@@CalcLength(\tkz at 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 at common,tkzSecondPointResult){tkz at mathLen}
- \ifdim\tkz at mathLen pt<1pt\relax%
- \else
- \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
- \fi
- \fi
-\fi%near
-\endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzInterLCR(#1,#2)(#3,#4)#5#6{%
-\begingroup
-\tkz at radi=#4%
-\tkz@@extractxy{#3}
-\tkz at bx =\pgf at x\relax%
-\tkz at by =\pgf at y\relax%
-\tkz at Projection(#1,#2)(#3){tkz at pth}
-\tkz@@CalcLength(#3,tkz at pth){tkz at mathLen}
- \ifdim\tkz at mathLen pt<0.05pt\relax%
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz at ax=\pgf at x%
- \tkz at ay=\pgf at y%
- \pgfpointborderellipse{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at radi}{\tkz at radi}}
- \tkz at ax=\pgf at x\relax%
- \tkz at ay=\pgf at y\relax%
- \advance\tkz at bx by\tkz at ax\relax%
- \advance\tkz at by by\tkz at ay\relax%
- \pgfcoordinate{#6}{\pgfqpoint{\tkz at bx}{\tkz at by}}
- \tkzCSym(#3)(#6){#5}
- \else
- \edef\pgfmathresult{\fpeval{\tkz at mathLen/\tkz at radi}}
- % \edef\tkz at angle{\fpeval{acosd(\pgfmathresult)}}
- \pgfmathacos@{\pgfmathresult}%
- \let\tkz at angle\pgfmathresult%
- \pgfpointdiff{\pgfpointanchor{#3}{center}}%
- {\pgfpointanchor{tkz at pth}{center}}%
- \tkz at ax=\pgf at x%
- \tkz at ay=\pgf at y%
- \pgfpointborderellipse{\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\pgfpoint{\tkz at radi}{\tkz at radi}}
- \tkz at ax =\pgf at x\relax%
- \tkz at ay =\pgf at y\relax%
- \advance\tkz at bx by\tkz at ax\relax%
- \advance\tkz at by by\tkz at ay\relax%
- \tkz@@extractxy{#3}
- \tkz at ax =\pgf at x\relax%
- \tkz at ay =\pgf at y\relax%
- \tkz@@extractxy{tkz at pth}
- \pgfmathrotatepointaround{\pgfpoint{\tkz at bx}{\tkz at by}}%
- {\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {\tkz at angle}
- \pgfcoordinate{#5}{\pgfqpoint{\pgf at x}{\pgf at y}}
- \pgfmathrotatepointaround{\pgfpoint{\tkz at bx}{\tkz at by}}%
- {\pgfpoint{\tkz at ax}{\tkz at ay}}%
- {-\tkz at angle}
- \pgfcoordinate{#6}{\pgfqpoint{\pgf at x}{\pgf at y}}
-
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% intersection de Ligne Cercle
-% #4 center #5 point sur le cercle
-%<--------------------------------------------------------------------------–>
-% \def\tkzInterLC(#1,#2)(#3,#4)#5#6{%
-% \begingroup
-% \tkz@@CalcLength(#3,#4){tkz at rad}
-% \tkzInterLCR(#1,#2)(#3,\tkz at rad pt){#5}{#6}
-% \endgroup
-% }
-%<--------------------------------------------------------------------------–>
-% intersection de Ligne Cercle rayon inconnu
-%<--------------------------------------------------------------------------–>
-\def\tkzInterLCWithNodes(#1,#2)(#3,#4,#5)#6#7{%
-\begingroup
- \tkz@@CalcLength(#4,#5){tkz at radius}
- \tkzInterLCR(#1,#2)(#3,\tkz at radius pt){#6}{#7}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Intersection of 2 circles
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% méthode
-% /* circle_circle_intersection() *
-% * Determine the points where 2 circles in a common plane intersect.
-% *
-% * int circle_circle_intersection(
-% * // center and radius of 1st circle
-% * double x0, double y0, double r0,
-% * // center and radius of 2nd circle
-% * double x1, double y1, double r1,
-% * // 1st intersection point
-% * // 2nd intersection point
-% *
-% * This is a public domain work. 3/26/2005 Tim Voght
-% *
-% int circle_circle_intersection(double x0, double y0, double r0,
-% double x1, double y1, double r1,
-% double *xi, double *yi,
-% double *xi_prime, double *yi_prime)
-% {
-% double a, dx, dy, d, h, rx, ry;
-% double x2, y2;
-%
-% /* dx and dy are the vertical and horizontal distances between
-% * the circle centers.
-% */
-% dx = x1 - x0;
-% dy = y1 - y0;
-%
-% /* Determine the straight-line distance between the centers. */
-% //d = sqrt((dy*dy) + (dx*dx));
-% d = hypot(dx,dy); // Suggested by Keith Briggs
-%
-% /* Check for solvability. */
-% if (d > (r0 + r1))
-% {
-% /* no solution. circles do not intersect. */
-% return 0;
-% }
-% if (d < fabs(r0 - r1))
-% {
-% /* no solution. one circle is contained in the other */
-% return 0;
-% }
-%
-% /* 'point 2' is the point where the line through the circle
-% * intersection points crosses the line between the circle
-% * centers.
-% */
-%
-% /* Determine the distance from point 0 to point 2. */
-% a = ((r0*r0) - (r1*r1) + (d*d)) / (2.0 * d) ;
-%
-% /* Determine the coordinates of point 2. */
-% x2 = x0 + (dx * a/d);
-% y2 = y0 + (dy * a/d);
-%
-% /* Determine the distance from point 2 to either of the
-% * intersection points.
-% */
-% h = sqrt((r0*r0) - (a*a));
-%
-% /* Now determine the offsets of the intersection points from
-% * point 2.
-% */
-% rx = -dy * (h/d);
-% ry = dx * (h/d);
-%
-% /* Determine the absolute intersection points. */
-% *xi = x2 + rx;
-% *xi_prime = x2 - rx;
-% *yi = y2 + ry;
-% *yi_prime = y2 - ry;
-%
-% return 1;
-% }
-%<--------------------------------------------------------------------------–>
-% Intersection de deux cercles
-%<--------------------------------------------------------------------------–>
-%<---------- test ------------------------------------------------------–>
-% test avec des nodes R-r <= d <= R+r
-\def\tkzTestInterCC(#1,#2)(#3,#4){%
-\begingroup
-\tkz@@CalcLength(#1,#3){tkz at mathLen}% distance entre les centres
-\tkz@@CalcLength(#2,#1){tkz at rA}%calcul du rayon
-\tkz@@CalcLength(#4,#3){tkz at rB}%calcul du rayon
-% test if d <= rA + rB ?
-\edef\tkz at rS{\fpeval{\tkz at rA+\tkz at rB}}
-\ifdim\tkz at mathLen pt > \tkz at rS pt\relax%
-\global\tkzFlagCCfalse
-\else
-% now test if d>= rA - rB or rB-rA
- \ifdim \tkz at rA pt > \tkz at rB pt\relax%
- \edef\tkz at rD{\fpeval{\tkz at rA-\tkz at rB}}
- \else
- \edef\tkz at rD{\fpeval{\tkz at rB-\tkz at rA}}
- \fi
-\ifdim \tkz at rD pt > \tkz at mathLen pt\relax%
- \global\tkzFlagCCfalse
-\else
-\global\tkzFlagCCtrue
-\fi
-\fi
-\endgroup
-}
-
-\def\tkz at numcc{0}
-\pgfkeys{
-/circlecircle/.cd,
- node/.code = \def\tkz at numcc{0},
- R/.code = \def\tkz at numcc{1},
- with nodes/.code = \def\tkz at numcc{2},
- common/.store in = \tkz at common,
- common = {},
- node
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzInterCC{\pgfutil at ifnextchar[{\tkz at InterCC}{\tkz at InterCC[]}}
-\def\tkz at InterCC[#1](#2,#3)(#4,#5){%
-\begingroup
-\pgfqkeys{/circlecircle}{#1}
-\ifcase\tkz at numcc%
- % first case 0
- \tkz at save@length
- \tkz@@CalcLengthcm(#2,#3){tkz at rayA}
- \tkz@@CalcLengthcm(#4,#5){tkz at rayB}
- \tkz at restore@length
-\tkzInterCCR(#2,\tkz at rayA)(#4,\tkz at rayB){tkzFirstPointResult}{tkzSecondPointResult}
- \or% 1
- \tkzInterCCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}%
- \or%2
- \tkzInterCCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}
-\fi
- \ifx\tkz at common\tkzutil at empty
- \tkzFindAngle(#2,tkzFirstPointResult,#4) \tkzGetAngle{tkz at an}
- \ifdim\tkz at an pt<180 pt\relax%
- \else
- \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
- \fi
- \else
-\tkz@@CalcLength(\tkz at common,tkzSecondPointResult){tkz at mathLen}
- \ifdim\tkz at mathLen pt<0.05pt\relax%
- \else
- \pgfnodealias{tkzPointTmp}{tkzSecondPointResult}
- \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult}
- \pgfnodealias{tkzFirstPointResult}{tkzPointTmp}
- \fi
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-
-\def\tkzInterCCR(#1,#2)(#3,#4)#5#6{%
-\begingroup
-\pgfinterruptboundingbox
-\tkz at save@length
-\tkz@@CalcLength(#1,#3){tkz at dd}
-\tkz at restore@length
-\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
-\tkz at ax\pgf at x %
-\tkz at ay\pgf at y %
-\edef\tkzcax{\strip at pt\tkz at ax}%
-\edef\tkzcay{\strip at pt\tkz at ay}%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}
-\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}
-\tkz at bx\pgf at x %
-\tkz at by\pgf at y %
-\edef\tkzcbx{\strip at pt\tkz at bx}%
-\edef\tkzcby{\strip at pt\tkz at by}%
-\tkz at cx#2cm %
-\tkz at cy#4cm %
-\edef\tkzccx{\strip at pt\tkz at cx}%
-\edef\tkzccy{\strip at pt\tkz at cy}%
-\edef\tkz at aa{\tkz at Dec{((\tkzccx+\tkzccy)/(2*\tkz at dd))*(\tkzccx-(\tkzccy))+\tkz at dd/2}}
-\edef\tkz at xx{\tkz at Dec{\tkzcax+\tkz at aa/\tkz at dd*(\tkzcbx - (\tkzcax))}}
-\edef\tkz at yy{\tkz at Dec{\tkzcay+\tkz at aa/\tkz at dd*(\tkzcby - (\tkzcay))}}
-\path[coordinate](\tkz at xx pt,\tkz at yy pt) coordinate (tkzRadialCenter);
-\edef\tkz at hh{\tkz at Abs{(\tkzccx+\tkz at aa)*(\tkzccx-(\tkz at aa))}}
-\edef\tkz at hh{\tkz at Dec{\tkz at Sqrt{\tkz at hh}}}
- \edef\tkz at rx{\tkz at Dec{\tkz at hh / \tkz at dd * (\tkzcay - (\tkzcby))}}
-\edef\tkz at ry{\tkz at Dec{\tkz at hh / \tkz at dd * (\tkzcbx - (\tkzcax))}}
-\edef\tkz at xs{\tkz at Dec{\tkz at xx + \tkz at rx}}
-\edef\tkz at ys{\tkz at Dec{\tkz at yy + \tkz at ry}}
-\path[coordinate](\tkz at xs pt,\tkz at ys pt) coordinate (#5);
-\edef\tkz at xss{\tkz at Dec{\tkz at xx - \tkz at rx}}
-\edef\tkz at yss{\tkz at Dec{\tkz at yy - \tkz at ry}}
-\path[coordinate](\tkz at xss pt,\tkz at yss pt) coordinate (#6);
-\endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% #2 node #3 node #4 node #5 node
-% \def\tkzInterCC(#1,#2)(#3,#4)#5#6{%
-% \begingroup
-% \tkz@@CalcLength(#1,#2){tkz at rayA}
-% \tkz@@CalcLength(#3,#4){tkz at rayB}
-% \tkzInterCCR(#1,\tkz at rayA pt)(#3,\tkz at rayB pt){#5}{#6}
-% \endgroup
-% }
-%<--------------------------------------------------------------------------–>
-% Intersection de deux cercles Avec deux points
-%<--------------------------------------------------------------------------–>
-% la première variante devrait être #2 #3 avec #4 #5
-\def\tkzInterCCWithNodes(#1,#2,#3)(#4,#5,#6)#7#8{%
-\begingroup
- \tkz@@CalcLengthcm(#2,#3){tkz at rayA}
- \tkz@@CalcLengthcm(#5,#6){tkz at rayB}
- \tkzInterCCR(#1,\tkz at rayA)(#4,\tkz at rayB){#7}{#8}
-\endgroup
-}
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-math.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-math.tex 2023-10-26 19:52:45 UTC (rev 68662)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-math.tex 2023-10-26 19:54:11 UTC (rev 68663)
@@ -1,310 +0,0 @@
-% tkz-tools-lua-math.tex
-% Copyright 2023 Alain Matthes
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-% This work has the LPPL maintenance status “maintained”.
-% The Current Maintainer of this work is Alain Matthes.
-
-\def\fileversion{5.03c}
-\def\filedate{2023/10/20}
-\typeout{2023/10/20 5.03c tkz-tools-lua-math.tex}
-\makeatletter
-%<-------------------------------------------------------------------------->
-%<-------------------------------------------------------------------------->
-% Lengths
-%<-------------------------------------------------------------------------->
-%<-------------------------------------------------------------------------->
-
-\begin{luacode*}
- function normalize(angleA,angleB)
- if angleA > 0 then
- if angleA > angleB then
- angleA = angleA - 360
- end
- else
- if angleA > angleB then
- angleB = angleB + 360
- end
- end
- return angleA, angleB
- end
-
- function math.angle(x1, y1, x2, y2)
- local a = math.deg(math.atan(y2 - y1, x2 - x1))
- if a < 0 then
- return a + 360
- else
- return a
- end
- end
-
- function tkzop(...)
- inf = math.huge
- return ...
-end
-
-function tkzround(nb, ND)
- local p = 10^(ND or 0)
- return math.floor(nb * p + 0.5) / p
-end
-\end{luacode*}
-
-\def\tkz at Dec#1{%
- \directlua{tex.print(string.format('\@percentchar.6f',#1))}
- }
-\def\tkz at Op#1{\directlua{tex.sprint(tostring(tkzop(#1)))}}
-\def\tkz at Log#1{\directlua{tex.sprint(math.log(#1))}}
-\def\tkz at Exp#1{\directlua{tex.sprint(math.exp(#1))}}
-\def\tkz at Sqrt#1{\directlua{tex.sprint(math.sqrt(#1))}}
-\def\tkz at Abs#1{\directlua{tex.sprint(math.abs(#1))}}
-\def\tkz at Pi{\directlua{tex.sprint(math.pi)}}
-\def\tkz at Cos#1{\directlua{tex.sprint(math.cos(#1))}}
-\def\tkz at Sin#1{\directlua{tex.sprint(tostring(math.sin(#1)))}}
-\def\tkz at Tan#1{\directlua{tex.sprint(math.tan(#1))}}
-\def\tkz at Rad#1{\directlua{tex.sprint(math.rad(#1))}}
-\def\tkz at Acos#1{\directlua{tex.sprint(math.acos(#1))}}
-\def\tkz at Asin#1{\directlua{tex.sprint(math.asin(#1))}}
-\def\tkz at Atan#1{\directlua{tex.sprint(math.atan(#1))}}
-\def\tkz at Round#1#2{\directlua{tex.sprint(tostring(tkzround(#1,#2)))}}
-\def\tkz at Angle#1#2#3#4{\directlua{tex.sprint(math.angle(#1,#2,#3,#4))}}
-\def\tkz at Ceil#1{\directlua{tex.sprint(math.ceil(#1))}}
-\def\tkz at Floor#1{\directlua{tex.sprint(math.floor(#1))}}
-\def\tkz at Huge{\directlua{tex.sprint(math.huge)}}
-\def\tkz at Max#1{\directlua{tex.sprint(math.max(#1))}}
-\def\tkz at Min#1{\directlua{tex.sprint(math.min(#1))}}
-\def\tkz at Random#1{\directlua{tex.sprint(math.random(#1))}}
-\def\tkz at veclen#1#2{%
- \directlua{%
- tex.print(string.format('\@percentchar.6f',math.sqrt((#1)^2+(#2)^2)))%
- }%
-}
-\let\tkzSqrt\tkz at Sqrt
-\let\tkzPi\tkz at Pi
-\let\tkzExp\tkz at Exp
-\let\tkzLog\tkz at Log
-\let\tkzSin\tkz at Sin
-\let\tkzCos\tkz at Cos
-
-% \tkzpointnormalised normalise un point A-->A' tq ||v(OA')=1||
-% example
-% \tkzpointnormalised{%
-% \pgfpointdiff{\pgfpointanchor{A}{center}}
-% {\pgfpointanchor{B}{center}}}
-
-% or
-% \pgf at x=1 cm
-% \pgf at y=12 cm
-% \tkzpointnormalised{}
-%<--------------------------------------------------------------------------
-\def\tkzpointnormalised#1{%
-\pgf at process{#1}%
-\pgf at xa=\pgf at x%
-\pgf at ya=\pgf at y%
-\edef\tkz at temp@xa{\strip at pt\pgf at xa}%
-\edef\tkz at temp@ya{\strip at pt\pgf at ya}%
-\edef\tkz at den{\tkz at veclen{\tkz at temp@xa}{\tkz at temp@ya}}
-\edef\tkz at coordx{\tkz at Op{\tkz at temp@xa/\tkz at den}}
-\edef\tkz at coordx{\tkz at Dec{\tkz at Round{\tkz at coordx}{5}}}
-\edef\tkz at coordy{\tkz at Op{\tkz at temp@ya/\tkz at den}}
-\edef\tkz at coordy{\tkz at Dec{\tkz at Round{\tkz at coordy}{5}}}
-\pgf at x = \tkz at coordx pt
-\pgf at y = \tkz at coordy pt
-}
-%\def\tkz at Dec#1{\directlua{tex.print(string.format('\@percentchar.12f',#1))}}
-%<-------------------------------------------------------------------------->
-% restaure and save length
-\def\tkz at save@length{\global\let\tkz at temp@length\tkzLengthResult}%
-\def\tkz at restore@length{\global\let\tkzLengthResult\tkz at temp@length }%
-%<-------------------------------------------------------------------------->
-% \tkzCalcLength Distance entre deux points en pt ou en cm avec xfp
-% \veclen mais avec fp
-% option cm le résultat est en cm sinon en pt with cm=false
-%<-------------------------------------------------------------------------->
-\pgfkeys{tkzcalclen/.cd,
- cm/.is if = tkzLengthIncm,
- cm/.default = true,
- cm = true}
-
-\def\tkzCalcLength{\pgfutil at ifnextchar[{\tkz at CalcLength}{\tkz at CalcLength[]}}
-\def\tkz at CalcLength[#1](#2,#3){%
-\pgfqkeys{/tkzcalclen}{#1}%
-\begingroup
-\tkz@@CalcLength(#2,#3){tkzLengthResult}
-\iftkzLengthIncm
- \edef\tkz at xfpMathLen{\tkz at Dec{\tkz at Round{\tkzLengthResult/28.45274}{6}}}
- \global\let\tkzLengthResult\tkz at xfpMathLen
-\fi
-\endgroup
-}%
-
-\def\tkz@@CalcLength(#1,#2)#3{%
-\pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
-\edef\tkz at xa{\strip at pt\pgf at x}%
-\edef\tkz at ya{\strip at pt\pgf at y}%
-\edef\tkz at xfpMathLen{\tkz at veclen{\tkz at xa}{\tkz at ya}}
-\global\expandafter\edef\csname #3\endcsname{\tkz at xfpMathLen}
-}
-
-\def\tkz@@CalcLengthcm(#1,#2)#3{%
-\pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
-\edef\tkz at xa{\strip at pt\pgf at x}%
-\edef\tkz at ya{\strip at pt\pgf at y}%
-\edef\tkz at xfpMathLen{\tkz at veclen{\tkz at xa}{\tkz at ya}}
-\edef\tkz at xfpMathLen{\tkz at Dec{\tkz at Round{\tkz at xfpMathLen/28.45274}{6}}}
-\global\expandafter\edef\csname #3\endcsname{\tkz at xfpMathLen}
-}
-\def\tkz@@CalcLengthb(#1,#2)#3{%
-\pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
-\edef\tkz at xfpMathLen{\fpeval{sqrt((\pgf at x)^2+(\pgf at y)^2)}}
-\edef\tkz at xfpMathLen{\fpeval{round(\tkz at xfpMathLen,6)}}
-\global\expandafter\edef\csname #3\endcsname{\tkz at xfpMathLen}
-}
-%<-------------------------------------------------------------------------->
-\def\tkzGetLength#1{%
-\global\expandafter\edef\csname #1\endcsname{\tkzLengthResult}}
-%<-------------------------------------------------------------------------->
-% \tkzpttocm passage de pt cm div par 28.45274
-%<-------------------------------------------------------------------------->
-\def\tkzpttocm(#1)#2{%
-\begingroup
- \edef\tkz at mathresult{\tkz at Round{#1/28.45274}{6}}
- \global\expandafter\edef\csname #2\endcsname{\tkz at mathresult}%
-\endgroup
-}%
-%<-------------------------------------------------------------------------->
-% \tkzcmtopt passage de cm pt mul par 28.45274
-%<--------------------------------------------------------------------------
-\def\tkzcmtopt(#1)#2{%
-\begingroup
- \edef\tkz at mathresult{\tkz at Round{#1*28.45274}{6}}
- \global\expandafter\edef\csname #2\endcsname{\tkz at mathresult}%
-\endgroup
-}%
-%<---------------------------------------------------------–>
- \def\tkzGetResult#1{%
- \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}}
-%<---------------------------------------------------------–>
-% Schrodinger's cat idea 03/01/20
-\tikzset{veclen/.code={%
-\pgfmathdeclarefunction*{veclen}{2}{%
-\begingroup%
- \pgfmath at x##1pt\relax%
- \pgfmath at y##2pt\relax%
- \pgf at xa=\pgf at x%
- \pgf at ya=\pgf at y%
- \edef\tkz at temp@xa{\strip at pt\pgf at xa}%
- \edef\tkz at temp@ya{\strip at pt\pgf at ya}%
- \edef\tkz at xfpMathLen{\tkz at veclen{\tkz at temp@xa}{\tkz at temp@ya}}%
- \pgfmath at returnone\tkz at xfpMathLen pt%
-\endgroup%
-}}}%
-%<---------------------------------------------------------–>
-\def\tkzSwapPoints(#1,#2){
- \pgfnodealias{tkzPointTmp}{#2}
- \pgfnodealias{#2}{#1}
- \pgfnodealias{#1}{tkzPointTmp}}
-%<---------------------------------------------------------–>
-\def\tkzPermute(#1,#2,#3){
- \tkzURotateWithNodes(#1,#3,#2)(#3) \tkzGetPoint{tkzpt}
- \tkzURotateWithNodes(#1,#2,#3)(#2) \tkzGetPoint{#2}
- \tkzSwapPoints(tkzpt,#3)
-}
-%<---------------------------------------------------------–>
-\def\tkzDotProduct(#1,#2,#3){%
-\begingroup
-\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}%
-\edef\tkzax{\strip at pt\pgf at x}%
-\edef\tkzay{\strip at pt\pgf at y}%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#2}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#2}{center}}%
-\edef\tkzbx{\strip at pt\pgf at x}%
-\edef\tkzby{\strip at pt\pgf at y}%
-\pgfextractx{\pgf at x}{\pgfpointanchor{#3}{center}}%
-\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}%
-\edef\tkzcx{\strip at pt\pgf at x}%
-\edef\tkzcy{\strip at pt\pgf at y}%
-\edef\tkz at tmp{\tkz at Dec{\tkz at Round{((\tkzbx-(\tkzax))*(\tkzcx-(\tkzax))+(\tkzby-(\tkzay))*(\tkzcy-(\tkzay)))/809.55841}{6}}}
-\global\let\tkzMathResult\tkz at tmp
-\endgroup
-}
-
-% #1,#2 and #3 aligned
-\def\tkzIsLinear(#1,#2,#3){%
-\begingroup
-\tkz@@CalcLengthcm(#1,#2){tkz at la}
-\tkz@@CalcLengthcm(#1,#3){tkz at lb}
-\tkzDotProduct(#1,#2,#3)
-\edef\tkzResult{\tkz at Dec{\tkz at Abs{\tkzMathResult}-(\tkz at la)*(\tkz at lb)}}
-\ifdim \tkzResult pt < 0.01 pt\relax%
-\global\tkzLineartrue
-\else
-\global\tkzLinearfalse
-\fi
-\endgroup
-}
-%<---------------------------------------------------------–>
-% syntax : vec(#2,#1) ortho vec(#3,#1)
-\def\tkzIsOrtho(#1,#2,#3){%
-\begingroup
-\tkzDotProduct(#1,#2,#3)
-\edef\tkzResult{\tkz at Dec{\tkz at Abs{\tkzMathResult}}}
-\ifdim \tkzResult pt < 1 pt\relax%
-\global\tkzOrthotrue
-\else
-\global\tkzOrthofalse
-\fi
-\endgroup
-}
-%<---------------------------------------------------------–>
-% \tkzPowerCircle(M)(O,A) --> OM^2-OA^2
-\def\tkzPowerCircle(#1)(#2,#3){%
-\begingroup
-\tkz@@CalcLengthcm(#2,#3){tkz at ra}
-\tkz@@CalcLengthcm(#1,#2){tkz at om}
-\gdef\tkzMathResult{\tkz at Dec{(\tkz at om)^2-(\tkz at ra)^2}}
-\endgroup
-}
-%<---------------------------------------------------------–>
-\def\tkzDefRadicalAxis(#1,#2)(#3,#4){%
-\begingroup
-\tkz@@CalcLengthcm(#1,#3){tkz at d}
-\tkz@@CalcLengthcm(#1,#2){tkz at ra}
-\tkz@@CalcLengthcm(#3,#4){tkz at rb}
-\edef\tkzMathResult{\tkz at Dec{\tkz at d-(\tkz at ra+\tkz at rb)}}
-\edef\tkzMathResultb{\tkz at Dec{\tkz at Abs{(\tkz at d-(\tkz at ra+\tkz at rb))}}}
-\edef\tkzMathResultc{\tkz at Dec{\tkz at Abs{\tkz at d-\tkz at Abs{(\tkz at ra-(\tkz at rb))}}}}
-\ifdim \tkzMathResultc pt < 0.1 pt\relax%
- \tkzURotateAngle(#2,90)(#3) \tkzGetPoint{tkzFirstPointResult}
- \tkzURotateAngle(#2,-90)(#3) \tkzGetPoint{tkzSecondPointResult}
-\else
-\ifdim \tkzMathResultb pt < 0.1 pt\relax%
- \tkzURotateAngle(#2,90)(#3) \tkzGetPoint{tkzFirstPointResult}
- \tkzURotateAngle(#2,-90)(#3) \tkzGetPoint{tkzSecondPointResult}
- \else
-\ifdim \tkzMathResult pt > 1 pt\relax%
- \tkzURotateAngle(#1,60)(#3) \tkzGetPoint{tkz at aux}
- \tkzInterCC(#1,#2)(tkz at aux,#1) \tkzGetPoints{tkz at pta}{tkz at ptb}
- \tkzInterCC(#3,#4)(tkz at aux,#1) \tkzGetPoints{tkz at ptc}{tkz at ptd}
- \tkzInterLL(tkz at pta,tkz at ptb)(tkz at ptc,tkz at ptd) \tkzGetPoint{tkz at pta}
- \tkzUProjection(#1,#3)(tkz at pta) \tkzGetPoint{tkz at ptb}
- \pgfnodealias{tkzSecondPointResult}{tkz at ptb}
- \pgfnodealias{tkzFirstPointResult}{tkz at pta}
-\else
-\tkzInterCCR(#1,\tkz at ra)(#3,\tkz at rb){tkzFirstPointResult}{tkzSecondPointResult}
-\fi
-\fi
-\fi
-\endgroup
-}
-
-\makeatother
-\endinput
\ No newline at end of file
More information about the tex-live-commits
mailing list.