texlive[65610] Master/texmf-dist: tkz-euclide (23jan23)
commits+karl at tug.org
commits+karl at tug.org
Mon Jan 23 21:49:38 CET 2023
Revision: 65610
http://tug.org/svn/texlive?view=revision&revision=65610
Author: karl
Date: 2023-01-23 21:49:38 +0100 (Mon, 23 Jan 2023)
Log Message:
-----------
tkz-euclide (23jan23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex
trunk/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf
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-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/doc/latex/tkz-euclide/TKZdoc-euclide-lua.tex
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-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-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
Removed Paths:
-------------
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-points.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.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-protractor.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex
trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/README.md 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,6 +1,6 @@
# tkz-euclide — for euclidean geometry
-Release 4.25c 2022/09/23
+Release 5.00c 2023/01/23
## Description
@@ -41,16 +41,12 @@
your LaTeX document:
```
-\usepackage{tkz-euclide}
+\usepackage{tkz-euclide} or \usepackage[lua]{tkz-euclide}
\begin{document}
\begin{tikzpicture}
your code
\end{tikzpicture}
```
-
-The line `\usetkzobj{all}` is no longer required with `tkz-euclide` but you can use it with
-other packages.
-
If you use the `xcolor` package, load that package before `tkz-euclide` to avoid
package conflicts.
@@ -67,6 +63,8 @@
## History
+- 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.24c. Correction of a bug in the macro `\tkzMarkAngle`;
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-FAQ.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -25,7 +25,7 @@
\item Do not mix the syntax of \tkzNamePack{pgfmath} and \tkzNamePack{xfp}. I've often chosen \tkzNamePack{xfp} but if you prefer pgfmath then do your calculations before passing parameters.
- \item Error "dimension too large" : In some cases, this error occurs. One way to avoid it is to use the "\tkzname{xfp}" option. When this option is used in an scope, the "veclen" function is replaced by a function dependent on "xfp". Do not use intersection macros in this scope. For example, an error occurs if you use the macro \tkzcname{tkzDrawArc}
+ \item Error "dimension too large" : In some cases, this error occurs. One way to avoid it is to use the "\tkzname{veclen}" option. When this option is used in an scope, the "veclen" function is replaced by a function dependent on "xfp". Do not use intersection macros in this scope. For example, an error occurs if you use the macro \tkzcname{tkzDrawArc}
with too small an angle. The error is produced by the \NameLib{decoration} library when you want to place a mark on an arc. Even if the mark is absent, the error is still present.
\end{itemize}
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-angles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -20,7 +20,7 @@
\tkzname{Angles} are involved in several macros like \tkzcname{tkzDefPoint},\tkzcname{tkzDefPointBy[rotation = \dots]}, \tkzcname{tkzDrawArc}
and the next one \tkzcname{tkzGetAngle}. With the exception of the last one, all these macros accept negative angles.
- \begin{figure}[!h]
+ \begin{figure}[!ht]
\centering
\begin{tabular}{|c|c|}
\hline
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-examples.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -94,24 +94,24 @@
\end{tikzpicture}%
\begin{tkzexample}[vbox,small]
-\begin{tikzpicture}[scale=.75]
- \tkzDefPoint(0,0){D} \tkzDefPoint(8,0){A}
- \tkzDefSquare(D,A) \tkzGetPoints{B}{C}
- \tkzDefMidPoint(D,A) \tkzGetPoint{E}
- \tkzInterLC(D,A)(E,B)\tkzGetSecondPoint{F}
- \tkzInterLC(A,B)(A,F)\tkzGetSecondPoint{G}
- \tkzDefSquare(A,F)\tkzGetFirstPoint{H}
- \tkzInterLL(C,D)(H,G)\tkzGetPoint{I}
- \tkzFillPolygon[teal!10](I,G,B,C)
- \tkzFillPolygon[teal!10](A,F,H,G)
- \tkzDrawArc[angles](E,B)(0,120)
- \tkzDrawSemiCircle(A,F)
- \tkzDrawSegments(A,F E,B H,I F,H)
- \tkzDrawPolygons(A,B,C,D)
- \tkzDrawPoints(A,...,I)
- \tkzLabelPoints[below right](A,E,D,F,I)
- \tkzLabelPoints[above right](C,B,G,H)
-\end{tikzpicture}
+ \begin{tikzpicture}[scale=.75]
+ \tkzDefPoint(0,0){D} \tkzDefPoint(8,0){A}
+ \tkzDefSquare(D,A) \tkzGetPoints{B}{C}
+ \tkzDefMidPoint(D,A) \tkzGetPoint{E}
+ \tkzInterLC(D,A)(E,B)\tkzGetSecondPoint{F}
+ \tkzInterLC[near](B,A)(A,F)\tkzGetFirstPoint{G}
+ \tkzDefSquare(A,F)\tkzGetFirstPoint{H}
+ \tkzInterLL(C,D)(H,G)\tkzGetPoint{I}
+ \tkzFillPolygon[teal!10](I,G,B,C)
+ \tkzFillPolygon[teal!10](A,F,H,G)
+ \tkzDrawArc[angles](E,B)(0,120)
+ \tkzDrawSemiCircle(A,F)
+ \tkzDrawSegments(A,F E,B H,I F,H)
+ \tkzDrawPolygons(A,B,C,D)
+ \tkzDrawPoints(A,...,I)
+ \tkzLabelPoints[below right](A,E,D,F,I)
+ \tkzLabelPoints[above right](C,B,G,H)
+ \end{tikzpicture}
\end{tkzexample}
\newpage
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-labelling.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -93,7 +93,7 @@
\tkzDrawCircle(O,A)
\tkzDrawPoints(O,A,B,C)
\tkzDrawSegments(C,B B,A A,O O,C)
- \tkzDefCentroid(A,B,C,O)
+ \tkzDefTriangleCenter[centroid](A,B,C) \tkzGetPoint{O}
\tkzDrawPoint(tkzPointResult)
\tkzLabelPoints(O,A,C,B)
\end{tikzpicture}
Added: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lua.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lua.tex (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lua.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,22 @@
+\newpage
+\section{Working with lua : option \tkzname{lua}} \label{calc_with_lua}
+
+You can now use the "lua" option with \tkzname{\tkznameofpack} version 5.
+You just have to write in your preamble
+
+ |usepackage[lua]{tkz-euclide}|.
+ Évidemment vous devrez compiler avec LuaLaTeX. Nothing changes for the syntax.
+
+Without the option you can use \tkzname{\tkznameofpack} with the proposed code of version 4.25.
+
+This version is not yet finalized although the documentation you are currently reading has been compiled with this option.
+
+Some information about the method used and the results obtained. Concerning the method, I considered two possibilities. The first one was simply to replace everywhere I could the calculations made by "xfp" or sometimes by "lua". This is how I went from "fp" to "xfp" and now to "lua". The second and more ambitious possibility would have been to associate to each point a complex number and to make the calculations on the complexes with "lua". Unfortunately for that I have to use libraries for which I don't know the license.
+
+Otherwise the results are good. This documentation with "LualaTeX" and "xfp" compiles in 47s while with "lua" it takes only 30s for 236 pages.
+
+Another document of 61 pages is compiled 16s with "pdflaTeX" and "xfp" and 13s with "LualaTeX" and "xfp".
+
+This documentation compiles with |\usepackage{tkz-base}| and |\usepackage[lua]{tkz-euclide}| but I didn't test all the interactions thoroughly.
+
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-lua.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-main.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,6 +1,6 @@
% !TEX TS-program = lualatex
% encoding : utf8
-% Documentation of tkz-euclide v4
+% Documentation of tkz-euclide v5
% Copyright 2022 Alain Matthes
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -22,10 +22,10 @@
]{tkz-doc}
%\usepackage{etoc}
\gdef\tkznameofpack{tkz-euclide}
-\gdef\tkzversionofpack{4.25c}
+\gdef\tkzversionofpack{5.00c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{doc-tkz-euclide}
-\gdef\tkzversionofdoc{4.25c}
+\gdef\tkzversionofdoc{5.00c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
@@ -37,7 +37,9 @@
% -- Packages ---------------------------------------------------
\usepackage[dvipsnames,svgnames]{xcolor}
\usepackage{calc}
-\usepackage{tkz-base,tkz-euclide,pgfornament}
+\usepackage{tkz-base}
+\usepackage[lua]{tkz-euclide}
+\usepackage{pgfornament}
\usetikzlibrary{backgrounds}
\usepackage[colorlinks,pdfencoding=auto, psdextra]{hyperref}
\hypersetup{
@@ -113,11 +115,11 @@
\begin{document}
\parindent=0pt
-\tkzTitleFrame{tkz-euclide\\Euclidean Geometry}
+\tkzTitleFrame{tkz-euclide v5\\Euclidean Geometry}
\clearpage
\defoffile{\lefthand\
-From version 4.00, \tkzname{\tkznameofpack} became independent from \tkzname{tkz-base} . This has implied some changes : the next major step will be the version 5 which will see the introduction of Lua. To prepare for this change, I removed the last macros that allowed to plot and define at the same time. Indeed Lua will be there to make all the calculations and define all the necessary nodes. As for \TIKZ\ , it will remain to carry out the tracings, the markings and the labels.\\
+\tkzname{\tkznameofpack} passes in version 5 with the possibility of carrying out part of the calculations using \tkzname{lua}. See the "news" and "lua" sections for more information.\\
\tkzname{\tkznameofpack} is a set of convenient macros for drawing in a plane (fundamental two-dimensional object) with a Cartesian coordinate system. It handles the most classic situations in Euclidean Geometry. \tkzname{\tkznameofpack} is built on top of PGF and its associated front-end \TIKZ\ and is a (La)TeX-friendly drawing package. The aim is to provide a high-level user interface to build graphics relatively simply. The idea is to allow you to follow step by step a construction that would be done by hand as naturally as possible.\\
English is not my native language so there might be some errors.
}
@@ -128,7 +130,7 @@
\lefthand\ Firstly, I would like to thank \textbf{Till Tantau} for the beautiful \LaTeX{} package, namely \href{http://sourceforge.net/projects/pgf/}{\TIKZ}.
\vspace*{12pt}
-\lefthand\ Acknowledgements : I received much valuable advice, remarks, corrections and examples from \tkzimp{Jean-Côme Charpentier}, \tkzimp{Josselin Noirel}, \tkzimp{Manuel Pégourié-Gonnard}, \tkzimp{Franck Pastor}, \tkzimp{David Arnold}, \tkzimp{Ulrike Fischer}, \tkzimp{Stefan Kottwitz}, \tkzimp{Christian Tellechea}, \tkzimp{Nicolas Kisselhoff}, \tkzimp{David Arnold}, \tkzimp{Wolfgang Büchel}, \tkzimp{John Kitzmiller}, \tkzimp{Dimitri Kapetas}, \tkzimp{Gaétan Marris}, \tkzimp{Mark Wibrow}, \tkzimp{Yves Combe} for his work on a protractor, \tkzimp{Paul Gaborit}, \tkzimp{Laurent Van Deik} for all his corrections, remarks and questions and \tkzimp{Muzimuzhi Z} for the code about the option "dim".
+\lefthand\ Acknowledgements : I received much valuable advice, remarks, corrections and examples from \tkzimp{Jean-Côme Charpentier}, \tkzimp{Josselin Noirel}, \tkzimp{Manuel Pégourié-Gonnard}, \tkzimp{Franck Pastor}, \tkzimp{David Arnold}, \tkzimp{Ulrike Fischer}, \tkzimp{Stefan Kottwitz}, \tkzimp{Christian Tellechea}, \tkzimp{Nicolas Kisselhoff}, \tkzimp{David Arnold}, \tkzimp{Wolfgang Büchel}, \tkzimp{John Kitzmiller}, \tkzimp{Dimitri Kapetas}, \tkzimp{Gaétan Marris}, \tkzimp{Mark Wibrow}, \tkzimp{Yves Combe} for his work on a protractor, \tkzimp{Paul Gaborit}, \tkzimp{Laurent Van Deik} for all his corrections, remarks and questions and \tkzimp{Muzimuzhi Z} for the code about the option "dim". A big thank you to \tkzimp{Chetan Shirore} and \tkzimp{Dr. Ajit Kumar} because their work on complex numbers in their package \tkzimp{luamaths} helped me a lot.
\vspace*{12pt}
\lefthand\ I would also like to thank Eric Weisstein, creator of MathWorld:
@@ -152,6 +154,7 @@
\part{General survey : a brief but comprehensive review}
\input{TKZdoc-euclide-news.tex}
+\input{TKZdoc-euclide-lua.tex}
\input{TKZdoc-euclide-installation.tex}
\input{TKZdoc-euclide-presentation.tex}
\input{TKZdoc-euclide-elements.tex}
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-marking.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -126,118 +126,6 @@
|, ||,|||, z, s, x, o, oo
\end{tkzltxexample}
-% Their definitions are as follows
-%
-% \begin{tkzltxexample}[]
-% \pgfdeclareplotmark{||}
-% %double bar
-% {%
-% \pgfpathmoveto{\pgfqpoint{2\pgflinewidth}{\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{-\pgfplotmarksize}}
-% \pgfpathmoveto{\pgfqpoint{-2\pgflinewidth}{\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{-2\pgflinewidth}{-\pgfplotmarksize}}
-% \pgfusepathqstroke
-% }
-% \end{tkzltxexample}
-%
-% \begin{tkzltxexample}[]
-% %triple bar
-% \pgfdeclareplotmark{|||}
-% {%
-% \pgfpathmoveto{\pgfqpoint{0 pt}{\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{0 pt}{-\pgfplotmarksize}}
-% \pgfpathmoveto{\pgfqpoint{-3\pgflinewidth}{\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{-3\pgflinewidth}{-\pgfplotmarksize}}
-% \pgfpathmoveto{\pgfqpoint{3\pgflinewidth}{\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{3\pgflinewidth}{-\pgfplotmarksize}}
-% \pgfusepathqstroke
-% }
-% \end{tkzltxexample}
-%
-% \begin{tkzltxexample}[]
-% % An bar slant
-% \pgfdeclareplotmark{s|}
-% {%
-% \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}%
-% {-.70710678\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}%
-% {.70710678\pgfplotmarksize}}
-% \pgfusepathqstroke
-% }
-% \end{tkzltxexample}
-%
-%
-% \begin{tkzltxexample}[]
-% % An double bar slant
-% \pgfdeclareplotmark{s||}
-% {%
-% \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}}
-% \pgfpathmoveto{\pgfqpoint{0\pgfplotmarksize}{-\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{1\pgfplotmarksize}{\pgfplotmarksize}}
-% \pgfusepathqstroke
-% }
-% \end{tkzltxexample}
-%
-%
-% \begin{tkzltxexample}[]
-% % z
-% \pgfdeclareplotmark{z}
-% {%
-% \pgfpathmoveto{\pgfqpoint{0.75\pgfplotmarksize}{-\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{0.75\pgfplotmarksize}{\pgfplotmarksize}}
-% \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{\pgfplotmarksize}}
-% \pgfusepathqstroke
-% }
-% \end{tkzltxexample}
-%
-% \begin{tkzltxexample}[]
-% % s
-% \pgfdeclareplotmark{s}
-% {%
-% \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
-% \pgfpathcurveto
-% {\pgfpoint{0pt}{0pt}}
-% {\pgfpoint{-\pgfplotmarksize}{\pgfplotmarksize}}
-% {\pgfpoint{\pgfplotmarksize}{\pgfplotmarksize}}
-% \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
-% \pgfpathcurveto
-% {\pgfpoint{0pt}{0pt}}
-% {\pgfpoint{\pgfplotmarksize}{-\pgfplotmarksize}}
-% {\pgfpoint{-\pgfplotmarksize}{-\pgfplotmarksize}}
-% \pgfusepathqstroke
-% }
-% \end{tkzltxexample}
-%
-% \begin{tkzltxexample}[]
-% % infinity
-% \pgfdeclareplotmark{oo}
-% {%
-% \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
-% \pgfpathcurveto
-% {\pgfpoint{0pt}{0pt}}
-% {\pgfpoint{.5\pgfplotmarksize}{1\pgfplotmarksize}}
-% {\pgfpoint{\pgfplotmarksize}{0pt}}
-% \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
-% \pgfpathcurveto
-% {\pgfpoint{0pt}{0pt}}
-% {\pgfpoint{-.5\pgfplotmarksize}{1\pgfplotmarksize}}
-% {\pgfpoint{-\pgfplotmarksize}{0pt}}
-% \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
-% \pgfpathcurveto
-% {\pgfpoint{0pt}{0pt}}
-% {\pgfpoint{.5\pgfplotmarksize}{-1\pgfplotmarksize}}
-% {\pgfpoint{\pgfplotmarksize}{0pt}}
-% \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
-% \pgfpathcurveto
-% {\pgfpoint{0pt}{0pt}}
-% {\pgfpoint{-.5\pgfplotmarksize}{-1\pgfplotmarksize}}
-% {\pgfpoint{-\pgfplotmarksize}{0pt}}
-% \pgfusepathqstroke
-% }
-% \end{tkzltxexample}
-%
% \tkzMarkAngle(B, A, C)
@@ -300,7 +188,35 @@
With common options, there is a macro for multiple angles.
\end{NewMacroBox}
+\subsection{Problem to mark a small angle: {\tkzname{Option veclen}}}\label{opt-veclen}
+ The problem comes from the "decorate" action and from the value used in size in
+ \tkzcname{tkzMarkAngle}. The solution is to enclose the macro \tkzcname{tkzMarkAngle}.
+ In the next example without the "scope" the result is : Latex Error: Dimension too large.
+ \begin{tkzexample}[latex=6cm,small]
+ \begin{tikzpicture}[scale=1]
+ \tkzDefPoint(0,0){O}
+ \tkzDefPoint(2.5,0){N}
+ \tkzDefPoint(-4.2,0.5){M}
+ \tkzDefPointBy[rotation=center O angle 30](N)
+ \tkzGetPoint{B}
+ \tkzDefPointBy[rotation=center O angle -50](N)
+ \tkzGetPoint{A}
+ \tkzInterLC[common=B](M,B)(O,B) \tkzGetFirstPoint{C}
+ \tkzInterLC[common=A](M,A)(O,A) \tkzGetFirstPoint{A'}
+ \tkzDrawSegments(A,C M,A M,B A,B)
+ \tkzDrawCircle(O,N)
+ \begin{scope}[veclen]
+ \tkzMarkAngle[mkpos=.2, size=1.2](C,A,M)
+ \end{scope}
+ \tkzDrawPoints(O, A, B, M, B, C, A')
+ \tkzLabelPoints[right](O,A,B)
+ \tkzLabelPoints[above left](M,C)
+ \tkzLabelPoint[below left](A'){$A'$}
+ \end{tikzpicture}
+ \end{tkzexample}
+
+
\subsection{Marking a right angle: {\tkzcname{tkzMarkRightAngle}}}
\begin{NewMacroBox}{tkzMarkRightAngle}{\oarg{local options}\parg{A,O,B}}%
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-news.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,15 @@
\section*{News and compatibility}
+\subsection{With 5.0 version} % (fold)
+
+\begin{itemize}
+
+ \item Finally, I added the "lua" option for the package \tkzname{\tkznameofpack}. This allows to do the calculations for the main functions using lua; (see \ref{calc_with_lua}). The syntax is unchanged. Nothing changes for the user.
+
+ \item The "xfp" option has become "veclen" see \ref{opt-veclen};
+
+\end{itemize}
+
\subsection{With 4.2 version} % (fold)
\label{sub:with_4_2_version}
@@ -43,7 +53,7 @@
\item |\tkzDefLine[euler](A,B,C)| is a macro that allows you to obtain the line of \tkzname{Euler} when possible. |\tkzDefLine[altitude](A,B,C)| is possible again, as well as |\tkzDefLine[tangent at=A](O)| and |\tkzDefLine[tangent from=P](O,A)| which did not works;
-\item | \tkzDefTangent| is replaced by |\tkzDelLine[tangent from = ...]| or |\tkzDelLine[tangent at = ...]|;
+\item | \tkzDefTangent| is replaced by |\tkzDefLine[tangent from = ...]| or |\tkzDefLine[tangent at = ...]|;
\item I added the macro |\tkzPicAngle[tikz options](A,B,C)| for those who prefer to use \TIKZ ;
@@ -117,6 +127,7 @@
you can use |\iftkzLinear| (idem for |\tkzIsOrtho|);
\item A style for vectors has been added that you can of course modify
+
|tikzset{vector style/.style={>=Latex,->}}|;
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-others.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -69,10 +69,9 @@
\tkzDrawCircle(O,N)
\tkzLabelCircle[above left](O,N)(120){%
$\mathcal{C}$}
- \begin{scope}[xfp]
- \tkzMarkAngle[mkpos=.2, size=1.2](C,A,M)
+ \begin{scope}[veclen]
+ \tkzMarkAngle[mkpos=.2, size=1.2](C,A,M)
\end{scope}
-
\tkzDrawPoints(O, A, B, M, B, C)
\tkzLabelPoints[right](O,A,B)
\tkzLabelPoints[above left](M,C)
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-presentation.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -240,8 +240,8 @@
\tkzDefPoint(0.75,0.25){B}
\tkzDefPoint(1,1.5){C}
\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D}
-\tkzInterLC[near](D,B)(B,C) \tkzGetSecondPoint{G}
-\tkzInterLC[near](D,A)(D,G) \tkzGetFirstPoint{L}
+\tkzInterLC[near](D,B)(B,C) \tkzGetSecondPoint{G}
+\tkzInterLC[near](A,D)(D,G) \tkzGetFirstPoint{L}
\tkzDrawCircles(B,C D,G)
\tkzDrawLines[add=0 and 2](D,A D,B)
\tkzDrawSegment(A,B)
@@ -259,10 +259,14 @@
\end{tikzpicture}
\end{tkzexample}
-\subsection{\tkzname{\tkznameofpack 4} vs \tkzname{\tkznameofpack 3}}
+\subsection{\tkzname{\tkznameofpack\ 4} vs \tkzname{\tkznameofpack\ 3}}
Now I am no longer a Mathematics teacher, and I only spend a few hours studying geometry. I wanted to avoid multiple complications by trying to make \tkzname{tkz-euclide} independent of \tkzname{tkz-base}. Thus was born \tkzname{\tkznameofpack} 4. The latter is a simplified version of its predecessor. The macros of \tkzname{tkz-euclide 3} have been retained. The unit is now \tkzname{cm}. If you need some macros from \tkzname{tkz-base}, you may need to use the \tkzcname{tkzInit}.
+\subsection{\tkzname{\tkznameofpack\ 5} vs \tkzname{\tkznameofpack\ 4}}
+
+Rien ne change pour l'utilisateur. La compilation doit être effectuée avec le moteur LuaLaTeX et les résultats sont plus précis et obtenus plus rapidement. Il suffit de charger \tkzname{\tkznameofpack} 5 comme ceci |\usepackage[lua{tkz-euclide}]|.
+
\subsection{How to use the \tkzname{\tkznameofpack} package ?}
\subsubsection{Let's look at a classic example}
In order to show the right way, we will see how to build an equilateral triangle. Several possibilities are open to us, we are going to follow the steps of Euclid.
@@ -274,7 +278,7 @@
\end{verbatim}
\item Then load the \tkzname{\tkznameofpack} package:
\begin{verbatim}
-\usepackage{tkz-euclide}
+\usepackage{tkz-euclide} or \usepackage[lua]{tkz-euclide}
\end{verbatim}
You don't need to load \TIKZ\ because the \tkzname{\tkznameofpack} package works on top of TikZ and loads it.
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/doc/latex/tkz-euclide/TKZdoc-euclide-tools.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -294,12 +294,11 @@
\tkzDrawPoints(A,H) \tkzLabelPoints(A,B,H)
\tkzLabelPoints[above](C)
\tkzDotProduct(A,B,C) \tkzGetResult{pabc}
- \pgfmathparse{round(10*\pabc)/10}
+ % \pgfmathparse{round(10*\pabc)/10}
\let\pabc\pgfmathresult
- \node at (1,-3) {%
- $\overrightarrow{PA}\cdot \overrightarrow{PB}=\pabc$};
+ \node at (1,-3) {$\overrightarrow{PA}\cdot \overrightarrow{PB}=\pabc$};
\tkzDotProduct(A,H,B) \tkzGetResult{phab}
- \pgfmathparse{round(10*\phab)/10}
+ % \pgfmathparse{round(10*\phab)/10}
\let\phab\pgfmathresult
\node at (1,-4) {$PA \times PH = \phab $};
\end{tikzpicture}
Modified: trunk/Master/texmf-dist/doc/latex/tkz-euclide/tkz-euclide.pdf
===================================================================
(Binary files differ)
Added: 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 (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-angles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,538 @@
+% tkz-tool-eu-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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tool-eu-angles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% tkzSetUpArc
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/tkzsetuparc/.cd,
+ color/.store in = \tkz at arc@color,
+ line width/.store in = \tkz at arc@lw,
+ style/.store in = \tkz at arc@style,
+ line width = \tkz at euc@linewidth,
+ color = \tkz at euc@linecolor,
+ style = \tkz at euc@linestyle,
+ /tkzsetuparc/.search also = {/tikz,/tkzcompass},
+ }
+\def\tkzSetUpArc{\pgfutil at ifnextchar[{\tkz at SetUpArc}{\tkz at SetUpArc[]}}
+\def\tkz at SetUpArc[#1]{%
+\pgfqkeys{/tkzsetuparc}{#1}
+\tikzset{arc style/.style={color = \tkz at arc@color,
+ line width = \tkz at arc@lw,
+ style = \tkz at arc@style
+ }}
+}% end setup
+%<------------------------------ Arcs -------------------------------------–
+% options : delta
+% \def\tkz at delta{0}
+% \tikzset{arc style/.style={#1}}
+% \pgfkeys{/tikz/.cd,delta/.code={\def\tkz at delta{#1}}}
+\newif\iftkz at reverse
+\gdef\tkz at numa{0}
+\pgfkeys{/tkzdrawarc/.cd,
+ type/.is choice,
+ type/towards/.code = \def\tkz at numa{0},
+ type/rotate/.code = \def\tkz at numa{1},
+ type/angles/.code = \def\tkz at numa{2},
+ type/R/.code = \def\tkz at numa{3},
+ type/R with nodes/.code = \def\tkz at numa{4},
+ towards/.style = {type=towards},
+ rotate/.style = {type=rotate},
+ R/.style = {type=R},
+ angles/.style = {type=angles},
+ R with nodes/.style = {type=R with nodes},
+ diameter/.code = {},
+ arc/.code = {},
+ size/.code = {},
+ mark/.code = {},
+ mkpos/.code = {},
+ mksize/.code = {},
+ mkcolor/.code = {},
+ type/.default = towards,
+ delta/.store in = \tkz at delta,
+ delta = 0,
+ reverse/.is if = tkz at reverse,
+ reverse/.default = true,
+ reverse = false,
+ /tkzdrawarc/.search also = {/tikz}
+}
+\def\tkzDrawArc{\pgfutil at ifnextchar[{\tkz at DrawArc}{\tkz at DrawArc[]}}
+\def\tkz at DrawArc[#1](#2,#3)(#4){%
+\begingroup
+\pgfqkeys{/tkzdrawarc}{#1}
+\ifcase\tkz at numa%
+ \tkzDrawArcTowards[#1](#2,#3)(#4)
+\or% 1
+ \tkzDrawArcRotate[#1](#2,#3)(#4)
+\or% 2
+ \tkzDrawArcAngles[#1](#2,#3)(#4)
+\or% 3
+ \tkzDrawArcRAngles[#1](#2,#3)(#4)
+\or% 4
+ \tkzDrawArcR[#1](#2,#3)(#4)
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% ARC nodes #2 center #3 first point last point #4
+% delta un peu plus à chaque extrémité
+% example : \tkzDrawArc(A,B)(C)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcTowards{\pgfutil at ifnextchar[{\tkz at DrawArcN}{\tkz at DrawArcN[]}}
+\def\tkz at DrawArcN[#1](#2,#3)(#4){%
+\begingroup
+ \tkz@@CalcLengthcm(#2,#3){tkz at radius}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at DrawArcRAngles[#1](#2,\tkz at radius)(\tkz at FirstAngle,\tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% nodes #2 center #3 first point rotate #4 with Angle
+% delta un peu plus à chaque extrémité
+% tkzDrawArcRotate(O,A)(60)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcRotate{\pgfutil at ifnextchar[{\tkz at DrawArcRotate}{%
+ \tkz at DrawArcRotate[]}}
+\def\tkz at DrawArcRotate[#1](#2,#3)(#4){%
+\begingroup
+ \tkz@@CalcLength(#2,#3){tkz at radius}
+ \tkzFindSlopeAngle(#2,#3) \tkzGetAngle{tkz at FirstA}
+ \pgfmathadd{\tkz at FirstA}{#4}
+ \edef\tkz at SecondA{\pgfmathresult}
+ \pgfmathgreaterthan{#4}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \tkz at DrawArcRAngles[#1](#2,\tkz at radius pt)(\tkz at FirstA,\tkz at SecondA)
+ \else
+ \tkz at DrawArcRAngles[#1](#2,\tkz at radius pt)(\tkz at SecondA,\tkz at FirstA)
+ \fi
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+% deux angles
+% \tkzDrawArcAngles(O,A)(0,60)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcAngles{\pgfutil at ifnextchar[{\tkz at DrawArcAngles}{%
+ \tkz at DrawArcAngles[]}}
+\def\tkz at DrawArcAngles[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkz@@CalcLength(#2,#3){tkzLengthResult}
+ \tkz at DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#4,#5)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Degree #2 center #4 - #3 radius from #5 (degree) to #6(degree)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcRwithNodes{\pgfutil at ifnextchar[{\tkz at DrawArcRwithNodes}{%
+ \tkz at DrawArcRwithNodes[]}}
+\def\tkz at DrawArcRwithNodes[#1](#2,#3,#4)(#5,#6){%
+\begingroup
+ \tkz@@CalcLength(#3,#4){tkzLengthResult}
+ \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#6)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at DrawArcRAngles[#1](#2,\tkzLengthResult)(\tkz at FirstAngle,\tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Nodes R #2 center #3 radius en cm from #4(node) to #5(node)
+% \tkzDrawArcR(O,2)(A,B)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcR{\pgfutil at ifnextchar[{\tkz at DrawArcR}{\tkz at DrawArcR[]}}
+\def\tkz at DrawArcR[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at DrawArcRAngles[#1](#2,#3)(\tkz at FirstAngle,\tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% #1 center #2 radius #4 first angle (degree) #5 second angle (degree)
+% angles 0 .. 180 or -180 .. 0
+%<--------------------------------------------------------------------------–>
+% example : \tkzDrawArc(A,2)(30,90)
+\def\tkzDrawArcRAngles{\pgfutil at ifnextchar[{\tkz at DrawArcRAngles}{%
+ \tkz at DrawArcRAngles[]}}
+\def\tkz at DrawArcRAngles[#1](#2,#3)(#4,#5){%
+ \begingroup
+ \tkzNormalizeAngle(#4,#5)
+ \pgfmathsubtract{\tkz at FirstAngle}{\tkz at delta}
+ \edef\tkz at FirstAngle{\pgfmathresult}%
+ \pgfmathadd{\tkz at SecondAngle}{\tkz at delta}
+ \edef\tkz at SecondAngle{\pgfmathresult}
+ \iftkz at reverse
+ \let\tkztemp\tkz at FirstAngle
+ \let\tkz at FirstAngle\tkz at SecondAngle
+ \let\tkz at SecondAngle\tkztemp
+ \fi
+ \draw[shift = {(#2)},arc style,/tkzdrawarc/.cd,#1]%
+ (\tkz at FirstAngle:#3) arc (\tkz at FirstAngle:\tkz at SecondAngle:#3);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\pgfkeys{
+ /@tkzmarkarc/.cd,
+ pos/.store in = \tkz at mkarcpos,
+ color/.store in = \tkz at mkcolor,
+ mark/.store in = \tkz at markarcseg,
+ size/.store in = \tkz at mkarcsize,
+ color = teal!20,
+ size = 4pt,
+ pos = .5,
+ mark = none,
+ /@tkzmarkarc/.search also={/tikz},
+}
+\def\tkzMarkArc{\pgfutil at ifnextchar[{\tkz at MarkArc}{\tkz at MarkArc[]}}
+\def\tkz at MarkArc[#1](#2,#3,#4){%
+\begingroup
+ \pgfqkeys{/@tkzmarkarc}{#1} \def\tkz at mymarkarc{\pgfsetplotmarksize{\tkz at mkarcsize}\pgfuseplotmark{\tkz at markarcseg}}
+\tkz@@CalcLength(#2,#3){tkz at radius}
+\tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
+\tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
+\tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
+ \pgfmathsubtract{\tkz at FirstAngle}{\tkz at delta}
+ \edef\tkz at FirstAngle{\pgfmathresult}%
+ \pgfmathadd{\tkz at SecondAngle}{\tkz at delta}
+ \edef\tkz at SecondAngle{\pgfmathresult}
+\begin{scope}[decoration={markings,mark=at position \tkz at mkarcpos with {\tkz at mymarkarc}}]
+\path[shift = {(#2)},\tkz at mkcolor,/@tkzmarkarc/.cd,#1,postaction={decorate}]%
+(\tkz at FirstAngle:\tkz at radius pt) arc (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at radius pt);
+\end{scope}
+\endgroup
+}
+
+\def\tkzLabelArc{\pgfutil at ifnextchar[{\tkz at LabelArc}{\tkz at LabelArc[]}}
+\def\tkz at LabelArc[#1](#2,#3,#4)#5{%
+\begingroup
+\pgfqkeys{/@tkzmarkarc}{#1}
+\tkz@@CalcLength(#2,#3){tkz at radius}
+\tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
+\tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
+\tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
+\pgfmathsubtract{\tkz at FirstAngle}{\tkz at delta}
+\edef\tkz at FirstAngle{\pgfmathresult}%
+\pgfmathadd{\tkz at SecondAngle}{\tkz at delta}
+\edef\tkz at SecondAngle{\pgfmathresult}
+\begin{scope}[decoration={markings,mark=at position \tkz at mkarcpos with \node{#5};}]
+ \path[shift = {(#2)},/@tkzmarkarc/.cd,#1,postaction={decorate}]%
+ (\tkz at FirstAngle:\tkz at radius pt) arc (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at radius pt); \end{scope}
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+% tkzDrawArcRAN >
+%<--------------------------------------------------------------------------->
+\def\tkzDrawArcRAN[#1](#2,#3)(#4,#5){%
+\begingroup
+ \draw[shift = {(#2)},/tkzdrawarc/.cd,#1] (#4:#3) arc (#4:#5:#3);
+\endgroup
+}
+%<--------------- tkzPathArcRAN ----------------------------------
+\def\tkzPathArcRAN[#1](#2,#3)(#4,#5){%
+\begingroup
+ \path[shift = {(#2)},/tkzdrawarc/.cd,#1] (#4:#3) arc (#4:#5:#3);
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+% Mark an angle modi 3.03 suppression de \tkz at mksize,
+%<--------------------------------------------------------------------------->
+% \tkzMarkAngle(B, A, C)
+%
+% Marque d'angle
+% arc de cercle (simple/double/triple) et marque d'églité.
+%
+% Par défaut:
+% arc = simple
+% size = 1 (rayon de l'arc)
+% style traits pleins
+% mkpos ? position: 0.5 (position de la marque)
+% mark rien du tout (ignoré si type est utilisé)
+%
+% Paramètres (optionnels)
+% arc : l, ll, lll
+% mksize : 1
+% gap : 3pt
+% dist ?
+% style : type de traits
+% position: 0.5
+% mark : none , |, ||,|||, z, s, x, o, oo mais tous les
+% % symboles de tikz sont permis
+%<------------------------- Label on angle -------------------------------->
+\def\tkz at arcsimple{l}
+\def\tkz at arcdouble{ll}
+\def\tkz at arctriple{lll}
+
+%\tikzset{lbstyle/.style = {color=\tkz at mainlinecolor}}
+
+\pgfkeys{/tkzmkangle/.cd,
+ arc/.estore in = \tkz at arc,
+ size/.store in = \tkz at size,
+ mark/.store in = \tkz at markang,
+ mkpos/.estore in = \tkz at mkpos,
+ mksize/.store in = \tkz at mksize,
+ mkcolor/.store in = \tkz at mkcolor,
+ arc = l,
+ size = 1,
+ mark = none,
+ mksize = 4pt,
+ mkcolor = black,
+ mkpos = 0.5,
+ /tkzmkangle/.search also={/tikz}
+}
+\def\tkzMarkAngle{\pgfutil at ifnextchar[{\tkz at MarkAngle}{\tkz at MarkAngle[]}}
+\def\tkz at MarkAngle[#1](#2,#3,#4){%
+\begingroup
+\pgfqkeys{/tkzmkangle}{#1}
+\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
+\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
+\tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
+
+\def\tkz at mymark{\pgfsetplotmarksize{\tkz at mksize}\pgfuseplotmark{\tkz at markang}}
+% draw the arcs
+\begin{scope}[veclen]
+ \begin{scope}[decoration= {markings,
+ mark=at position \tkz at mkpos with {\tkz at mymark}}]
+ \ifx\tkz at arc\tkz at arcsimple
+ \tkzDrawArcRAN[#1,fill=none]%
+ (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
+ \tkzPathArcRAN[\tkz at mkcolor,postaction={decorate}]%
+ (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)
+ \else
+ \ifx\tkz at arc\tkz at arcdouble
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm-2.5\pgflinewidth)%
+ (\tkz at FirstAngle,\tkz at SecondAngle)
+ \tkzPathArcRAN[\tkz at mkcolor,postaction={decorate}]%
+ (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm+2.5\pgflinewidth)%
+ (\tkz at FirstAngle,\tkz at SecondAngle)%
+ \else
+ \ifx\tkz at arc\tkz at arctriple
+ \tkzDrawArcRAN[#1,fill=none]%
+ (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
+ \tkzPathArcRAN[\tkz at mkcolor,postaction={decorate}]%
+ (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm-2.5\pgflinewidth)%
+ (\tkz at FirstAngle,\tkz at SecondAngle)%
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm+2.5\pgflinewidth)%
+ (\tkz at FirstAngle,\tkz at SecondAngle)%
+ \fi
+ \fi
+ \fi
+ \end{scope}
+\end{scope}
+
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+% multiple
+\def\tkz at multiMA#1 #2\@nil{%
+ \protected at edef\tkz at temp{
+ \noexpand \tkzMarkAngle[\tkz at optma](#1)}\tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------->
+\def\tkzMarkAngles{\pgfutil at ifnextchar[{\tkz at MarkAngles}{\tkz at MarkAngles[]}}
+\def\tkz at MarkAngles[#1](#2){%
+\xdef\tkz at optma{#1}
+ \begingroup
+ \let\next\tkz at multiMA
+ \next#2 \@nil %
+\endgroup
+}
+% fin de \tkzMarkAngle
+%<--------------------------------------------------------------------------->
+% Pic Angle
+%<--------------------------------------------------------------------------->
+\def\tkzPicAngle{\pgfutil at ifnextchar[{\tkz at PicAngle}{\tkz at PicAngle[]}}
+\def\tkz at PicAngle[#1](#2,#3,#4){%
+\begingroup
+\draw pic [#1]{angle=#2--#3--#4};
+\endgroup
+}
+\def\tkzPicRightAngle{\pgfutil at ifnextchar[{\tkz at PicRightAngle}{\tkz at PicRightAngle[]}}
+\def\tkz at PicRightAngle[#1](#2,#3,#4){%
+\begingroup
+\draw pic [#1]{right angle=#2--#3--#4};
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+% FillAngle
+%<--------------------------------------------------------------------------->
+\pgfkeys{/tkzFill/.cd,
+ size/.store in = \tkz at size,
+ size = 1,
+ /tkzFill/.search also = {/tikz}
+ }
+
+\def\tkzFillAngle{\pgfutil at ifnextchar[{\tkz at FillAngle}{\tkz at FillAngle[]}}
+\def\tkz at FillAngle[#1](#2,#3,#4){%
+\begingroup
+\pgfqkeys{/tkzFill}{#1}
+ \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
+ \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
+ \tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
+ \path[shift = {(#3)},fill=\tkz at euc@linecolor!10,/tkzFill/.cd,#1]%
+ (#3) -- (\tkz at FirstAngle:\tkz at size) arc%
+ (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at size)--cycle;
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+% multiple
+\def\tkz at multiFA#1 #2\@nil{\protected at edef\tkz at temp{%
+ \noexpand \tkzFillAngle[\tkz at optfa](#1)}%
+ \tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------->
+\def\tkzFillAngles{\pgfutil at ifnextchar[{\tkz at MFillAngles}{\tkz at MFillAngles[]}}
+\def\tkz at MFillAngles[#1](#2){%
+\xdef\tkz at optfa{#1}
+\begingroup
+ \let\next\tkz at multiFA
+ \next#2 \@nil %
+\endgroup
+}
+%<------------------------- Label on angle -------------------------------->
+\pgfkeys{/tkzlabelangle/.cd,
+ dist/.store in = \tkzlabeldist,
+ angle/.store in = \tkzlabelangle,
+ dist = 1,
+ angle = {},
+ /tkzlabelangle/.search also={/tikz}
+}
+\def\tkzLabelAngle{\pgfutil at ifnextchar[{\tkz at LabelAngle}{\tkz at LabelAngle[]}}
+\def\tkz at LabelAngle[#1](#2,#3,#4)#5{%2016 added normalize from karu's code
+\begingroup
+ \pgfqkeys{/tkzlabelangle}{#1}
+ \ifx\tkzutil at empty\tkzlabelangle% no value so calc angle of bisector
+ \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
+ \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
+ \tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
+ \edef\tkzlabelAngle{\fpeval{(\tkz at SecondAngle+\tkz at FirstAngle)/2}}
+ \fi
+ \path (#3) --+(\tkzlabelAngle:\tkzlabeldist) node[label angle style,%
+ /tkzlabelangle/.cd,#1] {#5};
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+%<--------------------------------------------------------------------------->
+% multiple labels
+\def\tkz at multiLBA#1 #2\@nil{%
+ \protected at edef\tkz at temp{
+ \noexpand \tkzLabelAngle[\tkz at optlba](#1){\tkz at labelangle}}\tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+% %<---------------------------------------------------------------------
+\def\tkzLabelAngles{\pgfutil at ifnextchar[{\tkz at LabelAngles}{%
+ \tkz at LabelAngles[]}}
+\def\tkz at LabelAngles[#1](#2)#3{%
+ \def\tkz at optlba{#1}
+ \def\tkz at labelangle{#3}
+ \begingroup
+ \let\next\tkz at multiLBA
+ \next#2 \@nil %
+ \endgroup
+}
+%<-----------------------------------------------------------------------
+% Symbole droites perpendiculaires
+%<----------------------------------------------------------------------
+\pgfkeys{/tkzrightangle/.cd,
+ norm tkz code/.is if = normtkzcode at execute,
+ german/.code = \normtkzcode at executefalse,
+ size/.store in = \tkz at ra@size,
+ dotsize/.store in = \tkz at dotsize,
+ size = .25,
+ dotsize = 3 pt,
+ /tkzrightangle/.search also={/tikz},
+}
+\newcommand*{\tkzMarkRightAngle}[1][]{\tkz at MarkRightAngle[#1]}
+\def\tkz at MarkRightAngle[#1](#2,#3,#4){%
+\begingroup
+\normtkzcode at executetrue
+\pgfqkeys{/tkzrightangle}{#1}
+ \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
+ \pgfpointanchor{#2}{center}}}
+ \tkz at ax=\pgf at x\relax%
+ \tkz at ay=\pgf at y\relax%
+ \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
+ \pgfpointanchor{#4}{center}}}
+ \tkz at bx=\pgf at x\relax%
+ \tkz at by=\pgf at y\relax%
+ \ifnormtkzcode at execute%
+ \draw[/tkzrightangle/.cd,#1]
+ (#3) --++( 28.45274*\tkz at ra@size\tkz at ax , 28.45274*\tkz at ra@size\tkz at ay)
+ --++( 28.45274*\tkz at ra@size\tkz at bx , 28.45274*\tkz at ra@size\tkz at by)
+ --++(-28.45274*\tkz at ra@size\tkz at ax ,-28.45274*\tkz at ra@size\tkz at ay)
+ -- (#3);
+ \else%
+ % find angles
+ \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
+ \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
+ \tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
+ \edef\tkzCircleAngle{\fpeval{(\tkz at SecondAngle+\tkz at FirstAngle)/2}}
+ \tkzDrawArcRAN[/tkzrightangle/.cd,#1](#3,\tkz at ra@size)%
+ (\tkz at FirstAngle,\tkz at SecondAngle)
+ \path (#3) --+ (\tkzCircleAngle:\tkz at ra@size/2)
+ node[fill,circle,minimum size=\tkz at dotsize,
+ inner sep=0 pt,/tkzrightangle/.cd,#1] {};
+\fi%
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+\def\tkz at multiRA#1 #2\@nil{%
+\protected at edef\tkz at temp{
+ \noexpand \tkzMarkRightAngle[\tkz at optRA](#1)}\tkz at temp%
+\def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+\next#2\@nil
+}
+%<--------------------------------------------------------------------------->
+\def\tkzMarkRightAngles{\pgfutil at ifnextchar[{\tkz at RightAngles}{%
+ \tkz at RightAngles[]}}
+\def\tkz at RightAngles[#1](#2){%
+\xdef\tkz at optRA{#1}
+\begingroup
+ \let\next\tkz at multiRA
+ \next#2 \@nil %
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+% tkzdefMidArc center and two points
+\def\tkzDefMidArc(#1,#2,#3){%
+\begingroup
+\tkz@@CalcLength(#1,#2){tkz at radius}
+\tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz at FirstAngle}
+\tkzFindSlopeAngle(#1,#3)\tkzGetAngle{tkz at SecondAngle}
+\tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
+ \path[shift = {(#1)}](\tkz at FirstAngle:\tkz at radius pt) arc
+ (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at radius pt) coordinate[midway] (tkzPointResult);
+\endgroup
+}
+\makeatother
+
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-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-draw-eu-circles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-circles.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-circles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,165 @@
+% tkz-obj-eu-draw-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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-draw-circles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% tkzSetUpCircle
+%<--------------------------------------------------------------------------–>
+\pgfkeys{%
+ /tkzsetupcirc/.cd,
+ color/.code = \def\tkz at circle@color{#1},
+ line width/.code = \def\tkz at circle@linewidth{#1},
+ style/.code = \def\tkz at circle@style{#1},
+ /tkzsetupcirc/.search also = {/tikz}
+ }
+ %<--------------------------------------------------------------------------–>
+
+\def\tkzSetUpCircle{\pgfutil at ifnextchar[{\tkz at SetUpCircle}{\tkz at SetUpCircle[]}}
+\def\tkz at SetUpCircle[#1]{%
+\pgfkeys{%
+ tkzsetupcirc/.cd,
+ line width = \tkz at euc@circlelw,
+ color = \tkz at euc@circlecolor,
+ style = \tkz at euc@circlestyle
+}
+\pgfqkeys{/tkzsetupcirc}{#1}
+\tikzset{%
+ circle style/.append style = { %
+ color = \tkz at circle@color,
+ line width = \tkz at circle@linewidth,
+ style = \tkz at circle@style,
+ #1}
+ }
+}% end setup
+ %<--------------------------------------------------------------------------–>
+
+\def\tkzDrawCircle{\pgfutil at ifnextchar[{\tkz at DrawCircle}{\tkz at DrawCircle[]}}
+\def\tkz at DrawCircle[#1](#2,#3){%
+\begingroup
+\node [draw,circle through=(#3), circle style,#1] at (#2) {};
+%perhaps I need to use the last method
+ % \tkzCalcLength(#2,#3) \tkzGetLength{tkz at ncradius}
+ % \draw[circle style,#1](#2) circle (\tkz at ncradius);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkz at multicircles#1 #2\@nil{%
+\protected at edef\tkz at temp{
+\noexpand \tkzDrawCircle[\tkz at optcircle](#1)}\tkz at temp%
+\def\tkz at nextArg{#2}%
+\ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+\fi
+\next#2\@nil
+}%
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawCircles{\pgfutil at ifnextchar[{\tkz at DrawCircles}{\tkz at DrawCircles[]}}
+\def\tkz at DrawCircles[#1](#2){%
+\xdef\tkz at optcircle{#1}
+\begingroup
+ \let\next\tkz at multicircles
+ \next#2 \@nil %
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+% #2 #3 rayon
+
+\def\tkzDrawSemiCircle{\pgfutil at ifnextchar[{\tkz at DrawSemiCircle}{%
+ \tkz at DrawSemiCircle[]}}
+\def\tkz at DrawSemiCircle[#1](#2,#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz at ax=\pgf at x%
+ \tkz at ay=\pgf at y%
+ \path(#2)--++(-\tkz at ax,-\tkz at ay) coordinate (tkz at pt);
+ \tkzDrawArc[#1,delta=0](#2,#3)(tkz at pt)
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+\def\tkz at multisemicircles#1 #2\@nil{%
+\protected at edef\tkz at temp{
+\noexpand \tkzDrawSemiCircle[\tkz at optsemicircle](#1)}\tkz at temp%
+\def\tkz at nextArg{#2}%
+\ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+\fi
+\next#2\@nil
+}%
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSemiCircles{\pgfutil at ifnextchar[{\tkz at DrawSemiCircles}{%
+\tkz at DrawSemiCircles[]}}
+\def\tkz at DrawSemiCircles[#1](#2){%
+\xdef\tkz at optsemicircle{#1}
+\begingroup
+ \let\next\tkz at multisemicircles
+ \next#2 \@nil %
+\endgroup
+}%
+%<---------------------------- Fill Circle --------------------------------–>
+\def\tkzFillCircle{\pgfutil at ifnextchar[{\tkz at FillCircle}{\tkz at FillCircle[]}}
+\def\tkz at FillCircle[#1](#2,#3){%
+\begingroup
+ \node [fill,circle through=(#3),#1] at (#2) {};
+\endgroup
+}%
+\def\tkz at multifillcircles#1 #2\@nil{%
+\protected at edef\tkz at temp{
+\noexpand \tkzFillCircle[\tkz at optfillcircle](#1)}\tkz at temp%
+\def\tkz at nextArg{#2}%
+\ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+\fi
+\next#2\@nil
+}%
+\def\tkzFillCircles{\pgfutil at ifnextchar[{\tkz at FillCircles}{%
+\tkz at FillCircles[]}}
+\def\tkz at FillCircles[#1](#2){%
+\xdef\tkz at optfillcircle{#1}
+\begingroup
+ \let\next\tkz at multifillcircles
+ \next#2 \@nil %
+\endgroup
+}%
+
+%<--------------------------- Clip Circle ---------------------------------–>
+\pgfkeys{/tkzclipc/.cd,
+ out code/.is if = tkzClipOutCircle,
+ out/.code = \tkzClipOutCirclefalse
+}%
+%<--------------------------------------------------------------------------–>
+\def\tkzClipCircle{\pgfutil at ifnextchar[{\tkz at ClipCircle}{\tkz at ClipCircle[]}}
+\def\tkz at ClipCircle[#1](#2,#3){%
+\tkzClipOutCircletrue
+\pgfqkeys{/tkzclipc}{#1}
+ \tkz@@CalcLength(#2,#3){tkzLengthResult}
+ \iftkzClipOutCircle
+ \clip (#2) circle (\tkzLengthResult pt);
+ \else
+ \clip (#2) circle (\tkzLengthResult pt) [tkzreverseclip] ;
+ \fi
+}
+%<--------------------------- Label Circle --------------------------------–>
+\def\tkzLabelCircle{\pgfutil at ifnextchar[{\tkz at LabelCircle}{%
+ \tkz at LabelCircle[]}}
+% [option] (#2,#3) #2 center #3 un point du cercle #4 angle #5 the label
+\def\tkz at LabelCircle[#1](#2,#3)(#4)#5{%
+\begingroup
+ \tkzURotateAngle(#2,#4)(#3)
+ \node[label style,#1] at (tkzPointResult) {#5};
+\endgroup
+}
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-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-draw-eu-compass.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-compass.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-compass.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,100 @@
+% tkz-obj-eu-compass.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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-compass.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Author Alain Matthes
+% idea from Y. Combe
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% Utilisation du Compas : Compass
+%<--------------------------------------------------------------------------–>
+% Setup Compass
+%<--------------------------------------------------------------------------–>
+\pgfkeys{tkzsucompass/.cd,
+ line width/.store in = \tkz at compass@lw,
+ color/.store in = \tkz at compass@color,
+ style/.store in = \tkz at compass@style,
+ line width = \tkz at euc@compasswidth,
+ color = \tkz at euc@compasscolor,
+ style = \tkz at euc@compassstyle,
+ /tkzsucompass/.search also = {/tikz,/tkzcompass}
+ }
+%<--------------------------------------------------------------------------–>
+\def\tkzSetUpCompass{\pgfutil at ifnextchar[{\tkz at SetUpCompass}{\tkz at SetUpCompass[]}}
+%<--------------------------------------------------------------------------–>
+\def\tkz at SetUpCompass[#1]{%
+\pgfqkeys{/tkzsucompass}{#1}
+\tikzset{compass style/.style={%
+ color = \tkz at compass@color,
+ line width = \tkz at compass@lw,
+ style = \tkz at compass@style
+ }}
+}
+%<--------------------------------------------------------------------------–>
+% \tkzCompass(A, B)
+%
+% Marque de compas auto-ajustée en longueur
+% #2 center #3 le point
+% Par défaut:
+% longueur : 1cm, mais avec un maximum d'un angle de 180°
+% angle calculé pour la longueur
+% style traits pleins
+
+%<--------------------------------------------------------------------------–>
+ \pgfkeys{/tkzcompass/.cd,
+ delta/.store in = \tkz at delta,
+ length/.store in = \tkz at length,
+ length = 1,
+ delta = 0,
+ /tkzcompass/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1, /tikz/\searchname/.retry=#1}}
+}
+
+\def\tkzCompass{\pgfutil at ifnextchar[{\tkz at Compass}{\tkz at Compass[]}}
+\def\tkz at Compass[#1](#2,#3){%
+\begingroup
+\pgfkeys{tkzcompass/.cd,#1}
+\tkz@@CalcLength(#2,#3){tkz at tempLen}
+\ifnum\tkz at delta=0 %
+ \pgfmathsetmacro{\tkz at delta}{min(deg(\tkz at length cm/ \tkz at tempLen pt),180)/2}
+\fi
+\tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at angle}%
+\draw[shift ={(#2)},compass style,/tkzcompass/.cd,#1]%
+ (\tkz at angle-\tkz at delta:\tkz at tempLen pt)%
+ arc (\tkz at angle-\tkz at delta:\tkz at angle+\tkz at delta:\tkz at tempLen pt);
+\endgroup}
+%<--------------------------------------------------------------------------–>
+\def\tkz at multiCompass#1 #2\@nil{%
+ \protected at edef\tkz at temp{
+ \noexpand \tkzCompass[\tkz at optcompass](#1)}\tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+\def\tkzCompasss{\pgfutil at ifnextchar[{\tkz at Compasss}{\tkz at Compasss[]}}
+
+\def\tkz at Compasss[#1](#2){%
+\global\edef\tkz at optcompass{#1}
+\begingroup
+ \let\next\tkz at multiCompass
+ \next#2 \@nil %
+\endgroup
+}%
+
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-compass.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-draw-eu-lines.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,281 @@
+% tkz-obj-eu-draw-lines.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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-draw-lines.tex}
+\makeatletter
+
+%<--------------------------------------------------------------------------–>
+% Setup Line
+%<--------------------------------------------------------------------------–>
+\pgfkeys{%
+ tkzsuline/.cd,
+ line width/.code = \def\tkz at line@width{#1},
+ color/.code = \def\tkz at line@color{#1},
+ style/.code = \def\tkz at line@style{#1},
+ add/.code args = {#1 and #2} {\def\tkz at line@left{#1}
+ \def\tkz at line@right{#2}},
+ /tkzsuline/.search also = {/tikz}
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzSetUpLine{\pgfutil at ifnextchar[{\tkz at SetUpLine}{\tkz at SetUpLine[]}}
+\def\tkz at SetUpLine[#1]{%
+\pgfkeys{%
+ tkzsuline/.cd,
+ line width = \tkz at euc@linewidth,
+ color = \tkz at euc@linecolor,
+ style = \tkz at euc@linestyle,
+ add = {\tkz at euc@lineleft} and {\tkz at euc@lineright}}
+\pgfqkeys{/tkzsuline}{#1}
+\tikzset{%
+ line style/.append style ={%
+ line width = \tkz at line@width,
+ color = \tkz at line@color,
+ style = \tkz at line@style,
+ add = {\tkz at line@left} and {\tkz at line@right},
+ line cap = round,
+ #1}
+ }
+}% end setup
+%<--------------------------------------------------------------------------–>
+% Drawing a line
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% \pgfkeys{/tkzdrawl/.cd,
+% /tkzdrawl/.search also={/tikz}
+% }
+\def\tkzDrawLine{\pgfutil at ifnextchar[{\tkz at DrawLine}{\tkz at DrawLine[]}}
+\def\tkz at DrawLine[#1](#2,#3){%
+\begingroup
+ % \pgfqkeys{/tkzdrawl}{#1}
+ \draw[line style,#1] (#2) to (#3);
+\endgroup
+}
+%<-------------------------------------------------------------------------–
+% tkzDrawLines
+%<-------------------------------------------------------------------------–
+\def\tkz@@multiLines#1 #2\@nil{%
+ \protected at edef\tkz at temp{
+ \noexpand \tkzDrawLine[\tkz at optline](#1)}\tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawLines{\pgfutil at ifnextchar[{\tkz at DrawLines}{\tkz at DrawLines[]}}
+\def\tkz at DrawLines[#1](#2){%
+\xdef\tkz at optline{#1}
+\begingroup
+ \let\next\tkz@@multiLines
+ \next#2 \@nil %
+\endgroup
+}%
+%<-------------------------------------------------------------------------–>
+% Label
+%<-------------------------------------------------------------------------–>
+\def\tkzLabelLine{\pgfutil at ifnextchar[{\tkz at AddLabelLine}{\tkz at AddLabelLine[]}}
+\def\tkz at AddLabelLine[#1](#2,#3)#4{\path (#2) to node[#1]{#4}(#3);}
+
+
+%<--------------------------------------------------------------------------–>
+% draw segment (s)
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/tkzdraws/.cd,
+ /tkzdraws/.search also={/tikz},
+}
+\def\tkzDrawSegment{\pgfutil at ifnextchar[{\tkz at DrawSegment}{%
+ \tkz at DrawSegment[]}}
+\def\tkz at DrawSegment[#1](#2,#3){%
+\scope
+ \pgfqkeys{/tkzdraws}{#1}
+ \draw[line style,add=0 and 0,#1] (#2) to (#3);
+\endscope
+}%
+
+\def\tkz at multiDrawSeg#1 #2\@nil{%
+ \protected at edef\tkz at temp{
+ \noexpand \tkzDrawSegment[\tkz at optseg](#1)}\tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+\def\tkzDrawSegments{\pgfutil at ifnextchar[{\tkz at DrawSegments}{%
+ \tkz at DrawSegments[]}}
+\def\tkz at DrawSegments[#1](#2){%
+\def\tkz at optseg{#1}
+\begingroup
+ \let\next\tkz at multiDrawSeg
+ \next#2 \@nil %
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Mark Segment
+%<--------------------------------------------------------------------------–>
+\pgfkeys{
+ /@tkzmarkoptions/.cd,
+ pos/.store in = \tkz at mkpos,
+ color/.store in = \tkz at mkcolor,
+ mark/.store in = \tkz at markseg,
+ size/.store in = \tkz at mksize,
+ size = 4pt,
+ color = \tkz at mk@color,
+ pos = .5,
+ mark = |,
+ /@tkzmarkoptions/.search also={/tikz},
+}
+\def\tkzMarkSegment{\pgfutil at ifnextchar[{\tkz at MarkSegment}{\tkz at MarkSegment[]}}
+\def\tkz at MarkSegment[#1](#2,#3){%
+\begingroup
+ \pgfqkeys{/@tkzmarkoptions}{#1}
+\def\tkz at mymark{\pgfsetplotmarksize{\tkz at mksize}\pgfuseplotmark{\tkz at markseg}}
+\begin{scope}
+ [decoration={markings,mark=at position \tkz at mkpos with {\tkz at mymark}}]
+ \path [\tkz at mkcolor,/@tkzmarkoptions/.cd,#1,postaction={decorate}] (#2) -- (#3);
+\end{scope}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% multiple
+\def\tkz at multiMS#1 #2\@nil{%
+ \protected at edef\tkz at temp{
+ \noexpand \tkzMarkSegment[\tkz at optsg](#1)}\tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzMarkSegments{\pgfutil at ifnextchar[{\tkz at MarkSegments}{\tkz at MarkSegments[]}}
+\def\tkz at MarkSegments[#1](#2){%
+\def\tkz at optsg{#1}
+ \begingroup
+ \let\next\tkz at multiMS
+ \next#2 \@nil %
+\endgroup
+}
+%<-------------------------------------------------------------------------–>
+% Label on segment
+%<-------------------------------------------------------------------------–>
+\def\tkzLabelSegment{\pgfutil at ifnextchar[{\tkz at LabelSegment}%
+ {\tkz at LabelSegment[]}}
+\def\tkz at LabelSegment[#1](#2,#3)#4{%
+\begingroup
+ \path (#2) to node[label style,#1]{#4} (#3) ;
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% multiple
+\def\tkz at multiLS#1 #2\@nil{%
+ \protected at edef\tkz at temp{
+ \noexpand \tkzLabelSegment[\tkz at optls](#1){\tkz at labelseg}}\tkz at temp%
+ \def\tkz at nextArg{#2}%
+ \ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzLabelSegments{\pgfutil at ifnextchar[{\tkz at LabelSegments}{\tkz at LabelSegments[]}}
+\def\tkz at LabelSegments[#1](#2)#3{%
+\def\tkz at optls{#1}
+\def\tkz at labelseg{#3}
+ \begingroup
+ \let\next\tkz at multiLS
+ \next#2 \@nil %
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% PolySeg
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawPolySeg{\pgfutil at ifnextchar[{\tkz at DrawPolySeg}{\tkz at DrawPolySeg[]}}
+\def\tkz at DrawPolySeg[#1](#2,#3){%
+\begingroup
+\draw[line style,#1] (#2)
+ \foreach \pt in {#2,#3}{--(\pt)};%
+\endgroup
+}
+
+
+%<--------------------------------------------------------------------------–>
+% add dim
+ % \draw[dim={5,7pt,}] (A) -- (B);
+ % \draw[dim={7,10pt,transform shape}] (B) -- (C);
+ % \draw[dim={X,,}] (A) -- (C);
+%<--------------------------------------------------------------------------–>
+% new code from muzimuzhi Z
+%https://tex.stackexchange.com/questions/553430/change-color-and-style-of-dimension-lines-in-tkz-euclide/553441
+
+\pgfkeys{/pgf/decoration/.cd, distance/.initial = 10pt}
+
+\pgfdeclaredecoration{add dim}{final}{
+\state{final}{%
+\pgfmathsetmacro{\dist}{\pgfkeysvalueof{/pgf/decoration/distance}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{1.2*\dist}}
+ \pgfpathmoveto{\pgfpoint{\pgfdecoratedpathlength}{0pt}}
+ \pgfpathlineto{\pgfpoint{(\pgfdecoratedpathlength}{1.2*\dist}}
+ % start of patch
+ \pgfusepath{stroke}
+ \pgfsetarrowsstart{latex}
+ \pgfsetarrowsend{latex}
+ \expandafter\pgfsetdash\tkz at dim@dashpattern
+ \pgfsetstrokecolor{\tkz at dim@color}
+ % end of patch
+ \pgfpathmoveto{\pgfpoint{0pt}{\dist}}
+ \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{\dist}}
+ \pgfusepath{stroke}
+ \pgfpathmoveto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{0pt}}
+}}
+
+
+\tikzset{
+ dim/.style args={#1,#2,#3}{%
+ postaction={
+ decoration={
+ show path construction,
+ lineto code={
+ % dim fence
+ \draw[dim fence style/.try]
+ (\tikzinputsegmentfirst) --
+ ($ (\tikzinputsegmentfirst)!1.2*(#2)!90:(\tikzinputsegmentlast) $)
+ (\tikzinputsegmentlast) --
+ ($ (\tikzinputsegmentlast)!1.2*(#2)!-90:(\tikzinputsegmentfirst) $);
+ % dim
+ \draw[dim style/.try]
+ ($ (\tikzinputsegmentfirst)!#2!90:(\tikzinputsegmentlast) $) --
+ node[inner sep=0pt, font=\footnotesize, fill=\tkz at fillcolor, pos=.5, #3] {#1}
+ ($ (\tikzinputsegmentlast)!#2!-90:(\tikzinputsegmentfirst) $);
+ }
+ },
+ decorate,
+ }
+ },
+ dim/.default={,0pt,},
+ dim style/.style={
+ latex-latex,
+ },
+}
+
+%<--------------------------- style line --------------------------------->
+\tikzset{add/.style args={#1 and #2}{to path={%
+ ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)%
+ \tikztonodes}}
+}
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-lines.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-draw-eu-points.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-points.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-points.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,171 @@
+ % tkz-obj-eu-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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-points.tex}
+\makeatletter
+%<--------------------------------------------------------------------------->
+% tkzSetUpPoint définit la forme d'un point
+%<--------------------------------------------------------------------------->
+\pgfkeys{/tkzsetuppt/.cd,
+ size/.store in = \tkz at pt@size,
+ color/.store in = \tkz at pt@color,
+ fill/.store in = \tkz at pt@fill,
+ shape/.store in = \tkz at pt@shape,
+ size = \tkz at euc@pointsize,
+ color = \tkz at euc@pointcolor,
+ fill = \tkz at euc@pointcolor,
+ shape = \tkz at euc@pointshape,
+ /tkzsetuppt/.search also = {/tikz},
+ }
+\def\tkzSetUpPoint{\pgfutil at ifnextchar[{\tkz at SetUpPoint}{%
+ \tkz at SetUpPoint[]}}
+\def\tkz at SetUpPoint[#1]{%
+\pgfqkeys{/tkzsetuppt}{#1}
+% redefine point style with new values
+\tikzset{point style/.style={draw = \tkz at pt@color,
+ inner sep = 0pt,
+ shape = \tkz at pt@shape,
+ minimum size = \tkz at pt@size,
+ fill = \tkz at pt@fill}}
+}% end setup
+%<--------------------------------------------------------------------------->
+% Draw Point
+%<--------------------------------------------------------------------------->
+\pgfkeys{/tkzdrawpt/.cd,
+ size/.code = {\tikzset{point style/.append style={minimum size = #1}}},
+ size = \tkz at euc@pointsize,
+ /tkzdrawpt/.search also = {/tikz},
+}
+%<--------------------------------------------------------------------------
+\def\tkzDrawPoint{\pgfutil at ifnextchar[{\tkz at DrawPoint}{\tkz at DrawPoint[]}}
+\def\tkz at DrawPoint[#1](#2){%
+\begingroup
+ \pgfqkeys{/tkzdrawpt}{#1}
+ \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016
+\endgroup
+}
+%<--------------------------------------------------------------------------->
+\def\tkzDrawPoints{\pgfutil at ifnextchar[{\tkz at drawpts}{\tkz at drawpts[]}}
+%<--------------------------------------------------------------------------->
+\def\tkz at drawpts[#1](#2){%
+\begingroup
+ \pgfqkeys{/tkzdrawpt}{#1}
+ \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016
+\endgroup
+}
+%<-------------------------------------------------------------------------->
+% tkzLabelPoint Affichage des LABELS pour un point
+%<-------------------------------------------------------------------------->
+\def\tkzLabelPoint{\pgfutil at ifnextchar[{\tkz at LabelPoint}{\tkz at LabelPoint[]}}
+\def\tkz at LabelPoint[#1](#2)#3{%
+ \node[label style,#1] at (#2) {#3};}%
+%<--------------------------------------------------------------------------->
+
+\def\tkzLabelPoints{\pgfutil at ifnextchar[{\tkz at LabelPoints}{\tkz at LabelPoints[]}}%
+\def\tkz at LabelPoints[#1](#2){%
+ \foreach \point in {#2}{
+ \node[label style,#1] at (\point) {$\point$};}
+}%
+%<--------------------------------------------------------------------------->
+\pgfkeys{/tkzsetuppt/.cd,
+ size/.store in = \tkz at pt@size,
+ color/.store in = \tkz at pt@color,
+ fill/.store in = \tkz at pt@fill,
+ shape/.store in = \tkz at pt@shape,
+ size = \tkz at euc@pointsize,
+ color = \tkz at euc@pointcolor,
+ fill = \tkz at euc@pointcolor,
+ shape = \tkz at euc@pointshape,
+ /tkzsetuppt/.search also = {/tikz},
+ }
+\def\tkzSetUpPoint{\pgfutil at ifnextchar[{\tkz at SetUpPoint}{%
+ \tkz at SetUpPoint[]}}
+\def\tkz at SetUpPoint[#1]{%
+\pgfqkeys{/tkzsetuppt}{#1}
+% redefine point style with new values
+\tikzset{point style/.style={draw = \tkz at pt@color,
+ inner sep = 0pt,
+ shape = \tkz at pt@shape,
+ minimum size = \tkz at pt@size,
+ fill = \tkz at pt@fill}}
+}% end setup
+%<--------------------------------------------------------------------------->
+%
+%<--------------------------------------------------------------------------->
+\def\tkzSetUpLabel{\pgfutil at ifnextchar[{\tkz at SetUpLabel}{%
+ \tkz at SetUpLabel[]}}
+\def\tkz at SetUpLabel[#1]{%
+\tikzset{label style/.style={#1}}
+}% end setup
+%<--------------------------------------------------------------------------->
+
+\pgfkeys{/tkzautolab/.cd,
+ center/.store in = \tkz at center,
+ dist/.store in = \tkz at dist,
+ dist = 0.15,
+ /tkzautolab/.search also = {/tikz},
+}
+\def\tkzAutoLabelPoints{\pgfutil at ifnextchar[{\tkz at AutoLabelPoints}{\tkz at AutoLabelPoints[]}}%
+\def\tkz at AutoLabelPoints[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzautolab}{#1}
+ \foreach \point in {#2}{
+ \path (\tkz at center) -- ($ (\point) + \tkz at dist*($(\point)-(\tkz at center)$) $) node[/tkzautolab/.cd,label style,#1]{$\point$};}
+\endgroup
+}%
+%<--------------------------------------------------------------------------->
+% PointShowCoord
+%<--------------------------------------------------------------------------->
+\pgfkeys{/tkzprcoord/.cd,
+ xlabel/.store in = \tkz at xlabel,
+ ylabel/.store in = \tkz at ylabel,
+ xstyle/.code = {\tikzset{xcoord style/.append style={#1}}},
+ ystyle/.code = {\tikzset{ycoord style/.append style={#1}}},
+ noxdraw/.is if = tkz at coord@noxdraw,
+ noxdraw/.default = true,
+ noydraw/.is if = tkz at coord@noydraw,
+ noydraw/.default = true,
+ xlabel = {},
+ ylabel = {},
+ xstyle = {},
+ ystyle = {},
+ noxdraw = false,
+ noydraw = false,
+ /tkzprcoord/.search also = {/tikz},
+}
+\def\tkzPointShowCoord{\pgfutil at ifnextchar[{\tkz at PointShowCoord}{\tkz at PointShowCoord[]}}
+\def\tkz at PointShowCoord[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzprcoord}{#1}
+% 2019 for showcoord
+ \iftkznodedefined{tkz at xline}{}{%
+ \path (0,0) --(1,0) node(tkz at xline){};
+ \path (0,0) --(0,1) node(tkz at yline){};
+ }
+\iftkz at coord@noxdraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 |- tkz at xline);\fi
+\iftkz at coord@noydraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 -| tkz at yline);\fi
+\ifx\tkzutil at empty\tkz at xlabel
+\else
+\path (#2)--(#2 |- tkz at xline)
+ node[xcoord style] {\tkz at xlabel};
+\fi
+\ifx\tkzutil at empty\tkz at ylabel
+\else
+ \path (#2)--(#2 -| tkz at yline)
+ node[ycoord style] {\tkz at ylabel};
+\fi
+\endgroup
+}
+\let\tkzShowPointCoord\tkzPointShowCoord
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-points.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-draw-eu-polygons.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-polygons.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-polygons.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,106 @@
+% tkz-obj-eu-polygons.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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-polygons.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Polygon
+%<--------------------------------------------------------------------------–>
+%<---------------------------- Draw --------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawPolygon{\pgfutil at ifnextchar[{\tkz at DrawPolygon}{%
+ \tkz at DrawPolygon[]}}
+\def\tkz at DrawPolygon[#1](#2,#3){%
+ \begingroup
+ \draw[line style,line join=round,#1] (#2)
+ \foreach \pt in {#2,#3}{--(\pt)}--cycle;%
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkz at multipolygons#1 #2\@nil{%
+\protected at edef\tkz at temp{
+\noexpand \tkzDrawPolygon[\tkz at optpolygon](#1)}\tkz at temp%
+\def\tkz at nextArg{#2}%
+\ifx\tkzutil at empty\tkz at nextArg
+ \let\next\@gobble
+\fi
+\next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawPolygons{\pgfutil at ifnextchar[{\tkz at DrawPolygons}{\tkz at DrawPolygons[]}}
+\def\tkz at DrawPolygons[#1](#2){%
+\xdef\tkz at optpolygon{#1}
+\begingroup
+ \let\next\tkz at multipolygons
+ \next#2 \@nil %
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+%<---------------------------- FILL --------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzFillPolygon{\pgfutil at ifnextchar[{\tkz at FillPolygon}{%
+ \tkz at FillPolygon[]}}
+\def\tkz at FillPolygon[#1](#2,#3){%
+ \begingroup
+ \fill[#1] (#2)
+ \foreach \pt in {#2,#3}{--(\pt)}--cycle;%
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<-------------- Labels for Regular Polygon -------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/deflabelregpoly/.cd,
+ name/.store in = \tkz at regpolname,
+ sep/.store in = \tkz at regpolsep,
+ name = P,
+ sep = 1.1
+}
+
+\def\tkzLabelRegPolygon{\pgfutil at ifnextchar[{\tkz at labelPolygon}{%
+ \tkz at labelPolygon[]}}
+\def\tkz at labelPolygon[#1](#2)#3{%
+\begingroup
+\pgfqkeys{/deflabelregpoly}{#1}
+ \foreach \v [count=\vi from 1] in {#3} {%
+ \path (#2) to [pos=1.1] node {$\v$} (\tkz at regpolname\vi) ;
+ \pgfnodealias{\v}{\tkz at regpolname\vi}
+ }
+\endgroup
+}
+%<---------------------------- CLIP --------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+
+\pgfkeys{tkzclippolygon/.cd,
+ out code/.is if = tkzClipOutPoly,
+ out/.code = \tkzClipOutPolyfalse}
+
+\def\tkzClipPolygon{\pgfutil at ifnextchar[{\tkz at ClipPolygon}{\tkz at ClipPolygon[]}}
+\def\tkz at ClipPolygon[#1](#2,#3){%
+\tkzClipOutPolytrue
+\pgfqkeys{/tkzclippolygon}{#1}%
+\iftkzClipOutPoly
+\clip (#2)
+ \foreach \pt in {#2,#3}{--(\pt)}--cycle;
+\else
+ \clip(#2)
+ \foreach \pt in {#2,#3}{--(\pt)}--cycle[tkzreverseclip] ;
+\fi
+}%
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-polygons.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-draw-eu-protractor.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-protractor.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-protractor.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,121 @@
+% tkz-obj-eu-protractor.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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-protractor.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% !!! idea from Y. Combe !!!
+%<--------------------------------------------------------------------------–>
+% \tkzProtractor Protractor
+%
+% Rapporteur ajustable et positionable
+%
+% Par défaut:
+% centre en (0,0)
+% rayon de 5 cm
+% ligne de base horizontale.
+% épaisseur de ligne 0.4 pt
+%
+% Paramètres (optionnels, gérés par xkeyval)
+% shift : coordonées (n'importe quelle forme
+% acceptée par tikz).
+% scale : facteur d'échelle
+% rotate : rotation
+% lw : line width (épaisseur des lignes)
+% ce paramètre subit le facteur d'échelle.
+%<--------------------------------------------------------------------------–>
+\def\FullProtractor{%
+\draw[fill=black!50!yellow!20!,even odd rule,semitransparent]%
+ (0,0) circle (4cm);
+\draw (0,0) circle (3.3cm);
+\draw (0,0) circle (4cm);
+\draw[fill=black] (0,0) circle (.08mm);
+\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
+\foreach \x in {0, 90, ..., 360}{%
+ \draw[very thin, gray!40] (a) -- (\x:4cm);}
+\foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);}
+\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);}
+\foreach \x in {0,10,...,350}{%
+ \node[rotate=(\x-90)] at (\x:3.6cm) {\tiny\x};
+}
+ \draw [>=stealth',->, thick,black] (0:2.5) arc(0:32:2.5);
+ \draw [>=stealth',->, thick,black] (0:2) arc(0:32:2);
+ \draw [>=stealth',->, thick,black] (0:1.5) arc(0:32:1.5);
+}
+
+\def\FullProtractorReturn{%
+\draw[fill=black!50!yellow!20!,even odd rule,semitransparent] (0,0) circle (4cm);
+\draw (0,0) circle (3.3cm);
+\draw (0,0) circle (4cm);
+\draw[fill=black] (0,0) circle (.08mm);
+\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
+\foreach \x in {0, 90, ..., 360}{%
+ \draw[very thin, gray!40] (a) -- (\x:4cm);}
+\foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);}
+\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);}
+\begin{scope}
+ \foreach \x in {0,10,...,350}{%
+ \node[rotate=(-\x-90)] at (-\x:3.6cm) {\tiny\x};
+}
+ \end{scope}
+ \draw [>=stealth',->, thick,black] (0:2.5) arc(0:-32:2.5);
+ \draw [>=stealth',->, thick,black] (0:2) arc(0:-32:2);
+ \draw [>=stealth',->, thick,black] (0:1.5) arc(0:-32:1.5);
+}
+
+\pgfkeys{
+ protractor/.cd,
+ lw/.code = {\def\cmdMO at Rap@lw{#1}},
+ shift/.code = {\def\cmdMO at Rap@shift{#1}},
+ rotate/.code = {\def\cmdMO at Rap@rotate{#1}},
+ scale/.code = {\def\cmdMO at Rap@scale{#1}},
+ return/.is if = tkz at RappReturn,
+ return/.code = \tkz at RappReturnfalse,
+ /protractor/.search also={/tikz},
+ lw = 0.4pt,
+ scale=1,
+ shift={(0,0)},
+ rotate=0
+ }
+
+\def\tkzProtractor{\pgfutil at ifnextchar[{\tkz at Protractor}{\tkz at Protractor[]}}
+\def\tkz at Protractor[#1](#2,#3){%
+\tkz at RappReturnfalse
+\pgfqkeys{/protractor}{#1}
+ \tkz@@extractxy{#2}
+ \global\tkz at ax\pgf at x
+ \global\tkz at ay\pgf at y
+ \tkzFindSlopeAngle(#2,#3)
+ \tkzGetAngle{cmdMO at Rap@rotate}%
+ \global\let\tkz@@Protractor\FullProtractor%
+ \iftkz at RappReturn
+ \global\let\tkz@@Protractor\FullProtractorReturn
+ \else
+ \global\let\tkz@@Protractor\FullProtractor
+ \fi
+ \pgfmathsetlengthmacro{\MO at lw}{\cmdMO at Rap@lw * \cmdMO at Rap@scale}
+ \begin{scope}[shift = {(\tkz at ax,\tkz at ay)},%
+ scale = \cmdMO at Rap@scale,%
+ rotate = \cmdMO at Rap@rotate,%
+ every node/.style = {scale =\cmdMO at Rap@scale,
+ rotate =\cmdMO at Rap@rotate},%
+ line width=\MO at lw]%
+ \tkz@@Protractor
+\end{scope}
+}
+%<--------------------------------------------------------------------------–>
+% fin de \tkzProtractor
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-protractor.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-draw-eu-sectors.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-sectors.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-sectors.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,326 @@
+% tkz-obj-eu-sectors.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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-sectors.tex}
+\makeatletter
+%<----------------------- Sectors ------------------------------–>
+\gdef\tkz at nums{0}
+\pgfkeys{/drawsector/.cd,
+ towards/.code = {\def\tkz at nums{0}},
+ rotate/.code = {\def\tkz at nums{1}},
+ R/.code = {\def\tkz at nums{2}},
+ R with nodes/.code = {\def\tkz at nums{3}},
+ towards,
+ /drawsector/.search also = {/tikz},
+}
+
+\def\tkzDrawSector{\pgfutil at ifnextchar[{\tkz at DrawSector}{\tkz at DrawSector[]}}
+\def\tkz at DrawSector[#1](#2,#3)(#4){%
+\begingroup
+\pgfqkeys{/drawsector}{#1}
+\ifcase\tkz at nums%
+ \tkzDrawSectorN[#1](#2,#3)(#4)
+\or% 1
+ \tkzDrawSectorRotate[#1](#2,#3)(#4)
+\or% 2
+ \tkzDrawSectorRAngles[#1](#2,#3)(#4)
+\or% 3
+ \tkzDrawSectorR[#1](#2,#3)(#4)
+\fi
+\endgroup
+}
+\def\tkzDrawSectorRAngles{\pgfutil at ifnextchar[{\tkz at DrawSectorRAngles}{%
+ \tkz at DrawSectorRAngles[]}}
+\def\tkz at DrawSectorRAngles[#1](#2,#3)(#4,#5){%
+\begingroup
+ \pgfmathparse{#4}\edef\tkz at FirstAngle{\pgfmathresult}%
+ \pgfmathparse{#5}\edef\tkz at SecondAngle{\pgfmathresult}%
+ \pgfmathgreaterthan{\tkz at FirstAngle}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathsubtract{\tkz at FirstAngle}{360}
+ \edef\tkz at FirstAngle{\pgfmathresult}%
+ \fi
+ \else
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathadd{\tkz at SecondAngle}{360}
+ \edef\tkz at SecondAngle{\pgfmathresult}%
+ \fi
+ \fi
+ \draw[shift = {(#2)},/drawsector/.cd,#1]%
+ (#2) --(\tkz at FirstAngle:#3) arc (\tkz at FirstAngle:\tkz at SecondAngle:#3)--cycle;
+ \endgroup
+ } % revoir il y a plus simple que ce shift !!!
+%<--------------------------------------------------------------------------–>
+% \tkzDrawSectorN(O,A)(B)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSectorN{\pgfutil at ifnextchar[{\tkz at DrawSectorN}{%
+ \tkz at DrawSectorN[]}}
+\def\tkz at DrawSectorN[#1](#2,#3)(#4){%
+\begingroup
+ \tkz@@CalcLengthcm(#2,#3){tkz at radius}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at DrawSectorRAngles[#1](#2,\tkz at radius)(\tkz at FirstAngle,%
+ \tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% \tkzDrawSectorRotate(O,A)(angle de rotation) ??? pb avec angle negatif
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSectorRotate{\pgfutil at ifnextchar[{\tkz at DrawSectorRotate}{%
+ \tkz at DrawSectorRotate[]}}
+\def\tkz at DrawSectorRotate[#1](#2,#3)(#4){%
+\begingroup
+ \tkz@@CalcLengthcm(#2,#3){tkz at radius}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstA}
+ \pgfmathadd{\tkz at FirstA}{#4}
+ \edef\tkz at SecondA{\pgfmathresult}
+ \pgfmathgreaterthan{#4}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \tkz at DrawSectorRAngles[#1](#2,\tkz at radius)(\tkz at FirstA,\tkz at SecondA)
+ \else
+ \tkz at DrawSectorRAngles[#1](#2,\tkz at radius)(\tkz at SecondA,\tkz at FirstA)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% \tkzDrawSectorAngles(O,A)(ang1,ang2)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSectorAngles{\pgfutil at ifnextchar[{\tkz at DrawSectorAngles}{%
+ \tkz at DrawSectorAngles[]}}
+\def\tkz at DrawSectorAngles[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkz@@CalcLengthcm(#2,#3){tkz at radius}
+ \tkz at DrawSectorRAngles[#1](#2,\tkz at radius pt)(#4,#5)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% \tkzDrawSectorRwithNodesAngles(O,A,B)(ang1,ang2)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSectorRwithNodesAngles{\pgfutil at ifnextchar[{%
+ \tkz at DrawSectorRwithNodesAngles}{%
+ \tkz at DrawSectorRwithNodesAngles[]}}
+\def\tkz at DrawSectorRwithNodesAngles[#1](#2,#3,#4)(#5,#6){%
+\begingroup
+ \tkz@@CalcLengthcm(#3,#4){tkz at radius}
+ \tkz at DrawSectorRAngles[#1](#2,\tkz at radius pt)(#5,#6)
+\endgroup
+}
+% %<--------------------------------------------------------------------------–>
+
+%<--------------------------------------------------------------------------–>
+% \tkzDrawSectorR(O, rad)(A,B)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSectorR{\pgfutil at ifnextchar[{\tkz at DrawSectorR}{%
+ \tkz at DrawSectorR[]}}
+\def\tkz at DrawSectorR[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at DrawSectorRAngles[#1](#2,#3)(\tkz at FirstAngle,\tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Fill
+%<--------------------------------------------------------------------------–>
+\gdef\tkz at nums{0}
+\pgfkeys{/@fillsector/.cd,
+ towards/.code = {\def\tkz at nums{0}},
+ rotate/.code = {\def\tkz at nums{1}},
+ R/.code = {\def\tkz at nums{2}},
+ R with nodes/.code = {\def\tkz at nums{3}},
+ towards,
+ /@fillsector/.search also={/tikz},
+}
+
+\def\tkzFillSector{\pgfutil at ifnextchar[{\tkz at FillSector}{\tkz at FillSector[]}}
+\def\tkz at FillSector[#1](#2,#3)(#4){%
+\begingroup
+\pgfqkeys{/@fillsector}{#1}
+\ifcase\tkz at nums%
+ \tkzFillSectorN[#1](#2,#3)(#4)
+\or% 1
+ \tkzFillSectorRotate[#1](#2,#3)(#4)
+\or% 2
+ \tkzFillSectorRAngles[#1](#2,#3)(#4)
+\or% 3
+ \tkzFillSectorR[#1](#2,#3)(#4)
+\fi
+\endgroup
+}
+
+
+\def\tkzFillSectorRAngles{\pgfutil at ifnextchar[{\tkz at FillSectorRAngles}{%
+ \tkz at FillSectorRAngles[]}}
+\def\tkz at FillSectorRAngles[#1](#2,#3)(#4,#5){%
+\begingroup
+ \pgfmathparse{#4}\edef\tkz at FirstAngle{\pgfmathresult}%
+ \pgfmathparse{#5}\edef\tkz at SecondAngle{\pgfmathresult}%
+ \pgfmathgreaterthan{\tkz at FirstAngle}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathsubtract{\tkz at FirstAngle}{360}
+ \edef\tkz at FirstAngle{\pgfmathresult}%
+ \fi
+ \else
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathadd{\tkz at SecondAngle}{360}
+ \edef\tkz at SecondAngle{\pgfmathresult}%
+ \fi\fi
+ \pgfmathsubtract{\tkz at FirstAngle}{0}
+ \edef\tkz at FirstAngle{\pgfmathresult}%
+ \pgfmathadd{\tkz at SecondAngle}{0}
+ \edef\tkz at SecondAngle{\pgfmathresult}
+ \path[shift = {(#2)},/@fillsector/.cd,fill=\tkz at fillcolor,#1] (#2) -- %
+ (\tkz at FirstAngle:#3) arc (\tkz at FirstAngle:\tkz at SecondAngle:#3)--cycle;
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% \tkzFillSectorN(O,A)(B)
+%<--------------------------------------------------------------------------–>
+\def\tkzFillSectorN{\pgfutil at ifnextchar[{\tkz at FillSectorN}{\tkz at FillSectorN[]}}
+\def\tkz at FillSectorN[#1](#2,#3)(#4){%
+\begingroup
+ \tkz@@CalcLength(#2,#3){tkz at radius}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(\tkz at FirstAngle,%
+ \tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% \tkzFillSectorRotate(O,A)(angle de rotation) ??? pb avec angle negatif
+%<--------------------------------------------------------------------------–>
+\def\tkzFillSectorRotate{\pgfutil at ifnextchar[{\tkz at FillSectorRotate}{%
+ \tkz at FillSectorRotate[]}}
+\def\tkz at FillSectorRotate[#1](#2,#3)(#4){%
+\begingroup
+ \tkz@@CalcLength(#2,#3){tkz at radius}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstA}
+ \pgfmathadd{\tkz at FirstA}{#4}
+ \edef\tkz at SecondA{\pgfmathresult}
+ \pgfmathgreaterthan{#4}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(\tkz at FirstA,\tkz at SecondA)
+ \else
+ \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(\tkz at SecondA,\tkz at FirstA)
+ \fi
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+% \tkzFillSectorAngles(O,A)(ang1,ang2)
+%<--------------------------------------------------------------------------–>
+\def\tkzFillSectorAngles{\pgfutil at ifnextchar[{\tkz at FillSectorAngles}{%
+ \tkz at FillSectorAngles[]}}
+\def\tkz at FillSectorAngles[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkz@@CalcLength(#2,#3){tkz at radius}
+ \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(#4,#5)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% \tkzFillSectorR(O, rad)(A,B)
+%<--------------------------------------------------------------------------–>
+\def\tkzFillSectorR{\pgfutil at ifnextchar[{\tkz at FillSectorR}{%
+ \tkz at FillSectorR[]}}
+\def\tkz at FillSectorR[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at FillSectorRAngles[#1](#2,#3)(\tkz at FirstAngle,\tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------- Clip Sector ----------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkz at ClipSectorRAngles(#1,#2)(#3,#4){%
+\begingroup
+ \pgfmathparse{#3}\edef\tkz at FirstAngle{\pgfmathresult}%
+ \pgfmathparse{#4}\edef\tkz at SecondAngle{\pgfmathresult}%
+ \pgfmathgreaterthan{\tkz at FirstAngle}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathsubtract{\tkz at FirstAngle}{360}
+ \edef\tkz at FirstAngle{\pgfmathresult}%
+ \fi
+ \else
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathadd{\tkz at SecondAngle}{360}
+ \edef\tkz at SecondAngle{\pgfmathresult}%
+ \fi
+ \fi
+ \clip[shift = {(#1)}] (#1) --(\tkz at FirstAngle:#2)%
+ arc(\tkz at FirstAngle:\tkz at SecondAngle:#2) -- cycle;
+ \endgroup
+ } % revoir il y a plus simple que ce shift !!!
+%<--------------------------------------------------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkz at ClipSectorRotate(#1,#2)(#3){%
+\begingroup
+ \tkz@@CalcLength(#1,#2){tkz at radius}
+ \tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz at FirstA}
+ \pgfmathadd{\tkz at FirstA}{#3}
+ \edef\tkz at SecondA{\pgfmathresult}
+ \pgfmathgreaterthan{#3}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \tkz at ClipSectorRAngles(#1,\tkz at radius pt)(\tkz at FirstA,\tkz at SecondA)
+ \else
+ \tkz at ClipSectorRAngles(#1,\tkz at radius pt)(\tkz at SecondA,\tkz at FirstA)
+ \fi
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkz at ClipSectorN(#1,#2)(#3){%
+\begingroup
+ \tkz@@CalcLength(#1,#2){tkz at radius}
+ \tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz at FirstAngle}
+ \tkzFindSlopeAngle(#1,#3)\tkzGetAngle{tkz at SecondAngle}
+ \tkz at ClipSectorRAngles(#1,\tkz at radius pt)(\tkz at FirstAngle,\tkz at SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkz at numcs{0}
+\pgfkeys{/clipsector/.cd,
+ towards/.code = {\def\tkz at numcs{0}},
+ rotate/.code = {\def\tkz at numcs{1}},
+ R/.code = {\def\tkz at numcs{2}},
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzClipSector{\pgfutil at ifnextchar[{\tkz at ClipSector}{%
+ \tkz at ClipSector[]}}
+
+\def\tkz at ClipSector[#1](#2,#3)(#4){%
+\pgfkeys{/clipsector/.cd}
+\pgfqkeys{/clipsector}{#1}
+\ifcase\tkz at numcs%
+ \tkz at ClipSectorN(#2,#3)(#4)
+ \or% 1
+ \tkz at ClipSectorRotate(#2,#3)(#4)
+ \or% 2
+ \tkz at ClipSectorRAngles(#2,#3)(#4)
+ \fi
+}
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-sectors.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-draw-eu-show.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-show.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-show.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,347 @@
+%tkz-obj-eu-show.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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-show.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% finding specific points in a triangle
+%<--------------------------------------------------------------------------–>
+% equi points
+%<--------------------------------------------------------------------------–>
+% draw ? show ?
+\pgfkeys{/tkzEquiPt/.cd,
+ from/.store in = {\tkz at frompoint},
+ dist/.store in = {\tkz at equ@dist},
+ show/.is if = tkz at equi@show,
+ dist = 2,
+ show = false,
+ /tkzEquiPt/.search also={/tikz}
+}
+
+\def\tkzDefEquiPoints{\pgfutil at ifnextchar[{\tkz at DefEquiPoints}{%
+ \tkz at DefEquiPoints[]}}
+\def\tkz at DefEquiPoints[#1](#2,#3){%
+\pgfqkeys{/tkzEquiPt}{#1}
+\begingroup
+ \tkzUProjection(#2,#3)(\tkz at frompoint)
+ \pgfnodealias{tkzEQpoint}{tkzPointResult}
+ \tkzVecKNorm[\tkz at equ@dist](tkzEQpoint,#2)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzVecKNorm[-\tkz at equ@dist](tkzEQpoint,#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \iftkz at equi@show
+ \tkzCompass[compass style,#1](\tkz at frompoint,tkzFirstPointResult)
+ \tkzCompass[compass style,#1](\tkz at frompoint,tkzSecondPointResult)
+ \fi
+\endgroup
+}
+
+%<--------------------------- The SHOW --------------------------------–>
+%<--------------------------------------------------------------------------–>
+\global\def\tkz at numsh{0}
+\pgfkeys{/show/.cd,
+ mediator/.code = \def\tkz at numsh{0},
+ perpendicular/.code args = {through #1} {\global\def\tkz at numsh{1}%
+ \def\tkz at through{#1}},
+ orthogonal/.code args = {through #1} {\global\def\tkz at numsh{1}%
+ \global\def\tkz at through{#1}},
+ parallel/.code args = {through #1} {\global\def\tkz at numsh{2}%
+ \global\def\tkz at through{#1}},
+ bisector/.code = \global\def\tkz at numsh{3},
+ K/.code = \def\tkz at koeff{#1},
+ length/.code = \def\tkz at show@length{#1},
+ ratio/.code = \def\tkz at show@ratio{#1},
+ gap/.code = \def\tkz at show@gap{#1},
+ size/.code = \def\tkz at show@size{#1},
+ /show/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1,
+ /tkzcompass/\searchname/.retry=#1,
+ /tikz/\searchname/.retry=#1}%
+ }
+ }
+\def\tkzShowLine{\pgfutil at ifnextchar[{\tkz at ShowLine}{\tkz at ShowLine[]}}
+\def\tkz at ShowLine[#1](#2){%
+\begingroup
+\pgfqkeys{/show}{ K = 1,
+ gap = 2,
+ ratio = .5,
+ length = 1,
+ size = 1
+ }
+\pgfqkeys{/show}{#1}
+\ifcase\tkz at numsh%
+ % first case 0
+ \tkzShowMediatorLine[#1](#2)
+ \or% 1
+ \tkzShowOrthLine[#1](#2)(\tkz at through)
+ \or% 2
+ \tkzShowLLLine[#1](#2)(\tkz at through)
+ \or% 3
+ \tkzShowBisectorLine[#1](#2)
+\fi
+\endgroup
+}
+
+\def\tkzShowMediatorLine{%
+ \pgfutil at ifnextchar[{\tkz at ShowMediatorLine}{\tkz at ShowMediatorLine[]}}
+\def\tkz at ShowMediatorLine[#1](#2,#3){%
+\begingroup
+\pgfkeys{show/.cd, gap = 2,
+ ratio = .5,
+ length = 1
+ }
+\pgfkeys{show/.cd,#1}
+ \path (#2) -- (#3) coordinate[pos=.5](tkzmidpoint);
+ \tkzURotateAngle(#2,60)(#3)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzURotateAngle(#3,60)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkz at VecKOrthNorm[1](tkzmidpoint,#2)
+ \pgfnodealias{MED at tmp1}{tkzPointResult}
+ \tkz at VecKOrthNorm[1](tkzmidpoint,#3)
+ \pgfnodealias{MED at tmp2}{tkzPointResult}
+ \tkz at VecKNorm[\tkz at show@gap](tkzmidpoint,MED at tmp1)
+ \pgfnodealias{MED at 1}{tkzPointResult}
+ \tkz at VecKNorm[\tkz at show@gap](tkzmidpoint,MED at tmp2)
+ \pgfnodealias{MED at 2}{tkzPointResult}
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#2,MED at 1)
+ \tkzCompass[compass style,#1](#3,MED at 1)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#2,MED at 2)
+ \tkzCompass[compass style,#1](#3,MED at 2)
+\endgroup
+}
+
+\def\tkzShowLLLine{\pgfutil at ifnextchar[{\tkz at ShowLLLine}{\tkz at ShowLLLine[]}}
+\def\tkz at ShowLLLine[#1](#2,#3)(#4){%
+\begingroup
+\pgfkeys{show/.cd,gap=2,ratio=.75,length=1}
+\pgfkeys{show/.cd,#1}
+ \tkz at VecKCoLinear[1](#2,#3,#4)
+ \pgfnodealias{tkz at lltmp}{tkzPointResult}
+ \tkzCompass[compass style,#1](#4,tkz at lltmp)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,tkz at lltmp)
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% tkzLineOrth
+%<--------------------------------------------------------------------------–>
+% pas de projection ortho car le point peut être sur la droite.
+% manque les tests . Il faudrait voir si on peut projeter et choisir
+\def\tkzShowOrthLine{\pgfutil at ifnextchar[{\tkz at ShowOrthLine}{\tkz at ShowOrthLine[]}}
+\def\tkz at ShowOrthLine[#1](#2,#3)(#4){%
+\begingroup
+\pgfkeys{show/.cd,
+ ratio = .75,
+ length = 1,
+ gap = -1,
+ size = 1}
+\pgfkeys{show/.cd,#1}
+ \tkzDefPointWith(#2,#3)
+ \pgfnodealias{tkz at OLtmp}{tkzPointResult}
+ \tkz at VecKCoLinear[1](#2,tkz at OLtmp,#4)
+ \pgfnodealias{tkzPointCo}{tkzPointResult}
+ \tkzInterLL(#2,#3)(#4,tkzPointCo)
+ \pgfnodealias{tkzPOpoint}{tkzPointResult}
+ \tkz@@CalcLength(#4,tkzPOpoint){tkz at mathLen}
+ \tkz at VecKNorm[1](#2,#3)
+ \pgfnodealias{PO at tmp}{tkzPointResult}
+ \tkz at VecKCoLinear[1](#2,PO at tmp,tkzPOpoint)
+ \pgfnodealias{PO at tmp2}{tkzPointResult}
+ \tkz at VecKCoLinear[-1](#2,PO at tmp,tkzPOpoint)
+ \pgfnodealias{PO at tmp1}{tkzPointResult}
+ \tkz at VecKCoLinear[\tkz at show@size](tkzPOpoint,PO at tmp1,tkzPOpoint)
+ \pgfnodealias{PO at 1}{tkzPointResult}
+ \tkz at VecKCoLinear[\tkz at show@size](tkzPOpoint,PO at tmp2,tkzPOpoint)
+ \pgfnodealias{PO at 2}{tkzPointResult}
+ \ifdim\tkz at mathLen pt>10 pt\relax
+ \tkz at VecKNorm[1](#4,tkzPOpoint)
+ \pgfnodealias{PO at tmp1}{tkzPointResult}
+ \else
+ \tkz at VecKOrthNorm[1](tkzPOpoint,PO at 2)
+ \pgfnodealias{PO at tmp1}{tkzPointResult}
+ \fi
+ \tkz at VecKCoLinear[-\tkz at show@gap](PO at tmp1,tkzPOpoint,tkzPOpoint)
+ \pgfnodealias{PO at 3}{tkzPointResult}
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#4,PO at 1)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#4,PO at 2)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](PO at 1,PO at 3)
+ \tkzCompass[compass style,#1,length=\tkz at show@length](PO at 2,PO at 3)
+\endgroup
+}
+%<-------------------------------------------------------------------------–>
+% bisector Line
+%<-------------------------------------------------------------------------–>
+\def\tkzShowBisectorLine{%
+ \pgfutil at ifnextchar[{\tkz at ShowBisectorLine}{\tkz at ShowBisectorLine[]}}
+\def\tkz at ShowBisectorLine[#1](#2,#3,#4){%
+\begingroup
+\pgfkeys{show/.cd, gap = 2,
+ ratio =. 5,
+ length = 1,
+ size = 1
+ }
+\pgfkeys{show/.cd,#1}
+ \tkzVecKNorm(#3,#2)
+ \pgfnodealias{tkz at pt1}{tkzPointResult}
+ \tkzVecKNorm(#3,#4)
+ \pgfnodealias{tkz at pt2}{tkzPointResult}
+ \tkzDefMidPoint(tkz at pt1,tkz at pt2)
+ \pgfnodealias{tkz at pt3}{tkzPointResult}
+ \tkzDefEquilateral(tkz at pt2,tkz at pt1)
+ \pgfnodealias{tkz at pt4}{tkzPointResult}
+ \tkzDefMidPoint(tkz at pt3,tkz at pt4)
+ \pgfnodealias{tkz at ptm}{tkzPointResult}
+ \tkzVecKNorm(#3,tkz at ptm)
+ \pgfnodealias{tkzBisPoint}{tkzPointResult}
+ \tkzVecKNorm[\tkz at show@size](#3,#2)
+ \pgfnodealias{BI at 1}{tkzPointResult}
+ \tkzVecKNorm[\tkz at show@size](#3,#4)
+ \pgfnodealias{BI at 2}{tkzPointResult}
+ \tkzVecK[\tkz at show@gap](#3,tkzBisPoint)
+ \pgfnodealias{tkzBisPoint}{tkzPointResult}
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#3,BI at 1)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#3,BI at 2)
+ \tkzCompass[compass style,#1,length=\tkz at show@length](BI at 1,tkzBisPoint)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](BI at 2,tkzBisPoint)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Transformations Géométriques
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% The SHOW
+%<--------------------------------------------------------------------------–>
+\def\tkz at numst{0}
+\pgfkeys{/showtsf/.cd,
+ reflection/.code args={over #1--#2}{%
+ \def\tkzdeb{#1}
+ \def\tkzfin{#2}
+ \def\tkz at numst{0}},
+ symmetry/.code args={center #1}{%
+ \def\tkzcenter{#1}
+ \def\tkz at numst{1}},
+ projection/.code args={onto #1--#2}{%
+ \def\tkzdeb{#1}
+ \def\tkzfin{#2}
+ \def\tkz at numst{2}},
+translation/.code args={from #1 to #2}{%
+ \def\tkzfrom{#1}%
+ \def\tkzto{#2}%
+ \def\tkz at numst{3}},
+ K/.code = \def\tkz at koeff{#1},
+ length/.code = \def\tkz at show@length{#1},
+ ratio/.code = \def\tkz at show@ratio{#1},
+ gap/.code = \def\tkz at show@gap{#1},
+ size/.code = \def\tkz at show@size{#1},
+/showtsf/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1,
+ /tkzcompass/\searchname/.retry=#1,
+ /tikz/\searchname/.retry=#1}}
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowTransformation{\pgfutil at ifnextchar[{\tkz at ShowTransformation}{%
+ \tkz at ShowTransformation[]}}
+\def\tkz at ShowTransformation[#1](#2){%
+\begingroup
+ \pgfqkeys{/showtsf}{K=1,gap=2,size=1,ratio=.5,length=1}
+ \pgfqkeys{/showtsf}{#1}
+ \pgfinterruptboundingbox
+\ifcase\tkz at numst%
+ % first case 0
+ \tkzShowSymOrth[#1](\tkzdeb,\tkzfin)(#2)
+ \or% 1
+ \tkzShowCSym[#1](\tkzcenter)(#2)
+ \or% 2
+ \tkzShowProjection[#1](\tkzdeb,\tkzfin)(#2)
+ \or% 3
+ \tkzShowTranslation[#1](\tkzfrom,\tkzto)(#2)
+ \fi
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowTranslation{\pgfutil at ifnextchar[{\tkz at ShowTranslation}{%
+ \tkz at ShowTranslation[]}}
+
+\def\tkz at ShowTranslation[#1](#2,#3)(#4){%
+\begingroup
+\tkz at VecKCoLinear[1](#2,#3,#4) \pgfnodealias{tkz at lltmp}{tkzPointResult}
+\tkzCompass[compass style,#1](#4,tkz at lltmp)
+\tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,tkz at lltmp)
+\endgroup}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowSymOrth{\pgfutil at ifnextchar[{\tkz at ShowSymOrth}{%
+ \tkz at ShowSymOrth[]}}
+\def\tkz at ShowSymOrth[#1](#2,#3)(#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz at ax =\pgf at y%
+ \tkz at ay =\pgf at x%
+ \path[coordinate](#4)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
+ \tkzInterLL(#2,#3)(#4,tkz at point)
+ \pgfnodealias{tkzPointofSym}{tkzPointResult}
+ \tkz at VecK[2](#4,tkzPointofSym)
+ \pgfnodealias{tkz at pointtsf}{tkzPointResult}
+ \tkzCompass[compass style,#1](#2,#4)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,#4)
+ \tkzCompass[compass style,#1](#2,tkz at pointtsf)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,tkz at pointtsf)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowCSym{\pgfutil at ifnextchar[{\tkz at ShowCSym}{\tkz at ShowCSym[]}}
+
+\def\tkz at ShowCSym[#1](#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz at ax=\pgf at x%
+ \tkz at ay=\pgf at y%
+\path[coordinate](#2)--++(-\tkz at ax,-\tkz at ay) coordinate (tkz at pointtsf);
+ \tkzCompass[compass style,#1](#2,tkz at pointtsf)
+ \tkzCompass[compass style,#1](#2,#3)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowProjection{\pgfutil at ifnextchar[{\tkz at ShowProjection}{%
+ \tkz at ShowProjection[]}}
+\def\tkz at ShowProjection[#1](#2,#3)(#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz at ax =\pgf at y%
+ \tkz at ay =\pgf at x%
+ \path[coordinate](#4)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
+ \tkzInterLL(#2,#3)(#4,tkz at point)
+ \pgfnodealias{tkz at pointtsf}{tkzPointResult}
+ \tkz at VecKCoLinear[1](#2,#3,tkz at pointtsf)
+ \pgfnodealias{SO at tmp1}{tkzPointResult}
+ \tkz at VecKCoLinear[-1](#2,#3,tkz at pointtsf)
+ \pgfnodealias{SO at tmp2}{tkzPointResult}
+ \tkz at VecKNorm[\tkz at show@size](tkz at pointtsf,SO at tmp1)
+ \pgfnodealias{SO at 1}{tkzPointResult}
+ \tkz at VecKNorm[\tkz at show@size](tkz at pointtsf,SO at tmp2)
+ \pgfnodealias{SO at 2}{tkzPointResult}
+ \tkz at VecKNorm[-\tkz at show@gap](tkz at pointtsf,#4)
+ \pgfnodealias{SO at 3}{tkzPointResult}
+ \tkzCompass[compass style,#1](#4,SO at 1)
+ \tkzCompass[compass style,#1](#4,SO at 2)
+ \tkzCompass[compass style,#1](SO at 1,SO at 3)
+ \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](SO at 2,SO at 3)
+\endgroup
+}
+\makeatother
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-draw-eu-show.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-euclide.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.cfg 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-euclide.cfg
-% Copyright 2022 Alain Matthes
+% 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.
@@ -16,9 +16,9 @@
% and save the file in a directory part of your TEXINPUTS environment
% variable.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-euclide.cfg}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-euclide.cfg}
%<------ colors ---------------------------------------–>
\def\tkz at backgroundcolor{white}
\def\tkz at textcolor{black}
@@ -134,7 +134,7 @@
\def\tkz at mk@fill{\tkz at otherlinecolor}
%<--------------------------------------------------------------------------–>
%<------------------------------ styles ---------------------------------–>
-\def\tkzSetUpStyle[#1]#2{\tikzset{#2/.style={#1}}}% add 2022
+\def\tkzSetUpStyle[#1]#2{\tikzset{#2/.style={#1}}}% add 2023
\tikzset{xlabel style/.style = {below = 3 pt,
inner sep = 1pt,
Modified: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-euclide.sty
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,11 +10,16 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
%-------------------------------------------------------------------------------
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-euclide.sty}
+\def\fileversion{5.00c}
+\def\filedate{2023/11/03}
+\typeout{2023/11/03 5.00c tkz-euclide.sty}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-euclide}[ 2022/09/23 4.25c for pure Euclidean Geometry ]
+\ProvidesPackage{tkz-euclide}[ 2023/11/03 5.00c for pure Euclidean Geometry ]
+\newif\if at tkzlua
+\@tkzluafalse
+\DeclareOption{lua}{\@tkzluatrue}
+\ProcessOptions\relax
+
\@ifpackageloaded{tkz-base}{
\newdimen\tkzRadius
\newdimen\tkzLength
@@ -148,45 +153,66 @@
\def\tkz at tmp@ya{-5}
\def\tkz at tmp@yb{+5}
%-------------------------------------------------------------------------------
-\DeclareOption*{}
-\ProcessOptions
+% \DeclareOption*{}
+% \ProcessOptions
%<---------------------------------------------------------->
% Initialisation
%<---------------------------------------------------------->
+\if at tkzlua
+\RequirePackage{luacode}
+\fi
+
+
\@ifpackageloaded{tkz-base}{}{%
-% from base
+% from base
+\input{tkz-lib-eu-marks.tex}
+\input{tkz-lib-eu-shape.tex}
\input{tkz-tools-eu-base.tex}
\input{tkz-tools-eu-utilities.tex}
\input{tkz-tools-eu-BB.tex}
+\input{tkz-tools-eu-colors.tex}
+\input{tkz-tools-eu-text.tex}
\input{tkz-obj-eu-grids.tex}
-\input{tkz-lib-eu-marks.tex}
-\input{tkz-tools-eu-text.tex}
-\input{tkz-lib-eu-shape.tex}
\input{tkz-obj-eu-axesmin.tex}
-\input{tkz-tools-eu-colors.tex}
\input{tkz-obj-eu-points.tex}
-\input{tkz-obj-eu-draw-points.tex}
+\input{tkz-draw-eu-points.tex}
}
-% next from euclide
-\input{tkz-tools-eu-angles}
-\input{tkz-tools-eu-intersections}
+% % 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}
+\else
+\input{tkz-obj-eu-points.tex}
+\input{tkz-obj-eu-points-by.tex}
\input{tkz-tools-eu-math.tex}
-\input{tkz-obj-eu-compass.tex}
+\input{tkz-tools-eu-intersections.tex}
+\input{tkz-obj-eu-points-with.tex}
+\input{tkz-obj-eu-points-spc.tex}
+\input{tkz-tools-eu-angles.tex}
+ \fi
+
+\input{tkz-obj-eu-points-rnd.tex}
\input{tkz-obj-eu-circles.tex}
\input{tkz-obj-eu-circles-by.tex}
-\input{tkz-obj-eu-draw-angles.tex}
-\input{tkz-obj-eu-draw-circles.tex}
-\input{tkz-obj-eu-draw-lines.tex}
-\input{tkz-obj-eu-draw-polygons.tex}
\input{tkz-obj-eu-lines.tex}
-\input{tkz-obj-eu-points-by.tex}
-\input{tkz-obj-eu-points-rnd.tex}
-\input{tkz-obj-eu-points-spc.tex}
-\input{tkz-obj-eu-points-with.tex}
\input{tkz-obj-eu-polygons.tex}
-\input{tkz-obj-eu-protractor.tex}
-\input{tkz-obj-eu-sectors.tex}
-\input{tkz-obj-eu-show.tex}
\input{tkz-obj-eu-triangles}
+% drawings
+\input{tkz-draw-eu-lines.tex}
+\input{tkz-draw-eu-circles.tex}
+\input{tkz-draw-eu-polygons.tex}
+\input{tkz-draw-eu-angles.tex}
+\input{tkz-draw-eu-sectors.tex}
+\input{tkz-draw-eu-compass.tex}
+\input{tkz-draw-eu-show.tex}
+\input{tkz-draw-eu-protractor.tex}
+
\endinput
\ No newline at end of file
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-marks.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-eu-lib-marks.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-lib-eu-marks.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-eu-shape.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-lib-eu-shape.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,10 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-lib-eu-shape.tex}
-\makeatletter
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-lib-eu-shape.tex}
%<--------------------------------------------------------------------------–>
% Création des symboles
%<--------------------------------------------------------------------------–>
@@ -47,5 +46,4 @@
\pgfpathlineto{\pgfqpoint{\pgf at xb}{0 pt}}
}
}
-\makeatother
\endinput
\ No newline at end of file
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-axesmin.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-axesmin.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-axesmin}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles-by.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-circles.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-circles.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzCircle center and one point
@@ -118,10 +118,9 @@
\tkz@@CalcLengthcm(#1,#2){tkz at lna}%
\tkz@@CalcLengthcm(#1,#3){tkz at lnb}%
\gdef\tkzMathResult{\fpeval{round(abs(\tkz at lnb - \tkz at lna),6)}}
- \ifdim\tkzMathResult pt < 1 pt\relax%
+ \ifdim\tkzMathResult pt < 1 pt\relax%
\tkzURotateAngle(#1,-90)(#2)
\pgfnodealias{tkz at a}{tkzPointResult}
-
\tkzUInversePoint(#3,#4)(tkz at a)
\pgfnodealias{tkzFirstPointResult}{tkzPointResult}
\tkzUInversePoint(#3,#4)(#2)
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-circles.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-circles.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-circles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% tkzCircle center and one point
@@ -80,16 +80,6 @@
\tkzRenamePoint(tkzSecondPointResult){tkzPointResult}
\endgroup
}
-%<--------------------------------------------------------------------------–>
-% Through Circle center and point
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleThrough(#1,#2){%
-\begingroup
- \tkz@@CalcLengthcm(#1,#2){tkzLengthResult}
- \node [draw,circle through=(#2)] at (#1) {};
- \tkzRenamePoint(#1){tkzPointResult}
-\endgroup
-}
%<--------------------------------------------------------------------------–>
% Diameter Circle
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,100 +0,0 @@
-% tkz-obj-eu-compass.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-compass.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% Author Alain Matthes
-% idea from Y. Combe
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% Utilisation du Compas : Compass
-%<--------------------------------------------------------------------------–>
-% Setup Compass
-%<--------------------------------------------------------------------------–>
-\pgfkeys{tkzsucompass/.cd,
- line width/.store in = \tkz at compass@lw,
- color/.store in = \tkz at compass@color,
- style/.store in = \tkz at compass@style,
- line width = \tkz at euc@compasswidth,
- color = \tkz at euc@compasscolor,
- style = \tkz at euc@compassstyle,
- /tkzsucompass/.search also = {/tikz,/tkzcompass}
- }
-%<--------------------------------------------------------------------------–>
-\def\tkzSetUpCompass{\pgfutil at ifnextchar[{\tkz at SetUpCompass}{\tkz at SetUpCompass[]}}
-%<--------------------------------------------------------------------------–>
-\def\tkz at SetUpCompass[#1]{%
-\pgfqkeys{/tkzsucompass}{#1}
-\tikzset{compass style/.style={%
- color = \tkz at compass@color,
- line width = \tkz at compass@lw,
- style = \tkz at compass@style
- }}
-}
-%<--------------------------------------------------------------------------–>
-% \tkzCompass(A, B)
-%
-% Marque de compas auto-ajustée en longueur
-% #2 center #3 le point
-% Par défaut:
-% longueur : 1cm, mais avec un maximum d'un angle de 180°
-% angle calculé pour la longueur
-% style traits pleins
-
-%<--------------------------------------------------------------------------–>
- \pgfkeys{/tkzcompass/.cd,
- delta/.store in = \tkz at delta,
- length/.store in = \tkz at length,
- length = 1,
- delta = 0,
- /tkzcompass/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1, /tikz/\searchname/.retry=#1}}
-}
-
-\def\tkzCompass{\pgfutil at ifnextchar[{\tkz at Compass}{\tkz at Compass[]}}
-\def\tkz at Compass[#1](#2,#3){%
-\begingroup
-\pgfkeys{tkzcompass/.cd,#1}
-\tkz@@CalcLength(#2,#3){tkz at tempLen}
-\ifnum\tkz at delta=0 %
- \pgfmathsetmacro{\tkz at delta}{min(deg(\tkz at length cm/ \tkz at tempLen pt),180)/2}
-\fi
-\tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at angle}%
-\draw[shift ={(#2)},compass style,/tkzcompass/.cd,#1]%
- (\tkz at angle-\tkz at delta:\tkz at tempLen pt)%
- arc (\tkz at angle-\tkz at delta:\tkz at angle+\tkz at delta:\tkz at tempLen pt);
-\endgroup}
-%<--------------------------------------------------------------------------–>
-\def\tkz at multiCompass#1 #2\@nil{%
- \protected at edef\tkz at temp{
- \noexpand \tkzCompass[\tkz at optcompass](#1)}\tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-\def\tkzCompasss{\pgfutil at ifnextchar[{\tkz at Compasss}{\tkz at Compasss[]}}
-
-\def\tkz at Compasss[#1](#2){%
-\global\edef\tkz at optcompass{#1}
-\begingroup
- \let\next\tkz at multiCompass
- \next#2 \@nil %
-\endgroup
-}%
-
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-angles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,534 +0,0 @@
-% tkz-tool-eu-angles.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tool-eu-angles.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% tkzSetUpArc
-%<--------------------------------------------------------------------------–>
-\pgfkeys{/tkzsetuparc/.cd,
- color/.store in = \tkz at arc@color,
- line width/.store in = \tkz at arc@lw,
- style/.store in = \tkz at arc@style,
- line width = \tkz at euc@linewidth,
- color = \tkz at euc@linecolor,
- style = \tkz at euc@linestyle,
- /tkzsetuparc/.search also = {/tikz,/tkzcompass},
- }
-\def\tkzSetUpArc{\pgfutil at ifnextchar[{\tkz at SetUpArc}{\tkz at SetUpArc[]}}
-\def\tkz at SetUpArc[#1]{%
-\pgfqkeys{/tkzsetuparc}{#1}
-\tikzset{arc style/.style={color = \tkz at arc@color,
- line width = \tkz at arc@lw,
- style = \tkz at arc@style
- }}
-}% end setup
-%<------------------------------ Arcs -------------------------------------–
-% options : delta
-% \def\tkz at delta{0}
-% \tikzset{arc style/.style={#1}}
-% \pgfkeys{/tikz/.cd,delta/.code={\def\tkz at delta{#1}}}
-\newif\iftkz at reverse
-\gdef\tkz at numa{0}
-\pgfkeys{/tkzdrawarc/.cd,
- type/.is choice,
- type/towards/.code = \def\tkz at numa{0},
- type/rotate/.code = \def\tkz at numa{1},
- type/angles/.code = \def\tkz at numa{2},
- type/R/.code = \def\tkz at numa{3},
- type/R with nodes/.code = \def\tkz at numa{4},
- towards/.style = {type=towards},
- rotate/.style = {type=rotate},
- R/.style = {type=R},
- angles/.style = {type=angles},
- R with nodes/.style = {type=R with nodes},
- diameter/.code = {},
- arc/.code = {},
- size/.code = {},
- mark/.code = {},
- mkpos/.code = {},
- mksize/.code = {},
- mkcolor/.code = {},
- type/.default = towards,
- delta/.store in = \tkz at delta,
- delta = 0,
- reverse/.is if = tkz at reverse,
- reverse/.default = true,
- reverse = false,
- /tkzdrawarc/.search also = {/tikz}
-}
-\def\tkzDrawArc{\pgfutil at ifnextchar[{\tkz at DrawArc}{\tkz at DrawArc[]}}
-\def\tkz at DrawArc[#1](#2,#3)(#4){%
-\begingroup
-\pgfqkeys{/tkzdrawarc}{#1}
-\ifcase\tkz at numa%
- \tkzDrawArcTowards[#1](#2,#3)(#4)
-\or% 1
- \tkzDrawArcRotate[#1](#2,#3)(#4)
-\or% 2
- \tkzDrawArcAngles[#1](#2,#3)(#4)
-\or% 3
- \tkzDrawArcRAngles[#1](#2,#3)(#4)
-\or% 4
- \tkzDrawArcR[#1](#2,#3)(#4)
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% ARC nodes #2 center #3 first point last point #4
-% delta un peu plus à chaque extrémité
-% example : \tkzDrawArc(A,B)(C)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcTowards{\pgfutil at ifnextchar[{\tkz at DrawArcN}{\tkz at DrawArcN[]}}
-\def\tkz at DrawArcN[#1](#2,#3)(#4){%
-\begingroup
- \tkz@@CalcLength(#2,#3){tkz at radius}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
- \tkz at DrawArcRAngles[#1](#2,\tkz at radius pt)(\tkz at FirstAngle,\tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% nodes #2 center #3 first point rotate #4 with Angle
-% delta un peu plus à chaque extrémité
-% tkzDrawArcRotate(O,A)(60)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcRotate{\pgfutil at ifnextchar[{\tkz at DrawArcRotate}{%
- \tkz at DrawArcRotate[]}}
-\def\tkz at DrawArcRotate[#1](#2,#3)(#4){%
-\begingroup
- \tkz@@CalcLength(#2,#3){tkz at radius}
- \tkzFindSlopeAngle(#2,#3) \tkzGetAngle{tkz at FirstA}
- \pgfmathadd{\tkz at FirstA}{#4}
- \edef\tkz at SecondA{\pgfmathresult}
- \pgfmathgreaterthan{#4}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \tkz at DrawArcRAngles[#1](#2,\tkz at radius pt)(\tkz at FirstA,\tkz at SecondA)
- \else
- \tkz at DrawArcRAngles[#1](#2,\tkz at radius pt)(\tkz at SecondA,\tkz at FirstA)
- \fi
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-% deux angles
-% \tkzDrawArcAngles(O,A)(0,60)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcAngles{\pgfutil at ifnextchar[{\tkz at DrawArcAngles}{%
- \tkz at DrawArcAngles[]}}
-\def\tkz at DrawArcAngles[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkz@@CalcLength(#2,#3){tkzLengthResult}
- \tkz at DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#4,#5)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Degree #2 center #4 - #3 radius from #5 (degree) to #6(degree)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcRwithNodes{\pgfutil at ifnextchar[{\tkz at DrawArcRwithNodes}{%
- \tkz at DrawArcRwithNodes[]}}
-\def\tkz at DrawArcRwithNodes[#1](#2,#3,#4)(#5,#6){%
-\begingroup
- \tkz@@CalcLength(#3,#4){tkzLengthResult}
- \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#6)\tkzGetAngle{tkz at SecondAngle}
- \tkz at DrawArcRAngles[#1](#2,\tkzLengthResult)(\tkz at FirstAngle,\tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Nodes R #2 center #3 radius en cm from #4(node) to #5(node)
-% \tkzDrawArcR(O,2)(A,B)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcR{\pgfutil at ifnextchar[{\tkz at DrawArcR}{\tkz at DrawArcR[]}}
-\def\tkz at DrawArcR[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at SecondAngle}
- \tkz at DrawArcRAngles[#1](#2,#3)(\tkz at FirstAngle,\tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% #1 center #2 radius #4 first angle (degree) #5 second angle (degree)
-% angles 0 .. 180 or -180 .. 0
-%<--------------------------------------------------------------------------–>
-% example : \tkzDrawArc(A,2)(30,90)
-\def\tkzDrawArcRAngles{\pgfutil at ifnextchar[{\tkz at DrawArcRAngles}{%
- \tkz at DrawArcRAngles[]}}
-\def\tkz at DrawArcRAngles[#1](#2,#3)(#4,#5){%
- \begingroup
- \tkzNormalizeAngle(#4,#5)
- \pgfmathsubtract{\tkz at FirstAngle}{\tkz at delta}
- \edef\tkz at FirstAngle{\pgfmathresult}%
- \pgfmathadd{\tkz at SecondAngle}{\tkz at delta}
- \edef\tkz at SecondAngle{\pgfmathresult}
- \iftkz at reverse
- \let\tkztemp\tkz at FirstAngle
- \let\tkz at FirstAngle\tkz at SecondAngle
- \let\tkz at SecondAngle\tkztemp
- \fi
- \draw[shift = {(#2)},arc style,/tkzdrawarc/.cd,#1]%
- (\tkz at FirstAngle:#3) arc (\tkz at FirstAngle:\tkz at SecondAngle:#3);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\pgfkeys{
- /@tkzmarkarc/.cd,
- pos/.store in = \tkz at mkarcpos,
- color/.store in = \tkz at mkcolor,
- mark/.store in = \tkz at markarcseg,
- size/.store in = \tkz at mkarcsize,
- color = teal!20,
- size = 4pt,
- pos = .5,
- mark = none,
- /@tkzmarkarc/.search also={/tikz},
-}
-\def\tkzMarkArc{\pgfutil at ifnextchar[{\tkz at MarkArc}{\tkz at MarkArc[]}}
-\def\tkz at MarkArc[#1](#2,#3,#4){%
-\begingroup
- \pgfqkeys{/@tkzmarkarc}{#1} \def\tkz at mymarkarc{\pgfsetplotmarksize{\tkz at mkarcsize}\pgfuseplotmark{\tkz at markarcseg}}
-\tkz@@CalcLength(#2,#3){tkz at radius}
-\tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
-\tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
-\tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
- \pgfmathsubtract{\tkz at FirstAngle}{\tkz at delta}
- \edef\tkz at FirstAngle{\pgfmathresult}%
- \pgfmathadd{\tkz at SecondAngle}{\tkz at delta}
- \edef\tkz at SecondAngle{\pgfmathresult}
-\begin{scope}[decoration={markings,mark=at position \tkz at mkarcpos with {\tkz at mymarkarc}}]
-\path[shift = {(#2)},\tkz at mkcolor,/@tkzmarkarc/.cd,#1,postaction={decorate}]%
-(\tkz at FirstAngle:\tkz at radius pt) arc (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at radius pt);
-\end{scope}
-\endgroup
-}
-
-\def\tkzLabelArc{\pgfutil at ifnextchar[{\tkz at LabelArc}{\tkz at LabelArc[]}}
-\def\tkz at LabelArc[#1](#2,#3,#4)#5{%
-\begingroup
-\pgfqkeys{/@tkzmarkarc}{#1}
-\tkz@@CalcLength(#2,#3){tkz at radius}
-\tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
-\tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
-\tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
-\pgfmathsubtract{\tkz at FirstAngle}{\tkz at delta}
-\edef\tkz at FirstAngle{\pgfmathresult}%
-\pgfmathadd{\tkz at SecondAngle}{\tkz at delta}
-\edef\tkz at SecondAngle{\pgfmathresult}
-\begin{scope}[decoration={markings,mark=at position \tkz at mkarcpos with \node{#5};}]
- \path[shift = {(#2)},/@tkzmarkarc/.cd,#1,postaction={decorate}]%
- (\tkz at FirstAngle:\tkz at radius pt) arc (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at radius pt); \end{scope}
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-% tkzDrawArcRAN >
-%<--------------------------------------------------------------------------->
-\def\tkzDrawArcRAN[#1](#2,#3)(#4,#5){%
-\begingroup
- \draw[shift = {(#2)},/tkzdrawarc/.cd,#1] (#4:#3) arc (#4:#5:#3);
-\endgroup
-}
-%<--------------- tkzPathArcRAN ----------------------------------
-\def\tkzPathArcRAN[#1](#2,#3)(#4,#5){%
-\begingroup
- \path[shift = {(#2)},/tkzdrawarc/.cd,#1] (#4:#3) arc (#4:#5:#3);
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-% Mark an angle modi 3.03 suppression de \tkz at mksize,
-%<--------------------------------------------------------------------------->
-% \tkzMarkAngle(B, A, C)
-%
-% Marque d'angle
-% arc de cercle (simple/double/triple) et marque d'églité.
-%
-% Par défaut:
-% arc = simple
-% size = 1 (rayon de l'arc)
-% style traits pleins
-% mkpos ? position: 0.5 (position de la marque)
-% mark rien du tout (ignoré si type est utilisé)
-%
-% Paramètres (optionnels)
-% arc : l, ll, lll
-% mksize : 1
-% gap : 3pt
-% dist ?
-% style : type de traits
-% position: 0.5
-% mark : none , |, ||,|||, z, s, x, o, oo mais tous les
-% % symboles de tikz sont permis
-%<------------------------- Label on angle -------------------------------->
-\def\tkz at arcsimple{l}
-\def\tkz at arcdouble{ll}
-\def\tkz at arctriple{lll}
-
-%\tikzset{lbstyle/.style = {color=\tkz at mainlinecolor}}
-
-\pgfkeys{/tkzmkangle/.cd,
- arc/.estore in = \tkz at arc,
- size/.store in = \tkz at size,
- mark/.store in = \tkz at markang,
- mkpos/.estore in = \tkz at mkpos,
- mksize/.store in = \tkz at mksize,
- mkcolor/.store in = \tkz at mkcolor,
- arc = l,
- size = 1,
- mark = none,
- mksize = 4pt,
- mkcolor = black,
- mkpos = 0.5,
- /tkzmkangle/.search also={/tikz}
-}
-\def\tkzMarkAngle{\pgfutil at ifnextchar[{\tkz at MarkAngle}{\tkz at MarkAngle[]}}
-\def\tkz at MarkAngle[#1](#2,#3,#4){%
-\begingroup
-\pgfqkeys{/tkzmkangle}{#1}
-\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
-\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
-\tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
-
-\def\tkz at mymark{\pgfsetplotmarksize{\tkz at mksize}\pgfuseplotmark{\tkz at markang}}
-% draw the arcs
-\begin{scope}[decoration= {markings,
- mark=at position \tkz at mkpos with {\tkz at mymark}}]
- \ifx\tkz at arc\tkz at arcsimple
- \tkzDrawArcRAN[#1,fill=none]%
- (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
- \tkzPathArcRAN[\tkz at mkcolor,postaction={decorate}]%
- (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)
- \else
- \ifx\tkz at arc\tkz at arcdouble
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm-2.5\pgflinewidth)%
- (\tkz at FirstAngle,\tkz at SecondAngle)
- \tkzPathArcRAN[\tkz at mkcolor,postaction={decorate}]%
- (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm+2.5\pgflinewidth)%
- (\tkz at FirstAngle,\tkz at SecondAngle)%
- \else
- \ifx\tkz at arc\tkz at arctriple
- \tkzDrawArcRAN[#1,fill=none]%
- (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
- \tkzPathArcRAN[\tkz at mkcolor,postaction={decorate}]%
- (#3,\tkz at size)(\tkz at FirstAngle,\tkz at SecondAngle)%
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm-2.5\pgflinewidth)%
- (\tkz at FirstAngle,\tkz at SecondAngle)%
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz at size cm+2.5\pgflinewidth)%
- (\tkz at FirstAngle,\tkz at SecondAngle)%
- \fi
- \fi
- \fi
-\end{scope}
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-% multiple
-\def\tkz at multiMA#1 #2\@nil{%
- \protected at edef\tkz at temp{
- \noexpand \tkzMarkAngle[\tkz at optma](#1)}\tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------->
-\def\tkzMarkAngles{\pgfutil at ifnextchar[{\tkz at MarkAngles}{\tkz at MarkAngles[]}}
-\def\tkz at MarkAngles[#1](#2){%
-\xdef\tkz at optma{#1}
- \begingroup
- \let\next\tkz at multiMA
- \next#2 \@nil %
-\endgroup
-}
-% fin de \tkzMarkAngle
-%<--------------------------------------------------------------------------->
-% Pic Angle
-%<--------------------------------------------------------------------------->
-\def\tkzPicAngle{\pgfutil at ifnextchar[{\tkz at PicAngle}{\tkz at PicAngle[]}}
-\def\tkz at PicAngle[#1](#2,#3,#4){%
-\begingroup
-\draw pic [#1]{angle=#2--#3--#4};
-\endgroup
-}
-\def\tkzPicRightAngle{\pgfutil at ifnextchar[{\tkz at PicRightAngle}{\tkz at PicRightAngle[]}}
-\def\tkz at PicRightAngle[#1](#2,#3,#4){%
-\begingroup
-\draw pic [#1]{right angle=#2--#3--#4};
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-% FillAngle
-%<--------------------------------------------------------------------------->
-\pgfkeys{/tkzFill/.cd,
- size/.store in = \tkz at size,
- size = 1,
- /tkzFill/.search also = {/tikz}
- }
-
-\def\tkzFillAngle{\pgfutil at ifnextchar[{\tkz at FillAngle}{\tkz at FillAngle[]}}
-\def\tkz at FillAngle[#1](#2,#3,#4){%
-\begingroup
-\pgfqkeys{/tkzFill}{#1}
- \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
- \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
- \tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
- \path[shift = {(#3)},fill=\tkz at euc@linecolor!10,/tkzFill/.cd,#1]%
- (#3) -- (\tkz at FirstAngle:\tkz at size) arc%
- (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at size)--cycle;
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-% multiple
-\def\tkz at multiFA#1 #2\@nil{\protected at edef\tkz at temp{%
- \noexpand \tkzFillAngle[\tkz at optfa](#1)}%
- \tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------->
-\def\tkzFillAngles{\pgfutil at ifnextchar[{\tkz at MFillAngles}{\tkz at MFillAngles[]}}
-\def\tkz at MFillAngles[#1](#2){%
-\xdef\tkz at optfa{#1}
-\begingroup
- \let\next\tkz at multiFA
- \next#2 \@nil %
-\endgroup
-}
-%<------------------------- Label on angle -------------------------------->
-\pgfkeys{/tkzlabelangle/.cd,
- dist/.store in = \tkzlabeldist,
- angle/.store in = \tkzlabelangle,
- dist = 1,
- angle = {},
- /tkzlabelangle/.search also={/tikz}
-}
-\def\tkzLabelAngle{\pgfutil at ifnextchar[{\tkz at LabelAngle}{\tkz at LabelAngle[]}}
-\def\tkz at LabelAngle[#1](#2,#3,#4)#5{%2016 added normalize from karu's code
-\begingroup
- \pgfqkeys{/tkzlabelangle}{#1}
- \ifx\tkzutil at empty\tkzlabelangle% no value so calc angle of bisector
- \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
- \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
- \tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
- \edef\tkzlabelAngle{\fpeval{(\tkz at SecondAngle+\tkz at FirstAngle)/2}}
- \fi
- \path (#3) --+(\tkzlabelAngle:\tkzlabeldist) node[label angle style,%
- /tkzlabelangle/.cd,#1] {#5};
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-%<--------------------------------------------------------------------------->
-% multiple labels
-\def\tkz at multiLBA#1 #2\@nil{%
- \protected at edef\tkz at temp{
- \noexpand \tkzLabelAngle[\tkz at optlba](#1){\tkz at labelangle}}\tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-% %<---------------------------------------------------------------------
-\def\tkzLabelAngles{\pgfutil at ifnextchar[{\tkz at LabelAngles}{%
- \tkz at LabelAngles[]}}
-\def\tkz at LabelAngles[#1](#2)#3{%
- \def\tkz at optlba{#1}
- \def\tkz at labelangle{#3}
- \begingroup
- \let\next\tkz at multiLBA
- \next#2 \@nil %
- \endgroup
-}
-%<-----------------------------------------------------------------------
-% Symbole droites perpendiculaires
-%<----------------------------------------------------------------------
-\pgfkeys{/tkzrightangle/.cd,
- norm tkz code/.is if = normtkzcode at execute,
- german/.code = \normtkzcode at executefalse,
- size/.store in = \tkz at ra@size,
- dotsize/.store in = \tkz at dotsize,
- size = .25,
- dotsize = 3 pt,
- /tkzrightangle/.search also={/tikz},
-}
-\newcommand*{\tkzMarkRightAngle}[1][]{\tkz at RightAngle[#1]}
-\def\tkz at RightAngle[#1](#2,#3,#4){%
-\begingroup
-\normtkzcode at executetrue
-\pgfqkeys{/tkzrightangle}{#1}
- \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
- \pgfpointanchor{#2}{center}}}
- \tkz at ax=\pgf at x\relax%
- \tkz at ay=\pgf at y\relax%
- \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
- \pgfpointanchor{#4}{center}}}
- \tkz at bx=\pgf at x\relax%
- \tkz at by=\pgf at y\relax%
- \ifnormtkzcode at execute%
- \draw[/tkzrightangle/.cd,#1]
- (#3) --++( 28.45274*\tkz at ra@size\tkz at ax , 28.45274*\tkz at ra@size\tkz at ay)
- --++( 28.45274*\tkz at ra@size\tkz at bx , 28.45274*\tkz at ra@size\tkz at by)
- --++(-28.45274*\tkz at ra@size\tkz at ax ,-28.45274*\tkz at ra@size\tkz at ay)
- -- (#3);
- \else%
- % find angles
- \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz at dirOne}
- \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz at dirTwo}
- \tkzNormalizeAngle(\tkz at dirOne,\tkz at dirTwo)
- \edef\tkzCircleAngle{\fpeval{(\tkz at SecondAngle+\tkz at FirstAngle)/2}}
- \tkzDrawArcRAN[/tkzrightangle/.cd,#1](#3,\tkz at ra@size)%
- (\tkz at FirstAngle,\tkz at SecondAngle)
- \path (#3) --+ (\tkzCircleAngle:\tkz at ra@size/2)
- node[fill,circle,minimum size=\tkz at dotsize,
- inner sep=0 pt,/tkzrightangle/.cd,#1] {};
-\fi%
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-\def\tkz at multiRA#1 #2\@nil{%
-\protected at edef\tkz at temp{
- \noexpand \tkzMarkRightAngle[\tkz at optRA](#1)}\tkz at temp%
-\def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
-\next#2\@nil
-}
-%<--------------------------------------------------------------------------->
-\def\tkzMarkRightAngles{\pgfutil at ifnextchar[{\tkz at RightAngles}{%
- \tkz at RightAngles[]}}
-\def\tkz at RightAngles[#1](#2){%
-\xdef\tkz at optRA{#1}
-\begingroup
- \let\next\tkz at multiRA
- \next#2 \@nil %
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-% tkzdefMidArc center and two points
-\def\tkzDefMidArc(#1,#2,#3){%
-\begingroup
-\tkz@@CalcLength(#1,#2){tkz at radius}
-\tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz at FirstAngle}
-\tkzFindSlopeAngle(#1,#3)\tkzGetAngle{tkz at SecondAngle}
-\tkzNormalizeAngle(\tkz at FirstAngle,\tkz at SecondAngle)
- \path[shift = {(#1)}](\tkz at FirstAngle:\tkz at radius pt) arc
- (\tkz at FirstAngle:\tkz at SecondAngle:\tkz at radius pt) coordinate[midway] (tkzPointResult);
-\endgroup
-}
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,162 +0,0 @@
-% tkz-obj-eu-draw-circles.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-draw-circles.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% tkzSetUpCircle
-%<--------------------------------------------------------------------------–>
-\pgfkeys{%
- /tkzsetupcirc/.cd,
- color/.code = \def\tkz at circle@color{#1},
- line width/.code = \def\tkz at circle@linewidth{#1},
- style/.code = \def\tkz at circle@style{#1},
- /tkzsetupcirc/.search also = {/tikz}
- }
- %<--------------------------------------------------------------------------–>
-
-\def\tkzSetUpCircle{\pgfutil at ifnextchar[{\tkz at SetUpCircle}{\tkz at SetUpCircle[]}}
-\def\tkz at SetUpCircle[#1]{%
-\pgfkeys{%
- tkzsetupcirc/.cd,
- line width = \tkz at euc@circlelw,
- color = \tkz at euc@circlecolor,
- style = \tkz at euc@circlestyle
-}
-\pgfqkeys{/tkzsetupcirc}{#1}
-\tikzset{%
- circle style/.append style = { %
- color = \tkz at circle@color,
- line width = \tkz at circle@linewidth,
- style = \tkz at circle@style,
- #1}
- }
-}% end setup
- %<--------------------------------------------------------------------------–>
-
-\def\tkzDrawCircle{\pgfutil at ifnextchar[{\tkz at DrawCircle}{\tkz at DrawCircle[]}}
-\def\tkz at DrawCircle[#1](#2,#3){%
-\begingroup
-\node [draw,circle through=(#3), circle style,#1] at (#2) {};
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkz at multicircles#1 #2\@nil{%
-\protected at edef\tkz at temp{
-\noexpand \tkzDrawCircle[\tkz at optcircle](#1)}\tkz at temp%
-\def\tkz at nextArg{#2}%
-\ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
-\fi
-\next#2\@nil
-}%
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawCircles{\pgfutil at ifnextchar[{\tkz at DrawCircles}{\tkz at DrawCircles[]}}
-\def\tkz at DrawCircles[#1](#2){%
-\xdef\tkz at optcircle{#1}
-\begingroup
- \let\next\tkz at multicircles
- \next#2 \@nil %
-\endgroup
-}%
-%<--------------------------------------------------------------------------–>
-% #2 #3 rayon
-
-\def\tkzDrawSemiCircle{\pgfutil at ifnextchar[{\tkz at DrawSemiCircle}{%
- \tkz at DrawSemiCircle[]}}
-\def\tkz at DrawSemiCircle[#1](#2,#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \tkz at ax=\pgf at x%
- \tkz at ay=\pgf at y%
- \path(#2)--++(-\tkz at ax,-\tkz at ay)coordinate (tkz at pt);
- \tkzDrawArc[#1,delta=0](#2,#3)(tkz at pt)
-\endgroup
-}%
-%<--------------------------------------------------------------------------–>
-\def\tkz at multisemicircles#1 #2\@nil{%
-\protected at edef\tkz at temp{
-\noexpand \tkzDrawSemiCircle[\tkz at optsemicircle](#1)}\tkz at temp%
-\def\tkz at nextArg{#2}%
-\ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
-\fi
-\next#2\@nil
-}%
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawSemiCircles{\pgfutil at ifnextchar[{\tkz at DrawSemiCircles}{%
-\tkz at DrawSemiCircles[]}}
-\def\tkz at DrawSemiCircles[#1](#2){%
-\xdef\tkz at optsemicircle{#1}
-\begingroup
- \let\next\tkz at multisemicircles
- \next#2 \@nil %
-\endgroup
-}%
-%<---------------------------- Fill Circle --------------------------------–>
-\def\tkzFillCircle{\pgfutil at ifnextchar[{\tkz at FillCircle}{\tkz at FillCircle[]}}
-\def\tkz at FillCircle[#1](#2,#3){%
-\begingroup
- \node [fill,circle through=(#3),#1] at (#2) {};
-\endgroup
-}%
-\def\tkz at multifillcircles#1 #2\@nil{%
-\protected at edef\tkz at temp{
-\noexpand \tkzFillCircle[\tkz at optfillcircle](#1)}\tkz at temp%
-\def\tkz at nextArg{#2}%
-\ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
-\fi
-\next#2\@nil
-}%
-\def\tkzFillCircles{\pgfutil at ifnextchar[{\tkz at FillCircles}{%
-\tkz at FillCircles[]}}
-\def\tkz at FillCircles[#1](#2){%
-\xdef\tkz at optfillcircle{#1}
-\begingroup
- \let\next\tkz at multifillcircles
- \next#2 \@nil %
-\endgroup
-}%
-
-%<--------------------------- Clip Circle ---------------------------------–>
-\pgfkeys{/tkzclipc/.cd,
- out code/.is if = tkzClipOutCircle,
- out/.code = \tkzClipOutCirclefalse
-}%
-%<--------------------------------------------------------------------------–>
-\def\tkzClipCircle{\pgfutil at ifnextchar[{\tkz at ClipCircle}{\tkz at ClipCircle[]}}
-\def\tkz at ClipCircle[#1](#2,#3){%
-\tkzClipOutCircletrue
-\pgfqkeys{/tkzclipc}{#1}
- \tkz@@CalcLength(#2,#3){tkzLengthResult}
- \iftkzClipOutCircle
- \clip (#2) circle (\tkzLengthResult pt);
- \else
- \clip (#2) circle (\tkzLengthResult pt) [tkzreverseclip] ;
- \fi
-}
-%<--------------------------- Label Circle --------------------------------–>
-\def\tkzLabelCircle{\pgfutil at ifnextchar[{\tkz at LabelCircle}{%
- \tkz at LabelCircle[]}}
-% [option] (#2,#3) #2 center #3 un point du cercle #4 angle #5 the label
-\def\tkz at LabelCircle[#1](#2,#3)(#4)#5{%
-\begingroup
- \tkzURotateAngle(#2,#4)(#3)
- \node[label style,#1] at (tkzPointResult) {#5};
-\endgroup
-}
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,281 +0,0 @@
-% tkz-obj-eu-draw-lines.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-draw-lines.tex}
-\makeatletter
-
-%<--------------------------------------------------------------------------–>
-% Setup Line
-%<--------------------------------------------------------------------------–>
-\pgfkeys{%
- tkzsuline/.cd,
- line width/.code = \def\tkz at line@width{#1},
- color/.code = \def\tkz at line@color{#1},
- style/.code = \def\tkz at line@style{#1},
- add/.code args = {#1 and #2} {\def\tkz at line@left{#1}
- \def\tkz at line@right{#2}},
- /tkzsuline/.search also = {/tikz}
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzSetUpLine{\pgfutil at ifnextchar[{\tkz at SetUpLine}{\tkz at SetUpLine[]}}
-\def\tkz at SetUpLine[#1]{%
-\pgfkeys{%
- tkzsuline/.cd,
- line width = \tkz at euc@linewidth,
- color = \tkz at euc@linecolor,
- style = \tkz at euc@linestyle,
- add = {\tkz at euc@lineleft} and {\tkz at euc@lineright}}
-\pgfqkeys{/tkzsuline}{#1}
-\tikzset{%
- line style/.append style ={%
- line width = \tkz at line@width,
- color = \tkz at line@color,
- style = \tkz at line@style,
- add = {\tkz at line@left} and {\tkz at line@right},
- line cap = round,
- #1}
- }
-}% end setup
-%<--------------------------------------------------------------------------–>
-% Drawing a line
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% \pgfkeys{/tkzdrawl/.cd,
-% /tkzdrawl/.search also={/tikz}
-% }
-\def\tkzDrawLine{\pgfutil at ifnextchar[{\tkz at DrawLine}{\tkz at DrawLine[]}}
-\def\tkz at DrawLine[#1](#2,#3){%
-\begingroup
- % \pgfqkeys{/tkzdrawl}{#1}
- \draw[line style,#1] (#2) to (#3);
-\endgroup
-}
-%<-------------------------------------------------------------------------–
-% tkzDrawLines
-%<-------------------------------------------------------------------------–
-\def\tkz@@multiLines#1 #2\@nil{%
- \protected at edef\tkz at temp{
- \noexpand \tkzDrawLine[\tkz at optline](#1)}\tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawLines{\pgfutil at ifnextchar[{\tkz at DrawLines}{\tkz at DrawLines[]}}
-\def\tkz at DrawLines[#1](#2){%
-\xdef\tkz at optline{#1}
-\begingroup
- \let\next\tkz@@multiLines
- \next#2 \@nil %
-\endgroup
-}%
-%<-------------------------------------------------------------------------–>
-% Label
-%<-------------------------------------------------------------------------–>
-\def\tkzLabelLine{\pgfutil at ifnextchar[{\tkz at AddLabelLine}{\tkz at AddLabelLine[]}}
-\def\tkz at AddLabelLine[#1](#2,#3)#4{\path (#2) to node[#1]{#4}(#3);}
-
-
-%<--------------------------------------------------------------------------–>
-% draw segment (s)
-%<--------------------------------------------------------------------------–>
-\pgfkeys{/tkzdraws/.cd,
- /tkzdraws/.search also={/tikz},
-}
-\def\tkzDrawSegment{\pgfutil at ifnextchar[{\tkz at DrawSegment}{%
- \tkz at DrawSegment[]}}
-\def\tkz at DrawSegment[#1](#2,#3){%
-\scope
- \pgfqkeys{/tkzdraws}{#1}
- \draw[line style,add=0 and 0,#1] (#2) to (#3);
-\endscope
-}%
-
-\def\tkz at multiDrawSeg#1 #2\@nil{%
- \protected at edef\tkz at temp{
- \noexpand \tkzDrawSegment[\tkz at optseg](#1)}\tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-\def\tkzDrawSegments{\pgfutil at ifnextchar[{\tkz at DrawSegments}{%
- \tkz at DrawSegments[]}}
-\def\tkz at DrawSegments[#1](#2){%
-\def\tkz at optseg{#1}
-\begingroup
- \let\next\tkz at multiDrawSeg
- \next#2 \@nil %
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Mark Segment
-%<--------------------------------------------------------------------------–>
-\pgfkeys{
- /@tkzmarkoptions/.cd,
- pos/.store in = \tkz at mkpos,
- color/.store in = \tkz at mkcolor,
- mark/.store in = \tkz at markseg,
- size/.store in = \tkz at mksize,
- size = 4pt,
- color = \tkz at mk@color,
- pos = .5,
- mark = |,
- /@tkzmarkoptions/.search also={/tikz},
-}
-\def\tkzMarkSegment{\pgfutil at ifnextchar[{\tkz at MarkSegment}{\tkz at MarkSegment[]}}
-\def\tkz at MarkSegment[#1](#2,#3){%
-\begingroup
- \pgfqkeys{/@tkzmarkoptions}{#1}
-\def\tkz at mymark{\pgfsetplotmarksize{\tkz at mksize}\pgfuseplotmark{\tkz at markseg}}
-\begin{scope}
- [decoration={markings,mark=at position \tkz at mkpos with {\tkz at mymark}}]
- \path [\tkz at mkcolor,/@tkzmarkoptions/.cd,#1,postaction={decorate}] (#2) -- (#3);
-\end{scope}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% multiple
-\def\tkz at multiMS#1 #2\@nil{%
- \protected at edef\tkz at temp{
- \noexpand \tkzMarkSegment[\tkz at optsg](#1)}\tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzMarkSegments{\pgfutil at ifnextchar[{\tkz at MarkSegments}{\tkz at MarkSegments[]}}
-\def\tkz at MarkSegments[#1](#2){%
-\def\tkz at optsg{#1}
- \begingroup
- \let\next\tkz at multiMS
- \next#2 \@nil %
-\endgroup
-}
-%<-------------------------------------------------------------------------–>
-% Label on segment
-%<-------------------------------------------------------------------------–>
-\def\tkzLabelSegment{\pgfutil at ifnextchar[{\tkz at LabelSegment}%
- {\tkz at LabelSegment[]}}
-\def\tkz at LabelSegment[#1](#2,#3)#4{%
-\begingroup
- \path (#2) to node[label style,#1]{#4} (#3) ;
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% multiple
-\def\tkz at multiLS#1 #2\@nil{%
- \protected at edef\tkz at temp{
- \noexpand \tkzLabelSegment[\tkz at optls](#1){\tkz at labelseg}}\tkz at temp%
- \def\tkz at nextArg{#2}%
- \ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzLabelSegments{\pgfutil at ifnextchar[{\tkz at LabelSegments}{\tkz at LabelSegments[]}}
-\def\tkz at LabelSegments[#1](#2)#3{%
-\def\tkz at optls{#1}
-\def\tkz at labelseg{#3}
- \begingroup
- \let\next\tkz at multiLS
- \next#2 \@nil %
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% PolySeg
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawPolySeg{\pgfutil at ifnextchar[{\tkz at DrawPolySeg}{\tkz at DrawPolySeg[]}}
-\def\tkz at DrawPolySeg[#1](#2,#3){%
-\begingroup
-\draw[line style,#1] (#2)
- \foreach \pt in {#2,#3}{--(\pt)};%
-\endgroup
-}
-
-
-%<--------------------------------------------------------------------------–>
-% add dim
- % \draw[dim={5,7pt,}] (A) -- (B);
- % \draw[dim={7,10pt,transform shape}] (B) -- (C);
- % \draw[dim={X,,}] (A) -- (C);
-%<--------------------------------------------------------------------------–>
-% new code from muzimuzhi Z
-%https://tex.stackexchange.com/questions/553430/change-color-and-style-of-dimension-lines-in-tkz-euclide/553441
-
-\pgfkeys{/pgf/decoration/.cd, distance/.initial = 10pt}
-
-\pgfdeclaredecoration{add dim}{final}{
-\state{final}{%
-\pgfmathsetmacro{\dist}{\pgfkeysvalueof{/pgf/decoration/distance}}
- \pgfpathmoveto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{0pt}{1.2*\dist}}
- \pgfpathmoveto{\pgfpoint{\pgfdecoratedpathlength}{0pt}}
- \pgfpathlineto{\pgfpoint{(\pgfdecoratedpathlength}{1.2*\dist}}
- % start of patch
- \pgfusepath{stroke}
- \pgfsetarrowsstart{latex}
- \pgfsetarrowsend{latex}
- \expandafter\pgfsetdash\tkz at dim@dashpattern
- \pgfsetstrokecolor{\tkz at dim@color}
- % end of patch
- \pgfpathmoveto{\pgfpoint{0pt}{\dist}}
- \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{\dist}}
- \pgfusepath{stroke}
- \pgfpathmoveto{\pgfpoint{0pt}{0pt}}
- \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{0pt}}
-}}
-
-
-\tikzset{
- dim/.style args={#1,#2,#3}{%
- postaction={
- decoration={
- show path construction,
- lineto code={
- % dim fence
- \draw[dim fence style/.try]
- (\tikzinputsegmentfirst) --
- ($ (\tikzinputsegmentfirst)!1.2*(#2)!90:(\tikzinputsegmentlast) $)
- (\tikzinputsegmentlast) --
- ($ (\tikzinputsegmentlast)!1.2*(#2)!-90:(\tikzinputsegmentfirst) $);
- % dim
- \draw[dim style/.try]
- ($ (\tikzinputsegmentfirst)!#2!90:(\tikzinputsegmentlast) $) --
- node[inner sep=0pt, font=\footnotesize, fill=\tkz at fillcolor, pos=.5, #3] {#1}
- ($ (\tikzinputsegmentlast)!#2!-90:(\tikzinputsegmentfirst) $);
- }
- },
- decorate,
- }
- },
- dim/.default={,0pt,},
- dim style/.style={
- latex-latex,
- },
-}
-
-%<--------------------------- style line --------------------------------->
-\tikzset{add/.style args={#1 and #2}{to path={%
- ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)%
- \tikztonodes}}
-}
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-points.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-points.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-points.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,172 +0,0 @@
- % tkz-obj-eu-points.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-points.tex}
-\makeatletter
-%<--------------------------------------------------------------------------->
-% tkzSetUpPoint définit la forme d'un point
-%<--------------------------------------------------------------------------->
-\pgfkeys{/tkzsetuppt/.cd,
- size/.store in = \tkz at pt@size,
- color/.store in = \tkz at pt@color,
- fill/.store in = \tkz at pt@fill,
- shape/.store in = \tkz at pt@shape,
- size = \tkz at euc@pointsize,
- color = \tkz at euc@pointcolor,
- fill = \tkz at euc@pointcolor,
- shape = \tkz at euc@pointshape,
- /tkzsetuppt/.search also = {/tikz},
- }
-\def\tkzSetUpPoint{\pgfutil at ifnextchar[{\tkz at SetUpPoint}{%
- \tkz at SetUpPoint[]}}
-\def\tkz at SetUpPoint[#1]{%
-\pgfqkeys{/tkzsetuppt}{#1}
-% redefine point style with new values
-\tikzset{point style/.style={draw = \tkz at pt@color,
- inner sep = 0pt,
- shape = \tkz at pt@shape,
- minimum size = \tkz at pt@size,
- fill = \tkz at pt@fill}}
-}% end setup
-%<--------------------------------------------------------------------------->
-% Draw Point
-%<--------------------------------------------------------------------------->
-\pgfkeys{/tkzdrawpt/.cd,
- size/.code = {\tikzset{point style/.append style={minimum size = #1}}},
- size = \tkz at euc@pointsize,
- /tkzdrawpt/.search also = {/tikz},
-}
-%<--------------------------------------------------------------------------
-\def\tkzDrawPoint{\pgfutil at ifnextchar[{\tkz at DrawPoint}{\tkz at DrawPoint[]}}
-\def\tkz at DrawPoint[#1](#2){%
-\begingroup
- \pgfqkeys{/tkzdrawpt}{#1}
- \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016
-\endgroup
-}
-%<--------------------------------------------------------------------------->
-\def\tkzDrawPoints{\pgfutil at ifnextchar[{\tkz at drawpts}{\tkz at drawpts[]}}
-%<--------------------------------------------------------------------------->
-\def\tkz at drawpts[#1](#2){%
-\begingroup
- \pgfqkeys{/tkzdrawpt}{#1}
- \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016
-\endgroup
-}
-%<-------------------------------------------------------------------------->
-% tkzLabelPoint Affichage des LABELS pour un point
-%<-------------------------------------------------------------------------->
-\def\tkzLabelPoint{\pgfutil at ifnextchar[{\tkz at LabelPoint}{\tkz at LabelPoint[]}}
-\def\tkz at LabelPoint[#1](#2)#3{%
- \node[label style,#1] at (#2) {#3};}%
-%<--------------------------------------------------------------------------->
-
-\def\tkzLabelPoints{\pgfutil at ifnextchar[{\tkz at LabelPoints}{\tkz at LabelPoints[]}}%
-\def\tkz at LabelPoints[#1](#2){%
- \foreach \point in {#2}{
- \node[label style,#1] at (\point) {$\point$};}
-}%
-%<--------------------------------------------------------------------------->
-\pgfkeys{/tkzsetuppt/.cd,
- size/.store in = \tkz at pt@size,
- color/.store in = \tkz at pt@color,
- fill/.store in = \tkz at pt@fill,
- shape/.store in = \tkz at pt@shape,
- size = \tkz at euc@pointsize,
- color = \tkz at euc@pointcolor,
- fill = \tkz at euc@pointcolor,
- shape = \tkz at euc@pointshape,
- /tkzsetuppt/.search also = {/tikz},
- }
-\def\tkzSetUpPoint{\pgfutil at ifnextchar[{\tkz at SetUpPoint}{%
- \tkz at SetUpPoint[]}}
-\def\tkz at SetUpPoint[#1]{%
-\pgfqkeys{/tkzsetuppt}{#1}
-% redefine point style with new values
-\tikzset{point style/.style={draw = \tkz at pt@color,
- inner sep = 0pt,
- shape = \tkz at pt@shape,
- minimum size = \tkz at pt@size,
- fill = \tkz at pt@fill}}
-}% end setup
-%<--------------------------------------------------------------------------->
-%
-%<--------------------------------------------------------------------------->
-\def\tkzSetUpLabel{\pgfutil at ifnextchar[{\tkz at SetUpLabel}{%
- \tkz at SetUpLabel[]}}
-\def\tkz at SetUpLabel[#1]{%
-\tikzset{label style/.style={#1}}
-}% end setup
-%<--------------------------------------------------------------------------->
-
-\pgfkeys{/tkzautolab/.cd,
- center/.store in = \tkz at center,
- dist/.store in = \tkz at dist,
- dist = 0.15,
- /tkzautolab/.search also = {/tikz},
-}
-\def\tkzAutoLabelPoints{\pgfutil at ifnextchar[{\tkz at AutoLabelPoints}{\tkz at AutoLabelPoints[]}}%
-\def\tkz at AutoLabelPoints[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzautolab}{#1}
- \foreach \point in {#2}{
- \path (\tkz at center) -- ($ (\point) + \tkz at dist*($(\point)-(\tkz at center)$) $) node[/tkzautolab/.cd,label style,#1]{$\point$};}
-\endgroup
-}%
-%<--------------------------------------------------------------------------->
-% PointShowCoord
-%<--------------------------------------------------------------------------->
-\pgfkeys{/tkzprcoord/.cd,
- xlabel/.store in = \tkz at xlabel,
- ylabel/.store in = \tkz at ylabel,
- xstyle/.code = {\tikzset{xcoord style/.append style={#1}}},
- ystyle/.code = {\tikzset{ycoord style/.append style={#1}}},
- noxdraw/.is if = tkz at coord@noxdraw,
- noxdraw/.default = true,
- noydraw/.is if = tkz at coord@noydraw,
- noydraw/.default = true,
- xlabel = {},
- ylabel = {},
- xstyle = {},
- ystyle = {},
- noxdraw = false,
- noydraw = false,
- /tkzprcoord/.search also = {/tikz},
-}
-\def\tkzPointShowCoord{\pgfutil at ifnextchar[{\tkz at PointShowCoord}{\tkz at PointShowCoord[]}}
-\def\tkz at PointShowCoord[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzprcoord}{#1}
-% 2019 for showcoord
- \iftkznodedefined{tkz at xline}{}{%
- \path (0,0) --(1,0) node(tkz at xline){};
- \path (0,0) --(0,1) node(tkz at yline){};
- }
-\iftkz at coord@noxdraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 |- tkz at xline);\fi
-\iftkz at coord@noydraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 -| tkz at yline);\fi
-\ifx\tkzutil at empty\tkz at xlabel
-\else
-\path (#2)--(#2 |- tkz at xline)
- node[xcoord style] {\tkz at xlabel};
-\fi
-\ifx\tkzutil at empty\tkz at ylabel
-\else
- \path (#2)--(#2 -| tkz at yline)
- node[ycoord style] {\tkz at ylabel};
-\fi
-\endgroup
-}
-\let\tkzShowPointCoord\tkzPointShowCoord
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,106 +0,0 @@
-% tkz-obj-eu-polygons.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-polygons.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% Polygon
-%<--------------------------------------------------------------------------–>
-%<---------------------------- Draw --------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawPolygon{\pgfutil at ifnextchar[{\tkz at DrawPolygon}{%
- \tkz at DrawPolygon[]}}
-\def\tkz at DrawPolygon[#1](#2,#3){%
- \begingroup
- \draw[line style,line join=round,#1] (#2)
- \foreach \pt in {#2,#3}{--(\pt)}--cycle;%
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkz at multipolygons#1 #2\@nil{%
-\protected at edef\tkz at temp{
-\noexpand \tkzDrawPolygon[\tkz at optpolygon](#1)}\tkz at temp%
-\def\tkz at nextArg{#2}%
-\ifx\tkzutil at empty\tkz at nextArg
- \let\next\@gobble
-\fi
-\next#2\@nil
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawPolygons{\pgfutil at ifnextchar[{\tkz at DrawPolygons}{\tkz at DrawPolygons[]}}
-\def\tkz at DrawPolygons[#1](#2){%
-\xdef\tkz at optpolygon{#1}
-\begingroup
- \let\next\tkz at multipolygons
- \next#2 \@nil %
-\endgroup
-}%
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-%<---------------------------- FILL --------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkzFillPolygon{\pgfutil at ifnextchar[{\tkz at FillPolygon}{%
- \tkz at FillPolygon[]}}
-\def\tkz at FillPolygon[#1](#2,#3){%
- \begingroup
- \fill[#1] (#2)
- \foreach \pt in {#2,#3}{--(\pt)}--cycle;%
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<-------------- Labels for Regular Polygon -------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\pgfkeys{/deflabelregpoly/.cd,
- name/.store in = \tkz at regpolname,
- sep/.store in = \tkz at regpolsep,
- name = P,
- sep = 1.1
-}
-
-\def\tkzLabelRegPolygon{\pgfutil at ifnextchar[{\tkz at labelPolygon}{%
- \tkz at labelPolygon[]}}
-\def\tkz at labelPolygon[#1](#2)#3{%
-\begingroup
-\pgfqkeys{/deflabelregpoly}{#1}
- \foreach \v [count=\vi from 1] in {#3} {%
- \path (#2) to [pos=1.1] node {$\v$} (\tkz at regpolname\vi) ;
- \pgfnodealias{\v}{\tkz at regpolname\vi}
- }
-\endgroup
-}
-%<---------------------------- CLIP --------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-
-\pgfkeys{tkzclippolygon/.cd,
- out code/.is if = tkzClipOutPoly,
- out/.code = \tkzClipOutPolyfalse}
-
-\def\tkzClipPolygon{\pgfutil at ifnextchar[{\tkz at ClipPolygon}{\tkz at ClipPolygon[]}}
-\def\tkz at ClipPolygon[#1](#2,#3){%
-\tkzClipOutPolytrue
-\pgfqkeys{/tkzclippolygon}{#1}%
-\iftkzClipOutPoly
-\clip (#2)
- \foreach \pt in {#2,#3}{--(\pt)}--cycle;
-\else
- \clip(#2)
- \foreach \pt in {#2,#3}{--(\pt)}--cycle[tkzreverseclip] ;
-\fi
-}%
-\makeatother
-\endinput
\ No newline at end of file
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-grids.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-grids.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-grids.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-lines.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-lines.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-lines.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% les lignes
@@ -162,7 +162,7 @@
%<--------------------------------------------------------------------------–>
\def\tkzDefBisectorOutLine(#1,#2,#3){%
\begingroup
- \pgfinterruptboundingbox
+\pgfinterruptboundingbox
\tkzDuplicateLength(#2,#1)(#2,#3)
\pgfnodealias{out at tmp}{tkzPointResult}
\tkzDefMidPoint(#1,out at tmp)
@@ -175,7 +175,7 @@
\iftkz at line@normed
\tkzVecKNorm[\tkz at koeff](#2,tkzPointResult)
\fi
- \endpgfinterruptboundingbox
+\endpgfinterruptboundingbox
\endgroup
}
%<--------------------------------------------------------------------------–>
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-eu-points-by.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-points-by.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tools-eu-points-by.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Transformations Géométriques
@@ -130,7 +130,7 @@
\ifx\tkz at FirstPoint\tkzutil at empty
\def\tkz at pointtsf{\PT '}
\else
- \def\tkz at pointtsf{\tkz at FirstPoint}
+ \def\tkz at pointtsf{\tkz at FirstPoint}
\fi
\tkz at VecCoLinear(#1,#2,\PT)
\pgfnodealias{\tkz at pointtsf}{tkzPointResult}
@@ -328,21 +328,21 @@
%<--------------------------------------------------------------------------–>
\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%
- \pgfmathrotatepointaround{\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
+ \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%
+ \pgfmathrotatepointaround{\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
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-points-rnd.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-points-rnd.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-points-rnd.tex}
%<--------------------------------------------------------------------------–>
\makeatletter
%<-------------------------------------------------------------------------–>
Deleted: 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-spc.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,644 +0,0 @@
-% tkz-obj-eu-points.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-points.tex}
-\makeatletter
-%add ExCenter
-%<--------------------------------------------------------------------------–>
-% Specific points
-%<--------------------------------------------------------------------------–>
-% barycentre
-%<--------------------------------------------------------------------------–>
-\def\tkzDefBarycentricPoint(#1){%
-\begingroup
- \path[coordinate] (barycentric cs:#1) coordinate (tkzPointResult);
-\endgroup
-}
-\let\tkzDefBCPoint\tkzDefBarycentricPoint
-
-\def\tkzDefCentroid(#1){%
-\begingroup
- \xdef\tkz at arg{}
- \foreach \X in {#1}
- {%
- \ifx\tkzutil at empty\tkz at arg%
- \xdef\tkz at arg{\X=1}
- \else
- \xdef\tkz at arg{\tkz at arg,\X=1}
- \fi
- }
- \path[coordinate] (barycentric cs:\tkz at arg) coordinate (tkzPointResult);
-\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
- \path[coordinate](barycentric cs:#2=\tkz at rf,#4=\tkz at rt)coordinate (tkzPointResult);
- \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
- \path[coordinate](barycentric cs:#2=-\tkz at rf,#4=\tkz at rt) coordinate(tkzPointResult);
- \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%
- \advance\tkz at cx by\tkz at ax\relax%
- \advance\tkz at cy by\tkz at ay\relax%
- \advance\tkz at cx by\tkz at bx\relax%
- \advance\tkz at cy by\tkz at by\relax%
- \divide\tkz at cx by3\relax%
- \divide\tkz at cy by3\relax
- \pgfinterruptboundingbox
- \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz at cx}{\tkz at cy}}
- \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
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-el-points-with.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-points-with.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-points.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-points.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-polygons.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-polygons.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-polygons.tex}
% bug in regular polygon side 2020/03/09
\makeatletter
%<--------------------------------------------------------------------------–>
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,121 +0,0 @@
-% tkz-obj-eu-protractor.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-protractor.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% !!! idea from Y. Combe !!!
-%<--------------------------------------------------------------------------–>
-% \tkzProtractor Protractor
-%
-% Rapporteur ajustable et positionable
-%
-% Par défaut:
-% centre en (0,0)
-% rayon de 5 cm
-% ligne de base horizontale.
-% épaisseur de ligne 0.4 pt
-%
-% Paramètres (optionnels, gérés par xkeyval)
-% shift : coordonées (n'importe quelle forme
-% acceptée par tikz).
-% scale : facteur d'échelle
-% rotate : rotation
-% lw : line width (épaisseur des lignes)
-% ce paramètre subit le facteur d'échelle.
-%<--------------------------------------------------------------------------–>
-\def\FullProtractor{%
-\draw[fill=black!50!yellow!20!,even odd rule,semitransparent]%
- (0,0) circle (4cm);
-\draw (0,0) circle (3.3cm);
-\draw (0,0) circle (4cm);
-\draw[fill=black] (0,0) circle (.08mm);
-\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
-\foreach \x in {0, 90, ..., 360}{%
- \draw[very thin, gray!40] (a) -- (\x:4cm);}
-\foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);}
-\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);}
-\foreach \x in {0,10,...,350}{%
- \node[rotate=(\x-90)] at (\x:3.6cm) {\tiny\x};
-}
- \draw [>=stealth',->, thick,black] (0:2.5) arc(0:32:2.5);
- \draw [>=stealth',->, thick,black] (0:2) arc(0:32:2);
- \draw [>=stealth',->, thick,black] (0:1.5) arc(0:32:1.5);
-}
-
-\def\FullProtractorReturn{%
-\draw[fill=black!50!yellow!20!,even odd rule,semitransparent] (0,0) circle (4cm);
-\draw (0,0) circle (3.3cm);
-\draw (0,0) circle (4cm);
-\draw[fill=black] (0,0) circle (.08mm);
-\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
-\foreach \x in {0, 90, ..., 360}{%
- \draw[very thin, gray!40] (a) -- (\x:4cm);}
-\foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);}
-\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);}
-\begin{scope}
- \foreach \x in {0,10,...,350}{%
- \node[rotate=(-\x-90)] at (-\x:3.6cm) {\tiny\x};
-}
- \end{scope}
- \draw [>=stealth',->, thick,black] (0:2.5) arc(0:-32:2.5);
- \draw [>=stealth',->, thick,black] (0:2) arc(0:-32:2);
- \draw [>=stealth',->, thick,black] (0:1.5) arc(0:-32:1.5);
-}
-
-\pgfkeys{
- protractor/.cd,
- lw/.code = {\def\cmdMO at Rap@lw{#1}},
- shift/.code = {\def\cmdMO at Rap@shift{#1}},
- rotate/.code = {\def\cmdMO at Rap@rotate{#1}},
- scale/.code = {\def\cmdMO at Rap@scale{#1}},
- return/.is if = tkz at RappReturn,
- return/.code = \tkz at RappReturnfalse,
- /protractor/.search also={/tikz},
- lw = 0.4pt,
- scale=1,
- shift={(0,0)},
- rotate=0
- }
-
-\def\tkzProtractor{\pgfutil at ifnextchar[{\tkz at Protractor}{\tkz at Protractor[]}}
-\def\tkz at Protractor[#1](#2,#3){%
-\tkz at RappReturnfalse
-\pgfqkeys{/protractor}{#1}
- \tkz@@extractxy{#2}
- \global\tkz at ax\pgf at x
- \global\tkz at ay\pgf at y
- \tkzFindSlopeAngle(#2,#3)
- \tkzGetAngle{cmdMO at Rap@rotate}%
- \global\let\tkz@@Protractor\FullProtractor%
- \iftkz at RappReturn
- \global\let\tkz@@Protractor\FullProtractorReturn
- \else
- \global\let\tkz@@Protractor\FullProtractor
- \fi
- \pgfmathsetlengthmacro{\MO at lw}{\cmdMO at Rap@lw * \cmdMO at Rap@scale}
- \begin{scope}[shift = {(\tkz at ax,\tkz at ay)},%
- scale = \cmdMO at Rap@scale,%
- rotate = \cmdMO at Rap@rotate,%
- every node/.style = {scale =\cmdMO at Rap@scale,
- rotate =\cmdMO at Rap@rotate},%
- line width=\MO at lw]%
- \tkz@@Protractor
-\end{scope}
-}
-%<--------------------------------------------------------------------------–>
-% fin de \tkzProtractor
-%<--------------------------------------------------------------------------–>
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,326 +0,0 @@
-% tkz-obj-eu-sectors.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-sectors.tex}
-\makeatletter
-%<----------------------- Sectors ------------------------------–>
-\gdef\tkz at nums{0}
-\pgfkeys{/drawsector/.cd,
- towards/.code = {\def\tkz at nums{0}},
- rotate/.code = {\def\tkz at nums{1}},
- R/.code = {\def\tkz at nums{2}},
- R with nodes/.code = {\def\tkz at nums{3}},
- towards,
- /drawsector/.search also = {/tikz},
-}
-
-\def\tkzDrawSector{\pgfutil at ifnextchar[{\tkz at DrawSector}{\tkz at DrawSector[]}}
-\def\tkz at DrawSector[#1](#2,#3)(#4){%
-\begingroup
-\pgfqkeys{/drawsector}{#1}
-\ifcase\tkz at nums%
- \tkzDrawSectorN[#1](#2,#3)(#4)
-\or% 1
- \tkzDrawSectorRotate[#1](#2,#3)(#4)
-\or% 2
- \tkzDrawSectorRAngles[#1](#2,#3)(#4)
-\or% 3
- \tkzDrawSectorR[#1](#2,#3)(#4)
-\fi
-\endgroup
-}
-\def\tkzDrawSectorRAngles{\pgfutil at ifnextchar[{\tkz at DrawSectorRAngles}{%
- \tkz at DrawSectorRAngles[]}}
-\def\tkz at DrawSectorRAngles[#1](#2,#3)(#4,#5){%
-\begingroup
- \pgfmathparse{#4}\edef\tkz at FirstAngle{\pgfmathresult}%
- \pgfmathparse{#5}\edef\tkz at SecondAngle{\pgfmathresult}%
- \pgfmathgreaterthan{\tkz at FirstAngle}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz at FirstAngle}{360}
- \edef\tkz at FirstAngle{\pgfmathresult}%
- \fi
- \else
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathadd{\tkz at SecondAngle}{360}
- \edef\tkz at SecondAngle{\pgfmathresult}%
- \fi
- \fi
- \draw[shift = {(#2)},/drawsector/.cd,#1]%
- (#2) --(\tkz at FirstAngle:#3) arc (\tkz at FirstAngle:\tkz at SecondAngle:#3)--cycle;
- \endgroup
- } % revoir il y a plus simple que ce shift !!!
-%<--------------------------------------------------------------------------–>
-% \tkzDrawSectorN(O,A)(B)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawSectorN{\pgfutil at ifnextchar[{\tkz at DrawSectorN}{%
- \tkz at DrawSectorN[]}}
-\def\tkz at DrawSectorN[#1](#2,#3)(#4){%
-\begingroup
- \tkz@@CalcLengthcm(#2,#3){tkz at radius}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
- \tkz at DrawSectorRAngles[#1](#2,\tkz at radius)(\tkz at FirstAngle,%
- \tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzDrawSectorRotate(O,A)(angle de rotation) ??? pb avec angle negatif
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawSectorRotate{\pgfutil at ifnextchar[{\tkz at DrawSectorRotate}{%
- \tkz at DrawSectorRotate[]}}
-\def\tkz at DrawSectorRotate[#1](#2,#3)(#4){%
-\begingroup
- \tkz@@CalcLengthcm(#2,#3){tkz at radius}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstA}
- \pgfmathadd{\tkz at FirstA}{#4}
- \edef\tkz at SecondA{\pgfmathresult}
- \pgfmathgreaterthan{#4}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \tkz at DrawSectorRAngles[#1](#2,\tkz at radius)(\tkz at FirstA,\tkz at SecondA)
- \else
- \tkz at DrawSectorRAngles[#1](#2,\tkz at radius)(\tkz at SecondA,\tkz at FirstA)
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzDrawSectorAngles(O,A)(ang1,ang2)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawSectorAngles{\pgfutil at ifnextchar[{\tkz at DrawSectorAngles}{%
- \tkz at DrawSectorAngles[]}}
-\def\tkz at DrawSectorAngles[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkz@@CalcLengthcm(#2,#3){tkz at radius}
- \tkz at DrawSectorRAngles[#1](#2,\tkz at radius pt)(#4,#5)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzDrawSectorRwithNodesAngles(O,A,B)(ang1,ang2)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawSectorRwithNodesAngles{\pgfutil at ifnextchar[{%
- \tkz at DrawSectorRwithNodesAngles}{%
- \tkz at DrawSectorRwithNodesAngles[]}}
-\def\tkz at DrawSectorRwithNodesAngles[#1](#2,#3,#4)(#5,#6){%
-\begingroup
- \tkz@@CalcLengthcm(#3,#4){tkz at radius}
- \tkz at DrawSectorRAngles[#1](#2,\tkz at radius pt)(#5,#6)
-\endgroup
-}
-% %<--------------------------------------------------------------------------–>
-
-%<--------------------------------------------------------------------------–>
-% \tkzDrawSectorR(O, rad)(A,B)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawSectorR{\pgfutil at ifnextchar[{\tkz at DrawSectorR}{%
- \tkz at DrawSectorR[]}}
-\def\tkz at DrawSectorR[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at SecondAngle}
- \tkz at DrawSectorRAngles[#1](#2,#3)(\tkz at FirstAngle,\tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Fill
-%<--------------------------------------------------------------------------–>
-\gdef\tkz at nums{0}
-\pgfkeys{/@fillsector/.cd,
- towards/.code = {\def\tkz at nums{0}},
- rotate/.code = {\def\tkz at nums{1}},
- R/.code = {\def\tkz at nums{2}},
- R with nodes/.code = {\def\tkz at nums{3}},
- towards,
- /@fillsector/.search also={/tikz},
-}
-
-\def\tkzFillSector{\pgfutil at ifnextchar[{\tkz at FillSector}{\tkz at FillSector[]}}
-\def\tkz at FillSector[#1](#2,#3)(#4){%
-\begingroup
-\pgfqkeys{/@fillsector}{#1}
-\ifcase\tkz at nums%
- \tkzFillSectorN[#1](#2,#3)(#4)
-\or% 1
- \tkzFillSectorRotate[#1](#2,#3)(#4)
-\or% 2
- \tkzFillSectorRAngles[#1](#2,#3)(#4)
-\or% 3
- \tkzFillSectorR[#1](#2,#3)(#4)
-\fi
-\endgroup
-}
-
-
-\def\tkzFillSectorRAngles{\pgfutil at ifnextchar[{\tkz at FillSectorRAngles}{%
- \tkz at FillSectorRAngles[]}}
-\def\tkz at FillSectorRAngles[#1](#2,#3)(#4,#5){%
-\begingroup
- \pgfmathparse{#4}\edef\tkz at FirstAngle{\pgfmathresult}%
- \pgfmathparse{#5}\edef\tkz at SecondAngle{\pgfmathresult}%
- \pgfmathgreaterthan{\tkz at FirstAngle}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz at FirstAngle}{360}
- \edef\tkz at FirstAngle{\pgfmathresult}%
- \fi
- \else
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathadd{\tkz at SecondAngle}{360}
- \edef\tkz at SecondAngle{\pgfmathresult}%
- \fi\fi
- \pgfmathsubtract{\tkz at FirstAngle}{0}
- \edef\tkz at FirstAngle{\pgfmathresult}%
- \pgfmathadd{\tkz at SecondAngle}{0}
- \edef\tkz at SecondAngle{\pgfmathresult}
- \path[shift = {(#2)},/@fillsector/.cd,fill=\tkz at fillcolor,#1] (#2) -- %
- (\tkz at FirstAngle:#3) arc (\tkz at FirstAngle:\tkz at SecondAngle:#3)--cycle;
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzFillSectorN(O,A)(B)
-%<--------------------------------------------------------------------------–>
-\def\tkzFillSectorN{\pgfutil at ifnextchar[{\tkz at FillSectorN}{\tkz at FillSectorN[]}}
-\def\tkz at FillSectorN[#1](#2,#3)(#4){%
-\begingroup
- \tkz@@CalcLength(#2,#3){tkz at radius}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at SecondAngle}
- \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(\tkz at FirstAngle,%
- \tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzFillSectorRotate(O,A)(angle de rotation) ??? pb avec angle negatif
-%<--------------------------------------------------------------------------–>
-\def\tkzFillSectorRotate{\pgfutil at ifnextchar[{\tkz at FillSectorRotate}{%
- \tkz at FillSectorRotate[]}}
-\def\tkz at FillSectorRotate[#1](#2,#3)(#4){%
-\begingroup
- \tkz@@CalcLength(#2,#3){tkz at radius}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz at FirstA}
- \pgfmathadd{\tkz at FirstA}{#4}
- \edef\tkz at SecondA{\pgfmathresult}
- \pgfmathgreaterthan{#4}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(\tkz at FirstA,\tkz at SecondA)
- \else
- \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(\tkz at SecondA,\tkz at FirstA)
- \fi
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzFillSectorAngles(O,A)(ang1,ang2)
-%<--------------------------------------------------------------------------–>
-\def\tkzFillSectorAngles{\pgfutil at ifnextchar[{\tkz at FillSectorAngles}{%
- \tkz at FillSectorAngles[]}}
-\def\tkz at FillSectorAngles[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkz@@CalcLength(#2,#3){tkz at radius}
- \tkz at FillSectorRAngles[#1](#2,\tkz at radius pt)(#4,#5)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzFillSectorR(O, rad)(A,B)
-%<--------------------------------------------------------------------------–>
-\def\tkzFillSectorR{\pgfutil at ifnextchar[{\tkz at FillSectorR}{%
- \tkz at FillSectorR[]}}
-\def\tkz at FillSectorR[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz at SecondAngle}
- \tkz at FillSectorRAngles[#1](#2,#3)(\tkz at FirstAngle,\tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------- Clip Sector ----------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkz at ClipSectorRAngles(#1,#2)(#3,#4){%
-\begingroup
- \pgfmathparse{#3}\edef\tkz at FirstAngle{\pgfmathresult}%
- \pgfmathparse{#4}\edef\tkz at SecondAngle{\pgfmathresult}%
- \pgfmathgreaterthan{\tkz at FirstAngle}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz at FirstAngle}{360}
- \edef\tkz at FirstAngle{\pgfmathresult}%
- \fi
- \else
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathadd{\tkz at SecondAngle}{360}
- \edef\tkz at SecondAngle{\pgfmathresult}%
- \fi
- \fi
- \clip[shift = {(#1)}] (#1) --(\tkz at FirstAngle:#2)%
- arc(\tkz at FirstAngle:\tkz at SecondAngle:#2) -- cycle;
- \endgroup
- } % revoir il y a plus simple que ce shift !!!
-%<--------------------------------------------------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkz at ClipSectorRotate(#1,#2)(#3){%
-\begingroup
- \tkz@@CalcLength(#1,#2){tkz at radius}
- \tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz at FirstA}
- \pgfmathadd{\tkz at FirstA}{#3}
- \edef\tkz at SecondA{\pgfmathresult}
- \pgfmathgreaterthan{#3}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \tkz at ClipSectorRAngles(#1,\tkz at radius pt)(\tkz at FirstA,\tkz at SecondA)
- \else
- \tkz at ClipSectorRAngles(#1,\tkz at radius pt)(\tkz at SecondA,\tkz at FirstA)
- \fi
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkz at ClipSectorN(#1,#2)(#3){%
-\begingroup
- \tkz@@CalcLength(#1,#2){tkz at radius}
- \tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz at FirstAngle}
- \tkzFindSlopeAngle(#1,#3)\tkzGetAngle{tkz at SecondAngle}
- \tkz at ClipSectorRAngles(#1,\tkz at radius pt)(\tkz at FirstAngle,\tkz at SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkz at numcs{0}
-\pgfkeys{/clipsector/.cd,
- towards/.code = {\def\tkz at numcs{0}},
- rotate/.code = {\def\tkz at numcs{1}},
- R/.code = {\def\tkz at numcs{2}},
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzClipSector{\pgfutil at ifnextchar[{\tkz at ClipSector}{%
- \tkz at ClipSector[]}}
-
-\def\tkz at ClipSector[#1](#2,#3)(#4){%
-\pgfkeys{/clipsector/.cd}
-\pgfqkeys{/clipsector}{#1}
-\ifcase\tkz at numcs%
- \tkz at ClipSectorN(#2,#3)(#4)
- \or% 1
- \tkz at ClipSectorRotate(#2,#3)(#4)
- \or% 2
- \tkz at ClipSectorRAngles(#2,#3)(#4)
- \fi
-}
-\makeatother
-\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,346 +0,0 @@
-%tkz-obj-eu-show.tex
-% Copyright 2022 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{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-show.tex}
-\makeatletter
-%<--------------------------------------------------------------------------–>
-% finding specific points in a triangle
-%<--------------------------------------------------------------------------–>
-% equi points
-%<--------------------------------------------------------------------------–>
-% draw ? show ?
-\pgfkeys{/tkzEquiPt/.cd,
- from/.store in = {\tkz at frompoint},
- dist/.store in = {\tkz at equ@dist},
- show/.is if = tkz at equi@show,
- dist = 2,
- show = false,
- /tkzEquiPt/.search also={/tikz}
-}
-
-\def\tkzDefEquiPoints{\pgfutil at ifnextchar[{\tkz at DefEquiPoints}{%
- \tkz at DefEquiPoints[]}}
-\def\tkz at DefEquiPoints[#1](#2,#3){%
-\pgfqkeys{/tkzEquiPt}{#1}
-\begingroup
- \tkzUProjection(#2,#3)(\tkz at frompoint)
- \pgfnodealias{tkzEQpoint}{tkzPointResult}
- \tkzVecKNorm[\tkz at equ@dist](tkzEQpoint,#2)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzVecKNorm[-\tkz at equ@dist](tkzEQpoint,#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
- \iftkz at equi@show
- \tkzCompass[compass style,#1](\tkz at frompoint,tkzFirstPointResult)
- \tkzCompass[compass style,#1](\tkz at frompoint,tkzSecondPointResult)
- \fi
-\endgroup
-}
-
-%<--------------------------- The SHOW --------------------------------–>
-%<--------------------------------------------------------------------------–>
-\global\def\tkz at numsh{0}
-\pgfkeys{/show/.cd,
- mediator/.code = \def\tkz at numsh{0},
- perpendicular/.code args = {through #1} {\global\def\tkz at numsh{1}%
- \def\tkz at through{#1}},
- orthogonal/.code args = {through #1} {\global\def\tkz at numsh{1}%
- \global\def\tkz at through{#1}},
- parallel/.code args = {through #1} {\global\def\tkz at numsh{2}%
- \global\def\tkz at through{#1}},
- bisector/.code = \global\def\tkz at numsh{3},
- K/.code = \def\tkz at koeff{#1},
- length/.code = \def\tkz at show@length{#1},
- ratio/.code = \def\tkz at show@ratio{#1},
- gap/.code = \def\tkz at show@gap{#1},
- size/.code = \def\tkz at show@size{#1},
- /show/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tkzcompass/\searchname/.retry=#1,
- /tikz/\searchname/.retry=#1}%
- }
- }
-\def\tkzShowLine{\pgfutil at ifnextchar[{\tkz at ShowLine}{\tkz at ShowLine[]}}
-\def\tkz at ShowLine[#1](#2){%
-\begingroup
-\pgfqkeys{/show}{ K = 1,
- gap = 2,
- ratio = .5,
- length = 1,
- size = 1
- }
-\pgfqkeys{/show}{#1}
-\ifcase\tkz at numsh%
- % first case 0
- \tkzShowMediatorLine[#1](#2)
- \or% 1
- \tkzShowOrthLine[#1](#2)(\tkz at through)
- \or% 2
- \tkzShowLLLine[#1](#2)(\tkz at through)
- \or% 3
- \tkzShowBisectorLine[#1](#2)
-\fi
-\endgroup
-}
-
-\def\tkzShowMediatorLine{%
- \pgfutil at ifnextchar[{\tkz at ShowMediatorLine}{\tkz at ShowMediatorLine[]}}
-\def\tkz at ShowMediatorLine[#1](#2,#3){%
-\begingroup
-\pgfkeys{show/.cd, gap = 2,
- ratio = .5,
- length = 1
- }
-\pgfkeys{show/.cd,#1}
- \path (#2) -- (#3) coordinate[pos=.5](tkzmidpoint);
- \tkzURotateAngle(#2,60)(#3)
- \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
- \tkzURotateAngle(#3,60)(#2)
- \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
- \tkz at VecKOrthNorm[1](tkzmidpoint,#2)
- \pgfnodealias{MED at tmp1}{tkzPointResult}
- \tkz at VecKOrthNorm[1](tkzmidpoint,#3)
- \pgfnodealias{MED at tmp2}{tkzPointResult}
- \tkz at VecKNorm[\tkz at show@gap](tkzmidpoint,MED at tmp1)
- \pgfnodealias{MED at 1}{tkzPointResult}
- \tkz at VecKNorm[\tkz at show@gap](tkzmidpoint,MED at tmp2)
- \pgfnodealias{MED at 2}{tkzPointResult}
- \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#2,MED at 1)
- \tkzCompass[compass style,#1](#3,MED at 1)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#2,MED at 2)
- \tkzCompass[compass style,#1](#3,MED at 2)
-\endgroup
-}
-\def\tkzShowLLLine{\pgfutil at ifnextchar[{\tkz at ShowLLLine}{\tkz at ShowLLLine[]}}
-\def\tkz at ShowLLLine[#1](#2,#3)(#4){%
-\begingroup
-\pgfkeys{show/.cd,gap=2,ratio=.75,length=1}
-\pgfkeys{show/.cd,#1}
- \tkz at VecKCoLinear[1](#2,#3,#4)
- \pgfnodealias{tkz at lltmp}{tkzPointResult}
- \tkzCompass[compass style,#1](#4,tkz at lltmp)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,tkz at lltmp)
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% tkzLineOrth
-%<--------------------------------------------------------------------------–>
-% pas de projection ortho car le point peut être sur la droite.
-% manque les tests . Il faudrait voir si on peut projeter et choisir
-\def\tkzShowOrthLine{\pgfutil at ifnextchar[{\tkz at ShowOrthLine}{\tkz at ShowOrthLine[]}}
-\def\tkz at ShowOrthLine[#1](#2,#3)(#4){%
-\begingroup
-\pgfkeys{show/.cd,
- ratio = .75,
- length = 1,
- gap = -1,
- size = 1}
-\pgfkeys{show/.cd,#1}
- \tkzDefPointWith(#2,#3)
- \pgfnodealias{tkz at OLtmp}{tkzPointResult}
- \tkz at VecKCoLinear[1](#2,tkz at OLtmp,#4)
- \pgfnodealias{tkzPointCo}{tkzPointResult}
- \tkzInterLL(#2,#3)(#4,tkzPointCo)
- \pgfnodealias{tkzPOpoint}{tkzPointResult}
- \tkz@@CalcLength(#4,tkzPOpoint){tkz at mathLen}
- \tkz at VecKNorm[1](#2,#3)
- \pgfnodealias{PO at tmp}{tkzPointResult}
- \tkz at VecKCoLinear[1](#2,PO at tmp,tkzPOpoint)
- \pgfnodealias{PO at tmp2}{tkzPointResult}
- \tkz at VecKCoLinear[-1](#2,PO at tmp,tkzPOpoint)
- \pgfnodealias{PO at tmp1}{tkzPointResult}
- \tkz at VecKCoLinear[\tkz at show@size](tkzPOpoint,PO at tmp1,tkzPOpoint)
- \pgfnodealias{PO at 1}{tkzPointResult}
- \tkz at VecKCoLinear[\tkz at show@size](tkzPOpoint,PO at tmp2,tkzPOpoint)
- \pgfnodealias{PO at 2}{tkzPointResult}
- \ifdim\tkz at mathLen pt>10 pt\relax
- \tkz at VecKNorm[1](#4,tkzPOpoint)
- \pgfnodealias{PO at tmp1}{tkzPointResult}
- \else
- \tkz at VecKOrthNorm[1](tkzPOpoint,PO at 2)
- \pgfnodealias{PO at tmp1}{tkzPointResult}
- \fi
- \tkz at VecKCoLinear[-\tkz at show@gap](PO at tmp1,tkzPOpoint,tkzPOpoint)
- \pgfnodealias{PO at 3}{tkzPointResult}
- \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#4,PO at 1)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#4,PO at 2)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](PO at 1,PO at 3)
- \tkzCompass[compass style,#1,length=\tkz at show@length](PO at 2,PO at 3)
-\endgroup
-}
-%<-------------------------------------------------------------------------–>
-% bisector Line
-%<-------------------------------------------------------------------------–>
-\def\tkzShowBisectorLine{%
- \pgfutil at ifnextchar[{\tkz at ShowBisectorLine}{\tkz at ShowBisectorLine[]}}
-\def\tkz at ShowBisectorLine[#1](#2,#3,#4){%
-\begingroup
-\pgfkeys{show/.cd, gap = 2,
- ratio =. 5,
- length = 1,
- size = 1
- }
-\pgfkeys{show/.cd,#1}
- \tkzVecKNorm(#3,#2)
- \pgfnodealias{tkz at pt1}{tkzPointResult}
- \tkzVecKNorm(#3,#4)
- \pgfnodealias{tkz at pt2}{tkzPointResult}
- \tkzDefMidPoint(tkz at pt1,tkz at pt2)
- \pgfnodealias{tkz at pt3}{tkzPointResult}
- \tkzDefEquilateral(tkz at pt2,tkz at pt1)
- \pgfnodealias{tkz at pt4}{tkzPointResult}
- \tkzDefMidPoint(tkz at pt3,tkz at pt4)
- \pgfnodealias{tkz at ptm}{tkzPointResult}
- \tkzVecKNorm(#3,tkz at ptm)
- \pgfnodealias{tkzBisPoint}{tkzPointResult}
- \tkzVecKNorm[\tkz at show@size](#3,#2)
- \pgfnodealias{BI at 1}{tkzPointResult}
- \tkzVecKNorm[\tkz at show@size](#3,#4)
- \pgfnodealias{BI at 2}{tkzPointResult}
- \tkzVecK[\tkz at show@gap](#3,tkzBisPoint)
- \pgfnodealias{tkzBisPoint}{tkzPointResult}
- \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#3,BI at 1)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](#3,BI at 2)
- \tkzCompass[compass style,#1,length=\tkz at show@length](BI at 1,tkzBisPoint)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio *\tkz at show@length](BI at 2,tkzBisPoint)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Transformations Géométriques
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% The SHOW
-%<--------------------------------------------------------------------------–>
-\def\tkz at numst{0}
-\pgfkeys{/showtsf/.cd,
- reflection/.code args={over #1--#2}{%
- \def\tkzdeb{#1}
- \def\tkzfin{#2}
- \def\tkz at numst{0}},
- symmetry/.code args={center #1}{%
- \def\tkzcenter{#1}
- \def\tkz at numst{1}},
- projection/.code args={onto #1--#2}{%
- \def\tkzdeb{#1}
- \def\tkzfin{#2}
- \def\tkz at numst{2}},
-translation/.code args={from #1 to #2}{%
- \def\tkzfrom{#1}%
- \def\tkzto{#2}%
- \def\tkz at numst{3}},
- K/.code = \def\tkz at koeff{#1},
- length/.code = \def\tkz at show@length{#1},
- ratio/.code = \def\tkz at show@ratio{#1},
- gap/.code = \def\tkz at show@gap{#1},
- size/.code = \def\tkz at show@size{#1},
-/showtsf/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tkzcompass/\searchname/.retry=#1,
- /tikz/\searchname/.retry=#1}}
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzShowTransformation{\pgfutil at ifnextchar[{\tkz at ShowTransformation}{%
- \tkz at ShowTransformation[]}}
-\def\tkz at ShowTransformation[#1](#2){%
-\begingroup
- \pgfqkeys{/showtsf}{K=1,gap=2,size=1,ratio=.5,length=1}
- \pgfqkeys{/showtsf}{#1}
- \pgfinterruptboundingbox
-\ifcase\tkz at numst%
- % first case 0
- \tkzShowSymOrth[#1](\tkzdeb,\tkzfin)(#2)
- \or% 1
- \tkzShowCSym[#1](\tkzcenter)(#2)
- \or% 2
- \tkzShowProjection[#1](\tkzdeb,\tkzfin)(#2)
- \or% 3
- \tkzShowTranslation[#1](\tkzfrom,\tkzto)(#2)
- \fi
- \endpgfinterruptboundingbox
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzShowTranslation{\pgfutil at ifnextchar[{\tkz at ShowTranslation}{%
- \tkz at ShowTranslation[]}}
-
-\def\tkz at ShowTranslation[#1](#2,#3)(#4){%
-\begingroup
-\tkz at VecKCoLinear[1](#2,#3,#4) \pgfnodealias{tkz at lltmp}{tkzPointResult}
-\tkzCompass[compass style,#1](#4,tkz at lltmp)
-\tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,tkz at lltmp)
-\endgroup}
-%<--------------------------------------------------------------------------–>
-\def\tkzShowSymOrth{\pgfutil at ifnextchar[{\tkz at ShowSymOrth}{%
- \tkz at ShowSymOrth[]}}
-\def\tkz at ShowSymOrth[#1](#2,#3)(#4){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \tkz at ax =\pgf at y%
- \tkz at ay =\pgf at x%
- \path[coordinate](#4)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
- \tkzInterLL(#2,#3)(#4,tkz at point)
- \pgfnodealias{tkzPointofSym}{tkzPointResult}
- \tkz at VecK[2](#4,tkzPointofSym)
- \pgfnodealias{tkz at pointtsf}{tkzPointResult}
- \tkzCompass[compass style,#1](#2,#4)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,#4)
- \tkzCompass[compass style,#1](#2,tkz at pointtsf)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](#3,tkz at pointtsf)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzShowCSym{\pgfutil at ifnextchar[{\tkz at ShowCSym}{\tkz at ShowCSym[]}}
-
-\def\tkz at ShowCSym[#1](#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \tkz at ax=\pgf at x%
- \tkz at ay=\pgf at y%
-\path[coordinate](#2)--++(-\tkz at ax,-\tkz at ay) coordinate (tkz at pointtsf);
- \tkzCompass[compass style,#1](#2,tkz at pointtsf)
- \tkzCompass[compass style,#1](#2,#3)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzShowProjection{\pgfutil at ifnextchar[{\tkz at ShowProjection}{%
- \tkz at ShowProjection[]}}
-\def\tkz at ShowProjection[#1](#2,#3)(#4){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \tkz at ax =\pgf at y%
- \tkz at ay =\pgf at x%
- \path[coordinate](#4)--++(-\tkz at ax,\tkz at ay) coordinate (tkz at point);
- \tkzInterLL(#2,#3)(#4,tkz at point)
- \pgfnodealias{tkz at pointtsf}{tkzPointResult}
- \tkz at VecKCoLinear[1](#2,#3,tkz at pointtsf)
- \pgfnodealias{SO at tmp1}{tkzPointResult}
- \tkz at VecKCoLinear[-1](#2,#3,tkz at pointtsf)
- \pgfnodealias{SO at tmp2}{tkzPointResult}
- \tkz at VecKNorm[\tkz at show@size](tkz at pointtsf,SO at tmp1)
- \pgfnodealias{SO at 1}{tkzPointResult}
- \tkz at VecKNorm[\tkz at show@size](tkz at pointtsf,SO at tmp2)
- \pgfnodealias{SO at 2}{tkzPointResult}
- \tkz at VecKNorm[-\tkz at show@gap](tkz at pointtsf,#4)
- \pgfnodealias{SO at 3}{tkzPointResult}
- \tkzCompass[compass style,#1](#4,SO at 1)
- \tkzCompass[compass style,#1](#4,SO at 2)
- \tkzCompass[compass style,#1](SO at 1,SO at 3)
- \tkzCompass[compass style,#1,length=\tkz at show@ratio*\tkz at show@length](SO at 2,SO at 3)
-\endgroup
-}
-\makeatother
-\endinput
\ No newline at end of file
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-obj-eu-triangles.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-triangles.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-eu-triangles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% Triangle Equilateral
Added: 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 (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-circles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-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-lua-points-by.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-by.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-by.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-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-lua-points-spc.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-spc.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-spc.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,695 @@
+% 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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-obj-lua-points.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{#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*(#2) + \tkzcbx*(#4))/(#2 + #4 )}}
+\edef\tkztpmy{\tkz at Dec{(\tkzcay*(#2) + \tkzcby*(#2))/(#2 + #4 )}}
+\pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkztpmx pt}{\tkztpmy pt}}
+\endgroup
+}
+
+% \def\tkzDefCentroid(#1){%
+% \begingroup
+% \xdef\tkz at arg{}
+% \foreach \X in {#1}
+% {%
+% \ifx\tkzutil at empty\tkz at arg%
+% \xdef\tkz at arg{\X=1}
+% \else
+% \xdef\tkz at arg{\tkz at arg,\X=1}
+% \fi
+% }
+% \path[coordinate] (barycentric cs:\tkz at arg) coordinate (tkzPointResult);
+% \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-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-lua-points-with.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-with.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points-with.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-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-lua-points.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lua-points.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,169 @@
+ % 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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-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-tools-eu-BB.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex 2023-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-BB.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-eu-BB.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-obj-eu-BB.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-angles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-angles.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-angles.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tools-eu-angles.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
%<--------------------------------------------------------------------------–>
@@ -20,24 +20,24 @@
% \tkzGetAngle strange behavior
% defines \tkz at FirstAngle and \tkz at SecondAngle sens trigo
%<--------------------------------------------------------------------------–>
- \def\tkzNormalizeAngle(#1,#2){%
- \begingroup
- \pgfmathparse{#1}\xdef\tkz at FirstAngle{\pgfmathresult}%
- \pgfmathparse{#2}\xdef\tkz at SecondAngle{\pgfmathresult}%
- \pgfmathgreaterthan{\tkz at FirstAngle}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz at FirstAngle}{360}
- \xdef\tkz at FirstAngle{\pgfmathresult}%
- \fi
- \else
- \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathadd{\tkz at SecondAngle}{360}
- \xdef\tkz at SecondAngle{\pgfmathresult}%
- \fi
- \fi
+\def\tkzNormalizeAngle(#1,#2){%
+\begingroup
+\pgfmathparse{#1}\xdef\tkz at FirstAngle{\pgfmathresult}%
+\pgfmathparse{#2}\xdef\tkz at SecondAngle{\pgfmathresult}%
+\pgfmathgreaterthan{\tkz at FirstAngle}{0}
+\ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathsubtract{\tkz at FirstAngle}{360}
+ \xdef\tkz at FirstAngle{\pgfmathresult}%
+ \fi
+\else
+ \pgfmathgreaterthan{\tkz at FirstAngle}{\tkz at SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathadd{\tkz at SecondAngle}{360}
+ \xdef\tkz at SecondAngle{\pgfmathresult}%
+ \fi
+\fi
\endgroup
}
%<--------------------------------------------------------------------------–>
@@ -47,7 +47,7 @@
\def\tkzFindSlopeAngle(#1,#2){%
\begingroup
\pgfmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{%
- \pgfpointanchor{#2}{center}}
+ \pgfpointanchor{#2}{center}}
\global\let\tkzAngleResult\pgfmathresult
\endgroup
}
@@ -59,10 +59,11 @@
\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}}
+ \edef\tkz at Angle{\fpeval{\tkz at SecondAngle-\tkz at FirstAngle}}
\global\let\tkzAngleResult\tkz at Angle
\endgroup
}
+
%<--------------------------------------------------------------------------–>
% Find angle
%<--------------------------------------------------------------------------–>
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-base.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-eu-base.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-base.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tools-eu-base.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
\global\let\tkz at tmp@xa\tkz at init@xmin% modif 2016
@@ -48,7 +48,7 @@
\fi
\xdef\tkz at init@xorigine{0}
\xdef\tkz at init@yorigine{0}
- \edef\@xsgmin{\fpeval{sign(\tkz at init@xmin)}}
+ \edef\@xsgmin{\fpeval{sign(\tkz at init@xmin)}} % -> -1 or 1
\edef\@xsgmax{\fpeval{sign(\tkz at init@xmax)}}
\edef\@ysgmin{\fpeval{sign(\tkz at init@ymin)}}
\edef\@ysgmax{\fpeval{sign(\tkz at init@ymax)}}
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-colors.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-eu-colors
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-colors}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-intersections.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-intersections.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -13,9 +13,9 @@
% The Current Maintainer of this work is Alain Matthes.
% utf8 encoding
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-intersections.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tools-eu-intersections.tex}
\makeatletter
%<--------------------------------------------------------------------------–>
% intersection de deux lignes
@@ -25,37 +25,34 @@
}
\def\tkz at InterLL(#1,#2)(#3,#4)#5{%
-\path (intersection of #1--#2 and #3--#4) coordinate(#5);
-% méthode with tikz
-% \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\tkz at deltax{\fpeval{(\tkz at ax-\tkz at bx)/(28.45274)}}
-% \edef\tkz at deltaxx{\fpeval{(\tkz at cx-\tkz at dx)/(28.45274)}}
-% \edef\tkz at deltay{\fpeval{(\tkz at ay-\tkz at by)/(28.45274)}}
-% \edef\tkz at deltayy{\fpeval{(\tkz at cy-\tkz at dy)/(28.45274)}}
-% \edef\tkz at deltaxy{\fpeval{((\tkz at ax*\tkz at by)-(\tkz at ay*\tkz at bx))/(809.55841)}}
-% \edef\tkz at deltaxxyy{\fpeval{((\tkz at cx*\tkz at dy)-(\tkz at cy*\tkz at dx))/(809.55841)}}
-% \edef\tkz at div{\fpeval{(\tkz at deltax*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxx)}}
-% \edef\tkz at numx{\fpeval{(\tkz at deltaxy*\tkz at deltaxx)-(\tkz at deltax*\tkz at deltaxxyy)}}
-% \edef\tkz at numy{\fpeval{(\tkz at deltaxy*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxxyy)}}
-% \edef\tkz at xs{\fpeval{round(\tkz at numx/\tkz at div,5)}}
-% \edef\tkz at ys{\fpeval{round(\tkz at numy/\tkz at div,5)}}
-% \path[coordinate](\tkz at xs,\tkz at ys) coordinate (#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\tkz at deltax{\fpeval{(\tkz at ax-\tkz at bx)/(28.45274)}}
+\edef\tkz at deltaxx{\fpeval{(\tkz at cx-\tkz at dx)/(28.45274)}}
+\edef\tkz at deltay{\fpeval{(\tkz at ay-\tkz at by)/(28.45274)}}
+\edef\tkz at deltayy{\fpeval{(\tkz at cy-\tkz at dy)/(28.45274)}}
+\edef\tkz at deltaxy{\fpeval{((\tkz at ax*\tkz at by)-(\tkz at ay*\tkz at bx))/(809.55841)}}
+\edef\tkz at deltaxxyy{\fpeval{((\tkz at cx*\tkz at dy)-(\tkz at cy*\tkz at dx))/(809.55841)}}
+\edef\tkz at div{\fpeval{(\tkz at deltax*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxx)}}
+\edef\tkz at numx{\fpeval{(\tkz at deltaxy*\tkz at deltaxx)-(\tkz at deltax*\tkz at deltaxxyy)}}
+\edef\tkz at numy{\fpeval{(\tkz at deltaxy*\tkz at deltayy)-(\tkz at deltay*\tkz at deltaxxyy)}}
+\edef\tkz at xs{\fpeval{round(\tkz at numx/\tkz at div,5)}}
+\edef\tkz at ys{\fpeval{round(\tkz at numy/\tkz at div,5)}}
+\path[coordinate](\tkz at xs,\tkz at ys) coordinate (#5);
}
@@ -418,8 +415,7 @@
\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}
+ \tkzInterCCR(#2,\tkz at rayA)(#4,\tkz at rayB){tkzFirstPointResult}{tkzSecondPointResult}
\or% 1
\tkzInterCCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}%
\or%2
@@ -463,10 +459,10 @@
\tkz at cx#2cm %
\tkz at cy#4cm %
\edef\tkz at aa{\fpeval{((\tkz at cx+\tkz at cy)/(2*\tkz at dd))*(\tkz at cx-\tkz at cy)+\tkz at dd/2}}
-\edef\tkz at xx{\fpeval{\tkz at ax+\tkz at aa/\tkz at dd*(\tkz at bx - \tkz at ax)}}
+ \edef\tkz at xx{\fpeval{\tkz at ax+\tkz at aa/\tkz at dd*(\tkz at bx - \tkz at ax)}}
\edef\tkz at yy{\fpeval{\tkz at ay+\tkz at aa/\tkz at dd*(\tkz at by - \tkz at ay)}}
\path[coordinate](\tkz at xx pt,\tkz at yy pt) coordinate (tkzRadialCenter);
-\edef\tkz at hh{\fpeval{sqrt(abs((\tkz at cx+\tkz at aa)*(\tkz at cx-\tkz at aa)))}}% abs !2022
+\edef\tkz at hh{\fpeval{sqrt(abs((\tkz at cx+\tkz at aa)*(\tkz at cx-\tkz at aa)))}}% abs !2023
\edef\tkz at rx{\fpeval{\tkz at hh / \tkz at dd * (\tkz at ay - \tkz at by)}}
\edef\tkz at ry{\fpeval{\tkz at hh / \tkz at dd * (\tkz at bx - \tkz at ax)}}
\edef\tkz at xs{\fpeval{\tkz at xx + \tkz at rx}}
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-math.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-eu-math.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-math.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tools-eu-math.tex}
\makeatletter
%<-------------------------------------------------------------------------->
% \tkzpointnormalised#
@@ -113,7 +113,7 @@
}%
% Schrodinger's cat idea 03/01/20
-\tikzset{xfp/.code={%
+\tikzset{veclen/.code={%
\pgfmathdeclarefunction*{veclen}{2}{%
\begingroup%
\pgfmath at x##1pt\relax%
@@ -147,7 +147,7 @@
\pgfextracty{\pgf at y}{\pgfpointanchor{#3}{center}}%
\tkz at cx\pgf at x%
\tkz at cy\pgf at y%
-\edef\tkz@@dotprod{\fpeval{round(abs((\tkz at bx-\tkz at ax)*(\tkz at cx-\tkz at ax)+(\tkz at by-\tkz at ay)*(\tkz at cy-\tkz at ay))/(28.45274*28.45274),5)}}
+\edef\tkz@@dotprod{\fpeval{round(((\tkz at bx-\tkz at ax)*(\tkz at cx-\tkz at ax)+(\tkz at by-\tkz at ay)*(\tkz at cy-\tkz at ay))/(809.55841),5)}}
\global\let\tkzMathResult\tkz@@dotprod
\endgroup}
%<---------------------------------------------------------–>
@@ -160,7 +160,7 @@
\tkz@@CalcLengthcm(#1,#2){tkz at la}
\tkz@@CalcLengthcm(#1,#3){tkz at lb}
\tkzDotProduct(#1,#2,#3)
-\edef\tkzResult{\fpeval{abs((\tkzMathResult)-(\tkz at la)*(\tkz at lb))}}
+\edef\tkzResult{\fpeval{abs(\tkzMathResult)-(\tkz at la)*(\tkz at lb)}}
\ifdim \tkzResult pt < 0.01 pt\relax%
\global\tkzLineartrue
\else
@@ -223,5 +223,34 @@
\fi
\endgroup
}
+\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}%
+ \mathSin{\mathRad{\angle}}%
+ \let\sineangle\pgfmathresult%
+ \mathCos{\mathRad{\angle}}%
+ \let\cosineangle\pgfmathresult%
+ \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%
+ }%
+}
\makeatother
\endinput
\ No newline at end of file
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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-modules.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-modules
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-utilities.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-text.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-eu-text.tex
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-text.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-01-23 02:20:55 UTC (rev 65609)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-eu-utilities.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -1,5 +1,5 @@
% tkz-tools-eu-utilities
-% Copyright 2022 Alain Matthes
+% 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.
@@ -10,9 +10,9 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\def\fileversion{4.25c}
-\def\filedate{2022/09/23}
-\typeout{2022/09/23 4.25c tkz-tools-eu-utilities.tex}
+\def\fileversion{5.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tools-eu-utilities.tex}
\makeatletter
\pgfkeys{/tkzClip/.cd,
space/.store in = {\tkz at CLI@space},
@@ -37,7 +37,6 @@
\def\extractxy#1{%
\pgfextractx{\pgf at x}{\pgfpointanchor{#1}{center}}
\pgfextracty{\pgf at y}{\pgfpointanchor{#1}{center}}
-\typeout{#1 \the\pgf at x,\the\pgf at y}
}
%<-------------- some tools ------------------------------------------------->
\def\tkzutil at empty{}
@@ -168,65 +167,8 @@
}
\def\EnabledNumprint{\let\numprint\tkz at numprint}
%<---------------------------------------------------------–>
-\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}}%
-\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%
-\edef\tkz at dotprod{\fpeval{round(((\tkz at bx-\tkz at ax)*(\tkz at cx-\tkz at ax)+(\tkz at by-\tkz at ay)*(\tkz at cy-\tkz at ay))/(809.55841),5)}}
-\global\let\tkzMathResult\tkz at dotprod
-\endgroup}
-%<---------------------------------------------------------–>
- \def\tkzGetResult#1{%
- \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}}
-%<---------------------------------------------------------–>
-% #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\tkzMathResult{\fpeval{abs(abs(\tkzMathResult)-(\tkz at la)*(\tkz at lb))}}
-\ifdim \tkzMathResult pt < 0.0001 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\tkzMathResult{\fpeval{abs(\tkzMathResult)}}
-\ifdim \tkzMathResult pt < 0.0001 pt\relax%
-\global\tkzOrthotrue
-\else
-\global\tkzOrthofalse
-\fi
-\endgroup
-}
-%<---------------------------------------------------------–>
\def\tkzHelpGrid{%
\draw[help lines] (current bounding box.south west) grid
(current bounding box.north east);
Added: 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 (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-angles.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-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-lua-base.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-base.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-base.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-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-lua-intersections.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-intersections.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-intersections.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c 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-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-lua-math.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-math.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-lua-math.tex 2023-01-23 20:49:38 UTC (rev 65610)
@@ -0,0 +1,417 @@
+% 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.00c}
+\def\filedate{2023/01/23}
+\typeout{2023/01/23 5.00c tkz-tools-lua-math.tex}
+\makeatletter
+%<-------------------------------------------------------------------------->
+%<-------------------------------------------------------------------------->
+% Lengths
+%<-------------------------------------------------------------------------->
+%<-------------------------------------------------------------------------->
+\begin{luacode*}
+complex = {} -- global complex numbers registry
+M = {} -- the module
+local mt = {} --metatable for complex numbers
+setmetatable(_ENV, {__index = complex})
+ function new (r, i)
+ local cp = {}
+ cp = {r=r, i=i}
+ return setmetatable(cp,mt)
+ end
+ M.new = new -- add 'new' to the module
+ -- create constant 'i'
+ M.i = new(0, 1)
+
+ function M.add (c1, c2)
+ return new(c1.r + c2.r, c1.i + c2.i)
+ end
+
+ function M.sub (c1, c2)
+ return new(c1.r - c2.r, c1.i - c2.i)
+ end
+
+ function M.mul (c1, c2)
+ return new(c1.r*c2.r - c1.i*c2.i, c1.r*c2.i + c1.i*c2.r)
+ end
+
+ function M.inv (c)
+ local n = c.r^2 + c.i^2
+ return new(c.r/n, -c.i/n)
+ end
+
+ function M.div (c1, c2)
+ return M.mul(c1, M.inv(c2))
+ end
+
+ function M.re (c)
+ return new(c.r,0)
+ end
+
+ function M.im (c)
+ return new(c.i,0)
+ end
+
+ function M.mod (c)
+ local n = c.r^2 + c.i^2
+ return new(n,0)
+ end
+
+ function M.prinarg(c)
+ local arg
+ if c.r > 0 then
+ arg = math.atan(c.i/c.r)
+ elseif c.r < 0 and c.i >= 0 then
+ arg = math.atan(c.i/c.r) + math.pi
+ elseif c.r < 0 and c.i < 0 then
+ arg = math.atan(c.i/c.r) - math.pi
+ elseif c.r == 0 and c.i > 0 then
+ arg = math.pi / 2
+ elseif c.r == 0 and c.i < 0 then
+ arg = - math.pi / 2
+ else
+ error("Principal argument not defined.")
+ end
+ return arg
+ end
+
+ function M.op (...)
+ return ...
+ end
+
+ function M.tostring (c)
+ if c.i ==0 then
+ return string.format("%g", c.r)
+ elseif c.i> 0 and c.i==1 then
+ return string.format("%g+i", c.r)
+ elseif c.i> 0 and c.i~=1 then
+ return string.format("%g+%gi", c.r, c.i)
+ else
+ return string.format("%g%gi", c.r, c.i) --to avoid +-
+ end
+ end
+
+ --Setting Metatable operations.
+ mt.__add = M.add
+ mt.__mul = M.mul
+ mt.__sub = M.sub
+ mt.__tostring = M.tostring
+\end{luacode*}
+
+
+
+\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*}
+
+\newcommand\cpxNew[2]{%
+\directlua{complex[\luastringN{#1}] = M.new(#2)}}
+\newcommand\cpxPrint[1]{%
+\directlua{tex.sprint(tostring(complex[\luastringN{#1}]))}}
+\newcommand\cpxAdd[3]{%
+\directlua{complex[\luastringN{#1}]%
+ =M.add(complex[\luastringN{#2}],complex[\luastringN{#3}])}}
+
+
+\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#
+% tkzCalcLength
+% \tkzGetLength
+% \tkzpttocm
+% \tkzcmtopt
+% \tkzFindSlope
+% option xfp
+
+% \tkzpointnormalised normalise un point A-->A' tq ||v(OA')=1||
+% équivalent de \pgfpointnormalised avec fp
+% 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-lua-math.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
More information about the tex-live-commits
mailing list.