summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-12-25 03:00:43 +0000
committerNorbert Preining <norbert@preining.info>2023-12-25 03:00:43 +0000
commit04394251f8dab08ff9ce469f57fd910ae79ecf3b (patch)
tree7d5e1b982233557d1191afd1d85791c9edc2c6b2 /macros/latex/contrib/tkz
parent4730d615ef9f92ac5b55492b0eadad6023d991e0 (diff)
CTAN sync 202312250300
Diffstat (limited to 'macros/latex/contrib/tkz')
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/README.md18
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex89
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex35
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex61
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex6
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex560
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex37
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex72
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex5
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex30
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex2
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdfbin551541 -> 584764 bytes
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua39
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua55
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua19
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua58
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua4
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua4
35 files changed, 863 insertions, 299 deletions
diff --git a/macros/latex/contrib/tkz/tkz-elements/README.md b/macros/latex/contrib/tkz/tkz-elements/README.md
index 2ece035621..a357bf2bf0 100644
--- a/macros/latex/contrib/tkz/tkz-elements/README.md
+++ b/macros/latex/contrib/tkz/tkz-elements/README.md
@@ -1,10 +1,10 @@
# tkz-elements — for euclidean geometry
-Release 1.60c 2023/12/14
+Release 1.72c 2023/12/24
## Description
-`tkz-elements v.1.60c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`.
+`tkz-elements v.1.72c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`.
The main possibility of programmation proposed is oriented "object programming" with object classes like point, line, triangle, circle and ellipse. For the moment, once the calculations are done, it is `tkz-euclide` or `TikZ` which allows the drawings.
@@ -56,9 +56,21 @@ package conflicts.
## Examples
Some examples will be stored on my site : [http://altermundus.fr](http://altermundus.fr).
-An important example `Golden Arbelos` using the package is on the site.
+An important example `Golden Arbelos` using the package is on the site. All the files of the documentation
+are on the site.
## History
+
+ - version 1.72c
+ - added a line method (apollonius) set of points M with MA/MB = k
+ - example with line : apollonius
+ - example: three circle
+ - example: pentagons on golden arbelos
+ - descriptions of several cases with 'midcircle'
+ - added soddy method and examples
+ - added example with circles_position
+ - correction of the documentation
+
- version 1.60c
- added Internal and external tangents common to two circles:
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
index 1ed09078a3..a945f3de7c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
@@ -124,6 +124,7 @@ Three attributes are used (south, west, radius).
\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & boolean \\
\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & boolean \\
\Imeth{circle}{draw ()} & for further use &\\
+\Imeth{circle}{circles\_position (C1,C2)} & see \ref{sub:circles_position} \\
\bottomrule
\end{tabular}
\egroup
@@ -462,7 +463,7 @@ z.E = C.AO.south
z.H = C.AO.north
z.F = C.BP.north
z.G = C.BP.south
-C.IT,C.JV = midcircle_ (C.AO,C.BP)
+C.IT,C.JV = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
z.J,z.V = get_points ( C.JV )
z.X,z.Y = intersection (C.AO,C.BP)
@@ -482,7 +483,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
z.H = C.AO.north
z.F = C.BP.north
z.G = C.BP.south
- C.IT,C.JV = midcircle_ (C.AO,C.BP)
+ C.IT,C.JV = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
z.J,z.V = get_points ( C.JV )
z.X,z.Y = intersection (C.AO,C.BP)
@@ -528,7 +529,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
C.UR = circle : diameter (z.U,z.R)
z.x = C.SV.center
z.y = C.UR.center
- C.IT = midcircle_ (C.AO,C.BP)
+ C.IT = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
\end{tkzelements}
\end{verbatim}
@@ -549,7 +550,7 @@ z.X,z.Y = intersection (C.AO,C.BP)
C.UR = circle : diameter (z.U,z.R)
z.x = C.SV.center
z.y = C.UR.center
- C.IT = midcircle_ (C.AO,C.BP)
+ C.IT = C.AO : midcircle (C.BP)
z.I,z.T = get_points ( C.IT )
\end{tkzelements}
\begin{tikzpicture}
@@ -566,7 +567,6 @@ z.X,z.Y = intersection (C.AO,C.BP)
\end{tikzpicture}
\end{minipage}
-
This case is a little more complicated. We'll construct the two circles $(\alpha)$ and $(\beta)$ tangent to the two given circles. Then we construct the radical circle orthogonal to the circles $(\alpha)$ and $(\beta)$. Its center is the radical center as well as the center of internal similtude of circles of center $A$ and $B$.
\item When the two given circles are external to each other, we construct the external center of similitude of the two given circles.
@@ -587,7 +587,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -610,7 +610,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -652,7 +652,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -675,7 +675,7 @@ L.AB = line : new (z.A,z.B)
z.E = C.Aa.north
z.F = C.Bb.north
L.EF = line : new (z.E,z.F)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
L.TF = C.Bb : tangent_from (z.I)
z.H = intersection (L.TF,C.IT)
@@ -702,14 +702,14 @@ z.F=L.TF.pb
\begin{minipage}{.4\textwidth}
\begin{verbatim}
\begin{tkzelements}
-z.A = point : new ( 2 , 0 )
-z.B = point : new ( 4 , 0 )
-z.a = point : new ( 1 , 0)
-z.b = point : new ( 1 , 0)
-C.Aa = circle : new (z.A,z.a)
-C.Bb = circle : new (z.B,z.b)
-C.IT = midcircle_ (C.Aa,C.Bb)
-z.I,z.T = get_points ( C.IT )
+z.A = point : new ( 2 , 0 )
+z.B = point : new ( 4 , 0 )
+z.a = point : new ( 1 , 0)
+z.b = point : new ( 1 , 0)
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+C.IT = C.Aa : midcircle (C.Bb)
+z.I,z.T = get_points ( C.IT )
\end{tkzelements}
\end{verbatim}
\end{minipage}
@@ -721,7 +721,7 @@ z.a = point : new ( 1 , 0)
z.b = point : new ( 1 , 0)
C.Aa = circle : new (z.A,z.a)
C.Bb = circle : new (z.B,z.b)
-C.IT = midcircle_ (C.Aa,C.Bb)
+C.IT = C.Aa : midcircle (C.Bb)
z.I,z.T = get_points ( C.IT )
\end{tkzelements}
@@ -741,6 +741,59 @@ z.I,z.T = get_points ( C.IT )
% subsubsection midcircle (end)
% subsection methods_of_the_class_circle (end)
+\subsection{Circles\_position} % (fold)
+\label{sub:circles_position}
+Cette fonction retourne une chaîne qui indique la position du cercle par rapport à un autre. Utile pour créer une fonction. Les cas sont:
+
+\begin{itemize}
+ \item "outside"
+ \item "outside tangent"
+ \item "inside tangent"
+ \item "inside"
+ \item "intersect"
+\end{itemize}
+
+\begin{minipage}{.5\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+ z.A = point : new ( 0 , 0 )
+ z.a = point : new ( 3 , 0 )
+ z.B = point : new ( 2 , 0 )
+ z.b = point : new ( 3 , 0 )
+ C.Aa = circle: new (z.A,z.a)
+ C.Bb ·= circle: new (z.B,z.b)
+ position = circles_position (C.Aa,C.Bb)
+ if position == "inside tangent"
+ then color = "orange"
+ else color = "blue" end
+\end{tkzelements}
+
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawCircle(A,a)
+ \tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+\end{tikzpicture}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A = point : new ( 1 , 0 )
+z.a = point : new ( 3 , 0 )
+z.B = point : new ( 2 , 0 )
+z.b = point : new ( 3 , 0 )
+C.Aa = circle: new (z.A,z.a)
+C.Bb = circle: new (z.B,z.b)
+position = circles_position (C.Aa,C.Bb)
+if position == "inside tangent" then color = "orange" else color = "blue" end
+\end{tkzelements}
+\hspace{\fill}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircle(A,a)
+\tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+\end{tikzpicture}\hspace{\fill}
+\end{minipage}
+% subsection circles__position (end)
% section class_circle (end)
\endinput
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
index 337a36f2eb..8ecdac344f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
@@ -196,6 +196,7 @@ Here's the list of methods for the \tkzNameObj{line} object. The results are eit
\midrule
\Imeth{line}{circle ()} & |C.AB = L.AB : circle ()| & center pa through pb \\
\Imeth{line}{circle\_swap ()} & |C.BA = L.AB : circle\_swap ()|& center pb through pa \\
+ \Imeth{line}{apollonius (k)} & |C.apo = L.AB : apollonius (2)|& Ensemble des points tq. |MA/MB = 2| \\
\midrule
\textbf{Transformations} &&\\
\midrule
@@ -513,9 +514,41 @@ z.a,z.b = L.ab.pa,L.ab.pb
\tkzDrawSegment[red,dashed](E,E')
\end{tikzpicture}
\end{minipage}
+% subsubsection reflection_of_object (end)
-% subsubsection reflection_of_object (end)
+\subsection{Apollonius circle MA/MB = k} % (fold)
+\label{sub:apollonius_circle_ma_mb_k}
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 6 , 0 )
+L.AB =line: new (z.A,z.B)
+C.apo = L.AB : apollonius (2)
+z.O,z.C = get_points ( C.apo )
+z.D = C.apo : antipode (z.C)
+z.P = C.apo : point (0.30)
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzFillCircle[blue!20,opacity=.2](O,C)
+\tkzDrawCircle[blue!50!black](O,C)
+\tkzDrawPoints(A,B,O,C,D,P)
+\tkzLabelPoints[below right](A,B,O,C,D,P)
+\tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
+\tkzDrawSegments[red](A,C)
+\tkzDrawPoints(A,B)
+\tkzLabelCircle[draw,fill=green!10,%
+ text width=3cm,text centered,left=24pt](O,D)(60)%
+ {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
+\tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C)
+\tkzMarkAngles[mark=||](A,P,D D,P,B)
+\end{tikzpicture}
+
+Remark: |\tkzUseLua{point.mod(z.P-z.A)/point.mod(z.P-z.B)}| = \tkzUseLua{point.mod(z.P-z.A)/point.mod(z.P-z.B)}
+% subsection apollonius_circle_ma_mb_k (end)
+
% subsection methods_from_class_line (end)
% section class_line (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
index 321444b889..017e3ae2d4 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
@@ -25,15 +25,15 @@
\Igfct{math}{value (v) } & apply |scale * value | \\
\Igfct{math}{real (v) } & apply | value /scale | \\
\Igfct{math}{angle\_normalize (a) } & to get a value between 0 and $2\pi$ \\
-\Igfct{math}{radical\_center (C1,C2,C3)} & see \ref{sub:radical_center} \\
-\Igfct{math}{radical\_circle (C1,C2,C3)} & see \ref{sub:radical_circle} \\
-\Igfct{math}{barycenter (\{z1,n1\},\{z2,n2\}, ...)} & barycenter of list of points \\
+\Igfct{misc}{radical\_center (C1,C2,C3)} & see \ref{sub:radical_center} \\
+\Igfct{misc}{radical\_circle (C1,C2,C3)} & see \ref{sub:radical_circle} \\
+\Igfct{misc}{barycenter (\{z1,n1\},\{z2,n2\}, ...)} & barycenter of list of points \\
\bottomrule
\end{tabular}
\egroup
-\subsubsection{Harmonic division with tkzphi } % (fold)
-\label{ssub:harmonic_division_with_tkzphi}
+\subsection{Harmonic division with tkzphi } % (fold)
+\label{sub:harmonic_division_with_tkzphi}
\begin{tkzexample}[latex=0cm,small,code only]
\begin{tkzelements}
scale =.5
@@ -66,10 +66,10 @@
\tkzLabelPoints(a,b,n,m)
\end{tikzpicture}
\hspace*{\fill}
-% subsubsection harmonic_division_with_tkzphi (end)
+% subsection harmonic_division_with_tkzphi (end)
-\subsubsection{Function islinear} % (fold)
-\label{ssub:function_islinear}
+\subsection{Function islinear} % (fold)
+\label{sub:function_islinear}
\begin{minipage}{0.5\textwidth}
\begin{tkzexample}[latex=0cm,small,code only]
\begin{tkzelements}
@@ -109,10 +109,10 @@
\hspace*{\fill}
\end{minipage}
-% subsubsection function_islinear (end)
+% subsection function_islinear (end)
-\subsubsection{Function \tkzfname{value} }% (fold)
-\label{ssub:function_value}
+\subsection{Function \tkzfname{value} }% (fold)
+\label{sub:function_value}
value to apply scaling if necessary
@@ -125,11 +125,11 @@ If |scale = 1.2| with a = value(5) the actual value of |a| will be $5\times 1.2
If |scale = 1.2| with a = 6 then real(a) = $6 / 1.2 = 5$ .
-% subsubsection function_real (end)
+% subsection function_real (end)
-\subsubsection{Transfer from lua to \TEX} % (fold)
-\label{ssub:transfer_from_lua_to_tex}
+\subsection{Transfer from lua to \TEX} % (fold)
+\label{sub:transfer_from_lua_to_tex}
It's possible to transfer variable from Lua to \TEX{} with
\Igfct{package}{\textbackslash{tkzUseLua}}.
@@ -175,9 +175,9 @@ It's possible to transfer variable from Lua to \TEX{} with
\tkzLabelSegment[below left,draw](C,H){$AB = \tkzUseLua{l}$}
\end{tikzpicture}
\end{minipage}
-% subsubsection transfer_from_lua_to_tex (end)
+% subsection transfer_from_lua_to_tex (end)
-\subsubsection{Normalized angles : Slope of lines (ab), (ac) and (ad)} % (fold)
+\subsection{Normalized angles : Slope of lines (ab), (ac) and (ad)} % (fold)
\label{sub:normalized_angles}
\begin{tkzexample}[latex=0cm,small,code only]
\begin{tkzelements}
@@ -227,13 +227,11 @@ tex.print('slope normalized of (ad) : '..tostring(angle_normalize(angle))..'\\\\
\tkzLabelPoints(a,b,c,d)
\end{tikzpicture}
\hspace*{\fill}
- % \caption{Normalized angles}
+% subsection normalized_angles (end)
-% subsubsection normalized_angles (end)
-
-\subsubsection{Get angle} % (fold)
-\label{ssub:get_angle}
+\subsection{Get angle} % (fold)
+\label{sub:get_angle}
The function |get_angle (a,b,c)| gives the angle normalized of $(\overrightarrow{ab},\overrightarrow{ac})$.
@@ -283,11 +281,10 @@ The function |get_angle (a,b,c)| gives the angle normalized of $(\overrightarro
\hspace*{\fill}
\end{minipage}
-% \caption{Get angle}
-% subsubsection get_angle (end)
+% subsection get_angle (end)
-\subsubsection{Dot or scalar product} % (fold)
-\label{ssub:dot_or_scalar_product}
+\subsection{Dot or scalar product} % (fold)
+\label{sub:dot_or_scalar_product}
\begin{minipage}{0.5\textwidth}
\begin{tkzexample}[latex=0cm,small,code only]
@@ -335,25 +332,23 @@ The function |get_angle (a,b,c)| gives the angle normalized of $(\overrightarro
\hspace*{\fill}
\end{minipage}
-%\caption{Dot or scalar product}
-
The scalar product of the vectors $\overrightarrow{AC}$ and $\overrightarrow{AB}$ is equal to $\tkzUseLua{x}$, so these vectors are orthogonal.
-% subsubsection dot_or_scalar_product (end)
+% subsection dot_or_scalar_product (end)
-\subsubsection{Alignment or orthogonality} % (fold)
-\label{ssub:alignment_or_orthogonality}
+\subsection{Alignment or orthogonality} % (fold)
+\label{sub:alignment_or_orthogonality}
With the functions |islinear| and |isortho|. |islinear(z.a,z.b,z.c)| gives |true| idf the points $a$, $b$ and $c$ are aligned.
|isortho(z.a,z.b,z.c)| gives |true| if the line $(ab)$ is orthogonal to the line $(ac)$.
% subsection alignment_or_orthogonality (end)
-\subsubsection{Other functions} % (fold)
-\label{ssub:other_functions}
+\subsection{Other functions} % (fold)
+\label{sub:other_functions}
Not documented because still in beta version: |parabola|, |Cramer22|, |Cramer33|.
-% subsubsection other_functions (end)
+% subsection other_functions (end)
% section math_functions (end)
% % section classes_and_objects (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex
index 372ca334be..2b4a165a28 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-parallelogram.tex
@@ -48,7 +48,7 @@ P.new = parallelogram : new (z.A,z.B,z.C,z.D)
z.B = P.new.pb
z.C = P.new.pc
z.D = P.new.pd
-z.I = P.new.i
+z.I = P.new.center
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
@@ -70,7 +70,7 @@ P.new = parallelogram : new (z.A,z.B,z.C,z.D)
z.B = P.new.pb
z.C = P.new.pc
z.D = P.new.pd
-z.I = P.new.i
+z.I = P.new.center
\end{tkzelements}
\hspace{\fill}
\begin{tikzpicture}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex
index 62cb44b1c9..418278a99f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-rectangle.tex
@@ -257,7 +257,7 @@ z.I = R.diag.center
\begin{tkzelements}
z.X = point : new ( 0 , 0 )
z.Y = point : new ( 4 , 2 )
-R.gold = rectangle : gold (z.A,z.B)
+R.gold = rectangle : gold (z.X,z.Y)
z.C = R.gold.pc
z.D = R.gold.pd
z.I = R.gold.center
@@ -270,7 +270,7 @@ z.I = R.gold.center
\tkzLabelPoints(X,Y)
\tkzLabelPoints[above](Z,W)
\tkzDrawPoints[red](I)
-\tkzLabelSegment[sloped,above](X,Y){|rectangle : gold (z.X,z.Y)|}
+\tkzLabelSegment[sloped,above](X,Y){rectangle : gold (z.X,z.Y)}
\end{tikzpicture}
\end{verbatim}
\end{minipage}
@@ -291,7 +291,7 @@ z.I = R.gold.center
\tkzLabelPoints(X,Y)
\tkzLabelPoints[above](Z,W)
\tkzDrawPoints[red](I)
-\tkzLabelSegment[sloped,above](X,Y){|rectangle : gold (z.X,z.Y)|}
+\tkzLabelSegment[sloped,above](X,Y){rectangle : gold (z.X,z.Y)}
\end{tikzpicture}
\end{minipage}
% subsubsection gold_method (end)
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
index 91923e2232..baaebd5d71 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
@@ -1370,7 +1370,7 @@ z.F = intersection (L.LH,C.IH) -- feuerbach
z.A = point: new (0 , 0)
z.B = point: new (8 , 0)
L.AB = line: new (z.A,z.B)
- z.X,z.Y = L.AB: square ()
+ _,_,z.X,z.Y = get_points(L.AB: square ())
L.BX = line: new (z.B,z.X)
z.M = L.BX.mid
C.MA = circle: new (z.M,z.A)
@@ -1424,7 +1424,7 @@ z.C = intersection (L.AK,L.AB)
z.A = point: new (0 , 0)
z.C = point: new (6 , 0)
L.AC = line: new (z.A,z.C)
- z.x,z.y = L.AC: square ()
+ _,_,z.x,z.y = get_points(L.AC: square ())
z.O_1 = L.AC . mid
C = circle: new (z.O_1,z.x)
z.B = intersection (L.AC,C)
@@ -2370,7 +2370,7 @@ z.O = C.DC : inversion (z.W)
z.L = T.ABC: lemoine_point ()
z.S = T.ABC: spieker_center ()
C.euler = T.ABC: euler_circle ()
- z.N,z.Ma = get_points (C.euler)
+ z.N,z.Ma = get_points (C.euler)
C.exA = T.ABC : ex_circle ()
z.Ja,z.Xa = get_points (C.exA)
C.exB = T.ABC : ex_circle (1)
@@ -2388,7 +2388,7 @@ z.O = C.DC : inversion (z.W)
\begin{tikzpicture}
\tkzGetNodes
- \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+ \tkzDrawLines[add=1 and 1](A,B A,C B,C)
\tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
\tkzClipCircle(o,t)
\tkzDrawLines[red](o,L N,o Ma,t)
@@ -2411,7 +2411,7 @@ z.G = T.ABC.centroid
z.L = T.ABC: lemoine_point ()
z.S = T.ABC: spieker_center ()
C.euler = T.ABC: euler_circle ()
-z.N,z.Ma = get_points (C.euler)
+z.N,z.Ma = get_points (C.euler)
C.exA = T.ABC : ex_circle ()
z.Ja,z.Xa = get_points (C.exA)
C.exB = T.ABC : ex_circle (1)
@@ -2431,7 +2431,7 @@ z.t = intersection (L.ox,L.MaS) -- through
\hspace*{\fill}
\begin{tikzpicture}
\tkzGetNodes
-\tkzDrawLines[add=1 and 1](A,B A,C B,C)
+\tkzDrawLines[add=1 and 1](A,B A,C B,C)
\tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
\tkzClipCircle(o,t)
\tkzDrawLines[red](o,L N,o Ma,t)
@@ -2523,7 +2523,7 @@ L.OOp = line : new (z.O,z.Op)
z.M = L.OOp.mid
\end{tkzelements}
\begin{tikzpicture}
- \tkzGetNodes
+ \tkzGetNodes
\tkzDrawCircle[red](O,P)
\tkzDrawCircle[purple](O',z1)
\tkzDrawCircle[cyan](M,T)
@@ -2559,7 +2559,7 @@ z.M = L.OOp.mid
\hspace*{\fill}
\begin{tikzpicture}
-\tkzGetNodes
+\tkzGetNodes
\tkzDrawCircle[red](O,P)
\tkzDrawCircle[purple](O',z1)
\tkzDrawCircle[cyan](M,T)
@@ -2576,7 +2576,7 @@ z.M = L.OOp.mid
\end{tikzpicture}
\hspace*{\fill}
% subsection orthogonal_circles_v2 (end)
-
+%
\subsection{Orthogonal circle to two circles} % (fold)
\label{sub:orthogonal_circle_to_two_circles}
@@ -2599,7 +2599,7 @@ z.M = L.OOp.mid
z.Kp = L.Kp.pb
\end{tkzelements}
\begin{tikzpicture}
- \tkzGetNodes
+ \tkzGetNodes
\tkzDrawCircles(O,B O',D)
\tkzDrawLine[add=1 and 2,cyan](E,F)
\tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
@@ -2628,10 +2628,10 @@ z.K = L.K.pb
z.Tp = L.Tp.pb
z.Kp = L.Kp.pb
\end{tkzelements}
-
+
\hspace*{\fill}
\begin{tikzpicture}
-\tkzGetNodes
+\tkzGetNodes
\tkzDrawCircles(O,B O',D)
\tkzDrawLine[add=1 and 2,cyan](E,F)
\tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
@@ -2662,12 +2662,12 @@ z.Kp = L.Kp.pb
C.O2C = circle : new (z.O_2,z.B)
z.Q = C.O1C : midarc (z.C,z.A)
z.P = C.O2C : midarc (z.B,z.C)
- L.O1O2 = line : new (z.O_1,z.O_2)
- L.O0O1 = line : new (z.O_0,z.O_1)
+ L.O1O2 = line : new (z.O_1,z.O_2)
+ L.O0O1 = line : new (z.O_0,z.O_1)
L.O0O2 = line : new (z.O_0,z.O_2)
z.M_0 = L.O1O2 : harmonic_ext (z.C)
z.M_1 = L.O0O1 : harmonic_int (z.A)
- z.M_2 = L.O0O2 : harmonic_int (z.B)
+ z.M_2 = L.O0O2 : harmonic_int (z.B)
L.BQ = line : new (z.B,z.Q)
L.AP = line : new (z.A,z.P)
z.S = intersection (L.BQ,L.AP)
@@ -2739,12 +2739,12 @@ C.O1C = circle : new (z.O_1,z.C)
C.O2C = circle : new (z.O_2,z.B)
z.Q = C.O1C : midarc (z.C,z.A)
z.P = C.O2C : midarc (z.B,z.C)
-L.O1O2 = line : new (z.O_1,z.O_2)
-L.O0O1 = line : new (z.O_0,z.O_1)
+L.O1O2 = line : new (z.O_1,z.O_2)
+L.O0O1 = line : new (z.O_0,z.O_1)
L.O0O2 = line : new (z.O_0,z.O_2)
z.M_0 = L.O1O2 : harmonic_ext (z.C)
z.M_1 = L.O0O1 : harmonic_int (z.A)
-z.M_2 = L.O0O2 : harmonic_int (z.B)
+z.M_2 = L.O0O2 : harmonic_int (z.B)
L.BQ = line : new (z.B,z.Q)
L.AP = line : new (z.A,z.P)
z.S = intersection (L.BQ,L.AP)
@@ -2966,7 +2966,7 @@ C.OA = circle : new (z.O,z.A)
z.Ap = C.OA : antipode (z.A)
z.B = intersection (L.AM, C.OA)
\end{tkzelements}
-
+
\hspace*{\fill}
\begin{tikzpicture}
\tkzGetNodes
@@ -3253,7 +3253,7 @@ z.n,z.np = get_points (C.BC: tangent_at (z.N))
\subsection{Tangent and circle} % (fold)
\label{sub:tangent_and_circle}
\begin{minipage}{.5\textwidth}
-\begin{verbatim}
+\begin{verbatim}
\begin{tkzelements}
z.A = point: new (1,0)
z.B = point: new (2,2)
@@ -3888,21 +3888,21 @@ z.Cp = C.AC: inversion ( z.B, z.E, z.C )
\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
\begin{verbatim}
\begin{tkzelements}
- z.a = point: new(1,0)
- z.b = point: new(6,2)
- z.c = point: new(2,5)
- T = triangle : new (z.a,z.b,z.c)
- z.g = T : gergonne_point ()
- z.i = T.incenter
- z.ta,z.tb,z.tc = get_points (T : intouch ())
-end{tkzelements}
+z.a = point: new(1,0)
+z.b = point: new(6,2)
+z.c = point: new(2,5)
+T = triangle : new (z.a,z.b,z.c)
+z.g = T : gergonne_point ()
+z.i = T.incenter
+z.ta,z.tb,z.tc = get_points (T : intouch ())
+\end{tkzelements}
\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawPolygons(a,b,c)
- \tkzDrawPoints(a,b,c,g)
- \tkzLabelPoints(a,b,c)
- \tkzDrawSegments (a,ta b,tb c,tc)
- \tkzDrawCircle(i,ta)
+\tkzGetNodes
+\tkzDrawPolygons(a,b,c)
+\tkzDrawPoints(a,b,c,g)
+\tkzLabelPoints(a,b,c)
+\tkzDrawSegments (a,ta b,tb c,tc)
+\tkzDrawCircle(i,ta)
\end{tikzpicture}
\end{verbatim}
\end{minipage}
@@ -3986,4 +3986,494 @@ z.z_0,z.z_1 = get_points (L.anti)
\tkzDrawCircle(L,x_0)
\end{tikzpicture}
\end{minipage}
-% subsection antiparallel_through_lemoine_point (end) \ No newline at end of file
+% subsection antiparallel_through_lemoine_point (end)
+
+\subsection{Soddy circle without function} % (fold)
+\label{sub:soddy}
+
+\begin{verbatim}
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new ( 0.5 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+C.ins = circle : new (z.I,z.E)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.CF = circle : new ( z.C , z.F )
+C.AG = circle : new ( z.A , z.G )
+C.BE = circle : new ( z.B , z.E )
+L.Ah = line : new ( z.A , z.Ha )
+L.Bh = line : new ( z.B , z.Hb )
+L.Ch = line : new ( z.C , z.Hc )
+z.X,z.Xp = intersection (L.Ah,C.AG)
+z.Y,z.Yp = intersection (L.Bh,C.BE)
+z.Z,z.Zp = intersection (L.Ch,C.CF)
+L.XpE = line : new (z.Xp,z.E)
+L.YpF = line : new (z.Yp,z.F)
+L.ZpG = line : new (z.Zp,z.G)
+z.S = intersection (L.XpE,L.YpF)
+z.Xi = intersection(L.XpE,C.AG)
+z.Yi = intersection(L.YpF,C.BE)
+_,z.Zi = intersection(L.ZpG,C.CF)
+z.S = triangle : new (z.Xi,z.Yi,z.Zi).circumcenter
+C.soddy_int = circle : new (z.S,z.Xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.s = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.Xi,z.Yi,z.Zi)
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,X,Y,Z,X',Y',Z',Xi,Yi,Zi,I)
+\tkzDrawPoints(Xi',Yi',Zi',S)
+\tkzLabelPoints(A,B,C,E,F,G,X,Y,Z,X',Y',Z')
+\tkzDrawCircles(A,G B,E C,F I,E S,Xi w,s)
+\tkzDrawLines(X',Ha Y',Hb Z',Hc)
+\tkzDrawLines(X',E Y',F Z',G)
+\end{tikzpicture}
+\end{verbatim}
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new ( 0.5 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+C.ins = circle : new (z.I,z.E)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.CF = circle : new ( z.C , z.F )
+C.AG = circle : new ( z.A , z.G )
+C.BE = circle : new ( z.B , z.E )
+L.Ah = line : new ( z.A , z.Ha )
+L.Bh = line : new ( z.B , z.Hb )
+L.Ch = line : new ( z.C , z.Hc )
+z.X,z.Xp = intersection (L.Ah,C.AG)
+z.Y,z.Yp = intersection (L.Bh,C.BE)
+z.Z,z.Zp = intersection (L.Ch,C.CF)
+L.XpE = line : new (z.Xp,z.E)
+L.YpF = line : new (z.Yp,z.F)
+L.ZpG = line : new (z.Zp,z.G)
+z.S = intersection (L.XpE,L.YpF)
+z.Xi = intersection(L.XpE,C.AG)
+z.Yi = intersection(L.YpF,C.BE)
+_,z.Zi = intersection(L.ZpG,C.CF)
+z.S = triangle : new (z.Xi,z.Yi,z.Zi).circumcenter
+C.soddy_int = circle : new (z.S,z.Xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.s = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.Xi,z.Yi,z.Zi)
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,X,Y,Z,X',Y',Z',Xi,Yi,Zi,I)
+\tkzDrawPoints(Xi',Yi',Zi',S)
+\tkzLabelPoints(A,B,C,E,F,G,X,Y,Z,X',Y',Z')
+\tkzDrawCircles(A,G B,E C,F I,E S,Xi w,s)
+\tkzDrawLines(X',Ha Y',Hb Z',Hc)
+\tkzDrawLines(X',E Y',F Z',G)
+\end{tikzpicture}
+% subsection soddy (end)
+
+\subsection{Soddy circle with function} % (fold)
+\label{sub:soddy_circle_with_function}
+
+\begin{verbatim}
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new (4 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.ins = circle : new (z.I,z.E)
+z.s,z.xi,z.yi,z.zi = T.ABC : soddy_center ()
+C.soddy_int = circle : new (z.s,z.xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.t = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.xi,z.yi,z.zi)
+ \end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawCircles(A,G B,E C,F I,E s,xi w,t)
+\tkzDrawPoints(A,B,C,E,F,G,s,w,xi,t)
+\tkzLabelPoints(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,xi,yi,zi,I)
+\tkzDrawPoints(Xi',Yi',Zi')
+\tkzLabelPoints(A,B,C,E,F,G)
+\tkzDrawCircles(A,G B,E C,F I,E w,s)
+\end{tikzpicture}
+\end{verbatim}
+
+\begin{tkzelements}
+z.A = point : new ( 0 , 0 )
+z.B = point : new ( 5 , 0 )
+z.C = point : new (4 , 4 )
+T.ABC = triangle : new ( z.A,z.B,z.C )
+z.I = T.ABC.incenter
+z.E,z.F,z.G = T.ABC : projection (z.I)
+T.orthic = T.ABC : orthic ()
+z.Ha,z.Hb,z.Hc = get_points (T.orthic)
+C.ins = circle : new (z.I,z.E)
+z.s,z.xi,z.yi,z.zi = T.ABC : soddy_center ()
+C.soddy_int = circle : new (z.s,z.xi)
+C.soddy_ext = C.ins : inversion (C.soddy_int)
+z.w = C.soddy_ext.center
+z.t = C.soddy_ext.through
+z.Xip,z.Yip,z.Zip = C.ins : inversion (z.xi,z.yi,z.zi)
+ \end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawCircles(A,G B,E C,F I,E s,xi w,t)
+\tkzDrawPoints(A,B,C,E,F,G,s,w,xi,t)
+\tkzLabelPoints(A,B,C)
+\tkzDrawPoints(A,B,C,E,F,G,Ha,Hb,Hc,xi,yi,zi,I)
+\tkzDrawPoints(Xi',Yi',Zi')
+\tkzLabelPoints(A,B,C,E,F,G)
+\tkzDrawCircles(A,G B,E C,F I,E w,s)
+\end{tikzpicture}
+
+% subsection soddy_circle_with_function (end)
+
+\subsubsection{Pappus chain} % (fold)
+\label{ssub:pappus_chain}
+ Soit le point $D$ appartenant à la droite $(AC)$ tel que
+ \[ DB \cdot DA = AC^2\]
+ alors $B$ est l'image de $D$ dans l'inversion de centre $A$ et puissance $AC^2$.
+ Les demi-cercles de diamètre $[AB]$ et$[AC]$ passent par le pôle $A$. Ils ont pour images les demi-droites $\mathcal{L'}$ et $\mathcal{L}$.
+
+Les cercles de centre $J_i$ et de diamètre $S_iT_i$ ont pour images les cercles de diamètre $S'_iT'_i$.
+
+ \pgfmathsetmacro{\xB}{6}%
+ \pgfmathsetmacro{\xC}{9}%
+ \pgfmathsetmacro{\xD}{(\xC*\xC)/\xB}%
+ \pgfmathsetmacro{\xJ}{(\xC+\xD)/2}%
+ \pgfmathsetmacro{\r}{\xD-\xJ}%
+ \pgfmathsetmacro{\nc}{2}%
+
+\begin{tikzpicture}[scale=1,ultra thin]
+ \tkzDefPoints{0/0/A,\xB/0/B,\xC/0/C,\xD/0/D}
+ \tkzDefPointBy[rotation = center C angle -90](B) \tkzGetPoint{c}
+ \tkzDefPointBy[rotation = center A angle 90](C) \tkzGetPoint{a}
+ \tkzDefPointBy[rotation = center D angle -90](C) \tkzGetPoint{d}
+ \tkzDrawLines[add=0 and 2.25](C,c)
+ \tkzDrawLines[add=0 and 1.5](D,d)
+ \tkzDefCircle[diameter](A,C) \tkzDrawSemiCircle(tkzPointResult,C)
+ \tkzDefCircle[diameter](A,B) \tkzDrawSemiCircle(tkzPointResult,B)
+ \tkzDefCircle[diameter](B,C) \tkzDrawSemiCircle(tkzPointResult,C)
+ \tkzDefCircle[diameter](C,D) \tkzDrawSemiCircle(tkzPointResult,D)
+ \tkzDrawArc[red](A,C)(a)
+ \tkzDrawPoints(A,B,C,D)
+ \tkzLabelPoints(A,B,C,D)
+ \tkzLabelLine[left,pos=3](C,c){$\mathcal{L}$}
+ \tkzLabelLine[right,pos=2.5](D,d){$\mathcal{L'}$}
+ \foreach \i in {1,...,\nc}
+{\tkzDefPoint(\xJ,2*\r*\i){J}
+ \tkzDefPoint(\xJ,2*\r*\i-\r){H}
+ \tkzDefCircleBy[inversion = center A through C](J,H)\tkzGetPoints{J'}{H'}
+ \tkzInterLC(A,J)(J,H) \tkzGetPoints{S}{T}
+ \tkzDefPointsBy[inversion = center A through C](S,T){S',T'}
+ \tkzDrawCircle(J,H)
+ \tkzDefCircle[diameter](S',T') \tkzGetPoint{I'}
+ \tkzDrawCircle(I',T')
+ \tkzDrawLines[dashed,add = 0 and .15](A,T A,S A,H)
+ \tkzDrawPoints(J,H,H',S,S',T,T')
+ \tkzLabelPoint(J){$J_\i$}
+ \tkzLabelPoint(S){$S_\i$}
+ \tkzLabelPoint(T){$T_\i$}
+ \tkzLabelPoint(H){$H_\i$}
+ \tkzLabelPoint(S'){$S'_\i$}
+ \tkzLabelPoint(T'){$T'_\i$}
+ \tkzLabelPoint(H'){$H'_\i$}}
+\end{tikzpicture}
+
+\begin{verbatim}
+\begin{tkzelements}
+ xC,nc = 10,16
+ xB = xC/tkzphi
+ xD = (xC*xC)/xB
+ xJ = (xC+xD)/2
+ r = xD-xJ
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( xB , 0)
+ z.C = point : new ( xC , 0)
+ L.AC = line : new (z.A,z.C)
+ z.i = L.AC.mid
+ L.AB = line:new (z.A,z.B)
+ z.j = L.AB.mid
+ z.D = point : new ( xD , 0)
+ C.AC = circle: new (z.A,z.C)
+ for i = -nc,nc do
+ z["J"..i] = point: new (xJ,2*r*i)
+ z["H"..i] = point: new (xJ,2*r*i-r)
+ z["J"..i.."p"], z["H"..i.."p"] = C.AC : inversion (z["J"..i],z["H"..i])
+ L.AJ = line : new (z.A,z["J"..i])
+ C.JH = circle: new ( z["J"..i] , z["H"..i])
+ z["S"..i], z["T"..i] = intersection (L.AJ,C.JH)
+ z["S"..i.."p"], z["T"..i.."p"] = C.AC : inversion (z["S"..i],z["T"..i])
+ L.SpTp = line:new ( z["S"..i.."p"], z["T"..i.."p"])
+ z["I"..i] = L.SpTp.mid
+ end
+\end{tkzelements}
+
+\def\nc{\tkzUseLua{nc}}
+
+\begin{tikzpicture}[ultra thin]
+ \tkzGetNodes
+ \tkzDrawCircle[fill=teal!20](i,C)
+ \tkzDrawCircle[fill=PineGreen!60](j,B)
+ \foreach \i in {-\nc,...,0,...,\nc} {
+ \tkzDrawCircle[fill=teal]({I\i},{S\i'})
+ }
+\end{tikzpicture}
+
+\end{verbatim}
+
+\begin{tkzelements}
+ xC,nc = 10,16
+ xB = xC/tkzphi
+ xD = (xC*xC)/xB
+ xJ = (xC+xD)/2
+ r = xD-xJ
+ z.A = point : new ( 0 , 0 )
+ z.B = point : new ( xB , 0)
+ z.C = point : new ( xC , 0)
+ L.AC = line : new (z.A,z.C)
+ z.i = L.AC.mid
+ L.AB = line:new (z.A,z.B)
+ z.j = L.AB.mid
+ z.D = point : new ( xD , 0)
+ C.AC = circle: new (z.A,z.C)
+ for i = -nc,nc do
+ z["J"..i] = point: new (xJ,2*r*i)
+ z["H"..i] = point: new (xJ,2*r*i-r)
+ z["J"..i.."p"], z["H"..i.."p"] = C.AC : inversion (z["J"..i],z["H"..i])
+ L.AJ = line : new (z.A,z["J"..i])
+ C.JH = circle: new ( z["J"..i] , z["H"..i])
+ z["S"..i], z["T"..i] = intersection (L.AJ,C.JH)
+ z["S"..i.."p"], z["T"..i.."p"] = C.AC : inversion (z["S"..i],z["T"..i])
+ L.SpTp = line:new ( z["S"..i.."p"], z["T"..i.."p"])
+ z["I"..i] = L.SpTp.mid
+ end
+\end{tkzelements}
+
+\def\nc{\tkzUseLua{nc}}
+
+\begin{tikzpicture}[ultra thin]
+ \tkzGetNodes
+ \tkzDrawCircle[fill=teal!20](i,C)
+ \tkzDrawCircle[fill=PineGreen!60](j,B)
+ \foreach \i in {-\nc,...,0,...,\nc} {
+ \tkzDrawCircle[fill=teal]({I\i},{S\i'})
+ }
+\end{tikzpicture}
+
+
+% subsubsection pappus_chain (end)
+
+\subsection{Three Circles} % (fold)
+\label{sub:three_circles}
+
+\begin{verbatim}
+\begin{tkzelements}
+function threecircles(c1,r1,c2,r2,c3,h1,h3,h2)
+ local xk = math.sqrt (r1*r2)
+ local cx = (2*r1*math.sqrt(r2))/(math.sqrt(r1)+math.sqrt(r2))
+ local cy = (r1*r2)/(math.sqrt(r1)+math.sqrt(r2))^2
+ z[c2] = point : new ( 2*xk , r2 )
+ z[h2] = point : new (2*xk,0)
+ z[c1] = point : new (0,r1)
+ z[h1] = point : new (0,0)
+ L.h1h2 = line: new(z[h1],z[h2])
+ z[c3] = point : new (cx,cy)
+ z[h3] = L.h1h2: projection (z[c3])
+end
+ threecircles("A",4,"B",3,"C","E","G","F")
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawSegment[color = red](E,F)
+\tkzDrawCircle[orange,fill=orange!20](A,E)
+\tkzDrawCircle[purple,fill=purple!20](B,F)
+\tkzDrawCircle[teal,fill=teal!20](C,G)
+\end{tikzpicture}
+\end{verbatim}
+
+\begin{tkzelements}
+function threecircles(c1,r1,c2,r2,c3,h1,h3,h2)
+ local xk = math.sqrt (r1*r2)
+ local cx = (2*r1*math.sqrt(r2))/(math.sqrt(r1)+math.sqrt(r2))
+ local cy = (r1*r2)/(math.sqrt(r1)+math.sqrt(r2))^2
+ z[c2] = point : new ( 2*xk , r2 )
+ z[h2] = point : new (2*xk,0)
+ z[c1] = point : new (0,r1)
+ z[h1] = point : new (0,0)
+ L.h1h2 = line: new(z[h1],z[h2])
+ z[c3] = point : new (cx,cy)
+ z[h3] = L.h1h2: projection (z[c3])
+end
+ threecircles("A",4,"B",3,"C","E","G","F")
+\end{tkzelements}
+
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawSegment[color = red](E,F)
+\tkzDrawCircle[orange,fill=orange!20](A,E)
+\tkzDrawCircle[purple,fill=purple!20](B,F)
+\tkzDrawCircle[teal,fill=teal!20](C,G)
+\end{tikzpicture}
+
+% subsection three_circles (end)
+
+\subsection{pentagons in a golden arbelos} % (fold)
+\label{sub:golden_arbelos}
+
+\begin{verbatim}
+\begin{tkzelements}
+z.A = point: new (0 , 0)
+z.B = point: new (10 , 0)
+L.AB = line: new ( z.A, z.B)
+z.C = L.AB : gold_ratio ()
+L.AC = line: new ( z.A, z.C)
+L.CB = line: new ( z.C, z.B)
+z.O_0 = L.AB.mid
+z.O_1 = L.AC.mid
+z.O_2 = L.CB.mid
+C.O0B = circle: new ( z.O_0, z.B)
+C.O1C = circle: new ( z.O_1, z.C)
+C.O2B = circle: new ( z.O_2, z.B)
+z.M_0 = C.O1C : external_similitude (C.O2B)
+L.O0C = line:new(z.O_0,z.C)
+T.golden = L.O0C : golden ()
+z.L = T.golden.pc
+L.O0L = line:new(z.O_0,z.L)
+z.D = intersection (L.O0L,C.O0B)
+L.DB = line:new(z.D,z.B)
+z.Z = intersection (L.DB,C.O2B)
+L.DA = line:new(z.D,z.A)
+z.I = intersection (L.DA,C.O1C)
+L.O2Z = line:new(z.O_2,z.Z)
+z.H = intersection (L.O2Z,C.O0B)
+C.BD = circle:new (z.B,z.D)
+C.DB = circle:new (z.D,z.B)
+_,z.G = intersection (C.BD,C.O0B)
+z.E = intersection (C.DB,C.O0B)
+C.GB = circle:new (z.G,z.B)
+_,z.F = intersection (C.GB,C.O0B)
+k = 1/tkzphi^2
+kk = tkzphi
+z.D_1,z.E_1,z.F_1,z.G_1 = z.B : homothety (k, z.D,z.E,z.F,z.G)
+z.D_2,z.E_2,z.F_2,z.G_2 = z.M_0 : homothety (kk,z.D_1,z.E_1,z.F_1,z.G_1)
+\end{tkzelements}
+\end{verbatim}
+
+\begin{verbatim}
+\begin{tikzpicture}[scale=.8]
+\tkzGetNodes
+\tkzDrawPolygon[red](O_2,O_0,I,D,H)
+\tkzDrawPolygon[blue](B,D_1,E_1,F_1,G_1)
+\tkzDrawPolygon[green](C,D_2,E_2,F_2,G_2)
+\tkzDrawPolygon[purple](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzFillPolygon[fill=red!20,opacity=.20](O_2,O_0,I,D,H)
+\tkzFillPolygon[fill=blue!20,opacity=.20](B,D_1,E_1,F_1,G_1)
+\tkzFillPolygon[fill=green!60,opacity=.20](C,D_2,E_2,F_2,G_2)
+\tkzFillPolygon[fill=purple!20,opacity=.20](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzDrawSegments[new](A,B)
+\tkzDrawPoints(A,B,C,O_0,O_1,O_2,Z,I,H,B,D,E,F)
+\tkzDrawPoints(D_1,E_1,F_1,G_1)
+\tkzDrawPoints(D_2,E_2,F_2,G_2)
+\tkzDrawPoints[red](F_1)
+\tkzLabelPoints(A,B,C,O_0,O_2)
+\tkzLabelPoints[below](O_1,G)
+\tkzLabelPoints[above right](D,H)
+\tkzLabelPoints[above left](E,E_1,E_2)
+\tkzLabelPoints[below left](F,F_1,F_2)
+\tkzLabelPoints(D_1,G_1)
+\tkzLabelPoints(D_2,G_2)
+\end{tikzpicture}
+\vspace{\fill}
+\end{verbatim}
+
+\begin{tkzelements}
+z.A = point: new (0 , 0)
+z.B = point: new (10 , 0)
+L.AB = line: new ( z.A, z.B)
+z.C = L.AB : gold_ratio ()
+L.AC = line: new ( z.A, z.C)
+L.CB = line: new ( z.C, z.B)
+z.O_0 = L.AB.mid
+z.O_1 = L.AC.mid
+z.O_2 = L.CB.mid
+C.O0B = circle: new ( z.O_0, z.B)
+C.O1C = circle: new ( z.O_1, z.C)
+C.O2B = circle: new ( z.O_2, z.B)
+z.M_0 = C.O1C : external_similitude (C.O2B)
+L.O0C = line:new(z.O_0,z.C)
+T.golden = L.O0C : golden ()
+z.L = T.golden.pc
+L.O0L = line:new(z.O_0,z.L)
+z.D = intersection (L.O0L,C.O0B)
+L.DB = line:new(z.D,z.B)
+z.Z = intersection (L.DB,C.O2B)
+L.DA = line:new(z.D,z.A)
+z.I = intersection (L.DA,C.O1C)
+L.O2Z = line:new(z.O_2,z.Z)
+z.H = intersection (L.O2Z,C.O0B)
+C.BD = circle:new (z.B,z.D)
+C.DB = circle:new (z.D,z.B)
+_,z.G = intersection (C.BD,C.O0B)
+z.E = intersection (C.DB,C.O0B)
+C.GB = circle:new (z.G,z.B)
+_,z.F = intersection (C.GB,C.O0B)
+k = 1/tkzphi^2
+kk = tkzphi
+z.D_1,z.E_1,z.F_1,z.G_1 = z.B : homothety (k, z.D,z.E,z.F,z.G)
+z.D_2,z.E_2,z.F_2,z.G_2 = z.M_0 : homothety (kk,z.D_1,z.E_1,z.F_1,z.G_1)
+\end{tkzelements}
+\vspace{\fill}
+\begin{tikzpicture}[scale=.8]
+\tkzGetNodes
+\tkzDrawPolygon[red](O_2,O_0,I,D,H)
+\tkzDrawPolygon[blue](B,D_1,E_1,F_1,G_1)
+\tkzDrawPolygon[green](C,D_2,E_2,F_2,G_2)
+\tkzDrawPolygon[purple](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzFillPolygon[fill=red!20,opacity=.20](O_2,O_0,I,D,H)
+\tkzFillPolygon[fill=blue!20,opacity=.20](B,D_1,E_1,F_1,G_1)
+\tkzFillPolygon[fill=green!60,opacity=.20](C,D_2,E_2,F_2,G_2)
+\tkzFillPolygon[fill=purple!20,opacity=.20](B,D,E,F,G)
+\tkzDrawCircles(O_0,B O_1,C O_2,B)
+\tkzDrawSegments[new](A,B)
+\tkzDrawPoints(A,B,C,O_0,O_1,O_2,Z,I,H,B,D,E,F)
+\tkzDrawPoints(D_1,E_1,F_1,G_1)
+\tkzDrawPoints(D_2,E_2,F_2,G_2)
+\tkzDrawPoints[red](F_1)
+\tkzLabelPoints(A,B,C,O_0,O_2)
+\tkzLabelPoints[below](O_1,G)
+\tkzLabelPoints[above right](D,H)
+\tkzLabelPoints[above left](E,E_1,E_2)
+\tkzLabelPoints[below left](F,F_1,F_2)
+\tkzLabelPoints(D_1,G_1)
+\tkzLabelPoints(D_2,G_2)
+\end{tikzpicture}
+\vspace{\fill}
+% subsection golden_arbelos (end) \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
index 53646eb6c3..c8623799ee 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-indepthstudy.tex
@@ -216,7 +216,7 @@ The class is provided with two specific metamethods.
|z1..z2 = (a+ib) .. (c+id) = (a+ib) (c-id) = ac+bd + i(bc-ad) |
- There's also a mathematical function, |dot_product|, which takes three arguments. See example \ref{ssub:dot_or_scalar_product}
+ There's also a mathematical function, |dot_product|, which takes three arguments. See example \ref{sub:dot_or_scalar_product}
\item With the same idea, the operation associated with |^| is the determinant i.e.
@@ -667,7 +667,7 @@ You obtain a point on the object by entering a real number between 0 and 1.
\end{tkzelements}
\begin{tikzpicture}
\tkzGetNodes
- \tkzDrawline(A,B)
+ \tkzDrawLine(A,B)
\tkzDrawCircle(A,B)
\tkzDrawPolygon(A,B,C)
\tkzDrawPoints(A,B,C,I,J,K)
@@ -699,4 +699,37 @@ You obtain a point on the object by entering a real number between 0 and 1.
% subsection point_method (end)
+\subsection{Behind the objects} % (fold)
+\label{sub:behind_the_objects}
+
+Before introducing objects, I only used functions whose parameters were points (comlexes).
+For example, |z.m = midpoint_ (z.a,z.b)| defines the midpoint of points $a$ and $b$. Avec les objets, il faut d'abord définir la droite/sgment |L.ab| puis on obtient le milieu avec |z.m = L.ab.mid|.
+
+I've kept the functions (which I'll call "primary") whose only arguments are points. They are distinguished from the others by a terminal underscore. In fact, all (almost) object-related functions depend on a primary function.
+
+We've just seen the case of the midpoint of a point, so let's look at two other cases:
+
+\begin{itemize}
+ \item Rotation around a point. |c| is the center of rotation, |a| the angle and |pt| the point to be affected.
+ For example: |z.Mp = rotation (z.A,math.pi/6,z.M)|
+
+\begin{mybox}
+ function rotation\_ (c,a,pt)\\
+ local z = point( math.cos(a) , math.sin(a) )\\
+ return z*(pt-c)+c\\
+ end \end{mybox}
+
+ With objects, this gives |z.Mp = z.A : rotation (math.pi/6,z.M)|
+
+
+\item The intersection of a line and a circle is obtained using |intersection_lc_ (z.A,z.B,z.O,z.T)|.
+ using the straight line $(A,B)$ and the circle $C(O,T)$.
+
+ This will result in the objects: | intersection (L.AB,C.OT)|
+\end{itemize}
+
+The difference is that programming is more direct with primary functions and a little more efficient, but loses visibility.
+
+
+% subsection behind_the_objects (end)
% section in_depth_study (end) \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
index f632238e45..245bca5e66 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
@@ -176,9 +176,10 @@ Other examples: \ref{ssub:altshiller}, \ref{sub:the_figure_pappus_circle}
\label{sub:line_ellipse}
The following example is complex, but it shows the possibilities of Lua.
The designation of intersection points is a little more complicated than the previous one, as the argument characterizing the major axis must be taken into account. The principle is the same, but this argument must be subtracted. In concrete terms, you need to consider the slopes of the lines formed by the center of the ellipse and the points of intersection, and the slope of the major axis.
+\vspace{1em}
\begin{minipage}{0.5\textwidth}
-\begin{tkzexample}[code only,small]
+\begin{verbatim}
\begin{tkzelements}
scale = .5
z.a = point: new (5 , 2)
@@ -206,7 +207,7 @@ The designation of intersection points is a little more complicated than the pre
\tkzFillAngles[green!30,opacity=.4](e,c,v)
\tkzFillAngles[green!80,opacity=.4](e,c,u)
\end{tikzpicture}
-\end{tkzexample}
+\end{verbatim}
\end{minipage}
\begin{minipage}{0.5\textwidth}
\begin{tkzelements}
@@ -241,73 +242,6 @@ The designation of intersection points is a little more complicated than the pre
\end{minipage}
Other examples: \ref{ssub:function_tkzname_ellipse__foci}, \ref{sub:hexagram}
-%\caption{Intersection line and ellipse}
-
-% \begin{tkzexample}[code only,small]
-% \begin{tkzelements}
-% scale = .5
-% z.a = point: new (5 , 2)
-% z.b = point: new (-4 , 0)
-% z.m = point: new (2 , -3)
-% z.n = point: new (4 , -3)
-% L.ab = line : new (z.a,z.b)
-% L.mn = line : new (z.m,z.n)
-% z.c = L.ab. mid
-% z.e = L.ab: point (-.2)
-% E = ellipse: foci (z.a,z.b,z.e)
-% z.u,z.v = intersection (E,L.mn)
-% -- transfer to tex
-% a = E.Rx
-% b = E.Ry
-% ang = math.deg(E.slope)
-% \end{tkzelements}
-%
-% \begin{tikzpicture}
-% \tkzGetNodes
-% \tkzDrawLines[red](a,b u,v) % p,s p,t
-% \tkzDrawPoints(a,b,c,e,u,v) %
-% \tkzLabelPoints(a,b,c,u,v)
-% \tkzDrawEllipse[teal](c,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-% \tkzFillAngles[green!30,opacity=.4](e,c,v)
-% \tkzDrawSegments(c,u c,v)
-% \tkzFillAngles[green!30,opacity=.4,size=1.2](e,c,v)
-% \tkzFillAngles[green!80,opacity=.4](e,c,u)
-% \end{tikzpicture}
-% \end{tkzexample}
-%
-% \begin{tkzelements}
-% scale=.5
-% z.a = point: new (5 , 2)
-% z.b = point: new (-4 , 0)
-% z.m = point: new (2 , -3)
-% z.n = point: new (4 , -3)
-% L.ab = line : new (z.a,z.b)
-% L.mn = line : new (z.m,z.n)
-% z.c = L.ab. mid
-% z.e = L.ab: point (-.2)
-% E = ellipse: foci (z.a,z.b,z.e)
-% z.u,z.v = intersection (E,L.mn)
-% -- transfer to tex
-% a = E.Rx
-% b = E.Ry
-% ang = math.deg(E.slope)
-% \end{tkzelements}
-%
-%
-% \hspace*{\fill}
-% \begin{tikzpicture}
-% \tkzGetNodes
-% \tkzDrawLines[red](a,b u,v) % p,s p,t
-% \tkzDrawPoints(a,b,c,e,u,v) %
-% \tkzLabelPoints(a,b,c,u,v)
-% \tkzDrawEllipse[teal](c,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-% \tkzFillAngles[green!30,opacity=.4](e,c,v)
-% \tkzDrawSegments(c,u c,v)
-% \tkzFillAngles[green!30,opacity=.4,size=1.2](e,c,v)
-% \tkzFillAngles[green!80,opacity=.4](e,c,u)
-% \end{tikzpicture}
-% \hspace*{\fill}
-%\caption{Intersection line and ellipse}
% subsection line_ellipse (end)
% section intersections (end) \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
index e36bac1aa7..c4db9a8816 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-main.tex
@@ -21,10 +21,10 @@
headings = small
]{tkz-doc}
\gdef\tkznameofpack{tkz-elements}
-\gdef\tkzversionofpack{1.60c}
+\gdef\tkzversionofpack{1.72c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{tkz-elements.pdf}
-\gdef\tkzversionofdoc{1.60c}
+\gdef\tkzversionofdoc{1.72c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
@@ -168,6 +168,7 @@ sharp corners
\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb
\begin{document}
+% \LuaCodeDebugOn
\parindent=0pt
\tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex
index b02c8cc0ba..2dbc732666 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex
@@ -148,7 +148,7 @@ C.QA = circle: new ( z.Q, z.A)
z.P_0 = intersection (C.PC,C.AB) -- search for intersections of two circles.
z.P_1 = intersection (C.PC,C.AC) -- idem
_,z.P_2 = intersection (C.QA,C.CB) -- idem
-z.O_3 = triangle: new ( z.P_0, z.P_1, z.P_2) -- circumcenter attribute of "triangle"
+z.O_3 = triangle: new ( z.P_0, z.P_1, z.P_2).circumcenter -- circumcenter attribute of "triangle"
\end{tkzelements}
\begin{tikzpicture}
@@ -176,21 +176,21 @@ Here's another example with comments
\documentclass{standalone}
\usepackage{tkz-euclide,tkz-elements}
\begin{document}
-\begin{tkzelements} we create environment tkzelements
- z.A = point: new (2 , 4) three fixed points are used
- z.B = point: new (0 , 0)
+\begin{tkzelements}
+ z.A = point: new (2 , 4) -- we create environment tkzelements
+ z.B = point: new (0 , 0) -- three fixed points are used
z.C = point: new (8 , 0)
- T.ABC = triangle: new (z.A,z.B,z.C) we create a new triangle object
- C.ins = T.ABC: in_circle () we get the incircle of this triangle
- z.I = C.ins.center center is an attribute of the circle
- z.T = C.ins.through through is also an attribute
- -- z.I,z.T = get_points (C.ins) get_points is a shortcut
- C.cir = T.ABC : circum_circle () we get the circumscribed circle
- z.W = C.cir.center we get the center of this circle
- z.O = C.cir.south now we get the south pole of this circle
- L.AO = line: new (z.A,z.O) we create an object "line"
- L.BC = T.ABC.bc we get the line (BC)
- z.I_A = intersection (L.AO,L.BC) we search the intersection of the last lines
+ T.ABC = triangle: new (z.A,z.B,z.C) -- we create a new triangle object
+ C.ins = T.ABC: in_circle () -- we get the incircle of this triangle
+ z.I = C.ins.center -- center is an attribute of the circle
+ z.T = C.ins.through -- through is also an attribute
+ -- z.I,z.T = get_points (C.ins) -- get_points is a shortcut
+ C.cir = T.ABC : circum_circle () -- we get the circumscribed circle
+ z.W = C.cir.center -- we get the center of this circle
+ z.O = C.cir.south -- now we get the south pole of this circle
+ L.AO = line: new (z.A,z.O) -- we create an object "line"
+ L.BC = T.ABC.bc -- we get the line (BC)
+ z.I_A = intersection (L.AO,L.BC) -- we search the intersection of the last lines
\end{tkzelements}
\end{verbatim}
\begin{tkzelements}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex
index dc177d09be..c255a1804d 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-transferts.tex
@@ -73,7 +73,7 @@ z.ap = z.a_1 + z.a_2
\subsubsection{Other transfers} % (fold)
\label{ssub:other_transfers}
-Sometimes it's useful to transfer angle, length measurements or boolean. For this purpose, I have created the macro (see \ref{ssub:transfer_from_lua_to_tex})
+Sometimes it's useful to transfer angle, length measurements or boolean. For this purpose, I have created the macro (see \ref{sub:transfer_from_lua_to_tex})
\IEmacro{tkzUseLua(value)}
\begin{verbatim}
diff --git a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
index 25c613e374..3dcaf903a2 100644
--- a/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
+++ b/macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
Binary files differ
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
index f3dd61e9e8..903691bcc3 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
@@ -1,5 +1,5 @@
% encoding : utf8
-% tkz-elements.sty v1.60c
+% tkz-elements.sty v1.72c
% 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
@@ -11,7 +11,7 @@
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
-\ProvidesPackage{tkz-elements}[23/12/14 v1.60c Graphic Object Library]
+\ProvidesPackage{tkz-elements}[23/12/24 v1.72c Graphic Object Library]
\RequirePackage{luacode}
\directlua{require "tkz_elements_main"}
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
index 6329495465..e81609f6ee 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_circle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-circles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
@@ -17,6 +17,9 @@
circle = {}
function circle: new (c, t) -- c --> center t --> through
local type = 'circle'
+ local ra = line :new (c,t)
+ local anti = antipode_ (c,t)
+ local di = line : new (anti, t)
local radius = point.abs ( c - t )
local south = c - point (0,radius)
local east = c + point (radius,0)
@@ -24,6 +27,8 @@ function circle: new (c, t) -- c --> center t --> through
local west = c - point (radius,0)
local o = { center = c,
through = t,
+ ra = ra,
+ di = di,
radius = radius,
south = south,
east = east,
@@ -69,6 +74,19 @@ function circle: in_out_disk (pt)
return false
end
end
+
+function circles_position (C1,C2)
+ local d,max,min
+ d = point.mod(C1.center-C2.center)
+ max = C1.radius + C2.radius
+ min = math.abs ( C1.radius - C2.radius)
+ if d > max then return "outside"
+ elseif d == max then return "outside tangent" -- epsilon
+ elseif d == min then return "inside tangent" -- epsilon
+ elseif d < min then return "inside"
+ else return "intersect"
+ end
+end
-----------------------
-- real --
-----------------------
@@ -217,16 +235,6 @@ function circle: inversion (...)
return table.unpack ( t )
end
end
-
- function circle: set_inversion (...)
- local tp = table.pack(...)
- local i
- local t = {}
- for i=1,tp.n do
- table.insert( t , inversion_ (self.center,self.through , tp[i]) )
- end
- return table.unpack ( t )
- end
function circle: draw ()
local x,y
@@ -235,6 +243,9 @@ function circle: draw ()
local frmt = '\\draw (%0.3f,%0.3f) circle [radius=%0.3f];'
tex.sprint(string.format(frmt, x,y,r))
end
-
-
+
+function circle: midcircle(C)
+ return midcircle_ (self,C)
+end
+
return circle \ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
index a79153db9e..9f8670a1b7 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_class.lua
@@ -1,6 +1,6 @@
-- tkz_elements_class.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- from class.lua (Simple Lua Classes from Lua-users wiki)
-- Compatible with Lua 5.1 (not 5.0).
-- http://lua-users.org/wiki/SimpleLuaClasses DavidManura
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
index ecee439aa4..bb8495336b 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_ellipse.lua
@@ -1,6 +1,6 @@
-- tkz_elements-ellipses.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
index 510d73e485..cde3c027ac 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_circles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_circles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
@@ -53,7 +53,7 @@ function inversion_ (c,p,pt)
end
function radical_axis_ (c1,p1,c2,p2)
- local d,m,m1,m2,epsilon,ci,cj,ck,cm,cn,r1,r2
+ local d,m,m1,m2,epsilon,ci,cj,ck,cm,cn,r1,r2,t
r1 = point.abs(c1-p1)
r2 = point.abs(c2-p2)
epsilon = 10^(-12)
@@ -66,8 +66,10 @@ function radical_axis_ (c1,p1,c2,p2)
cj = rotation_ (p1,-math.pi/2,c2)
return ci,cj
elseif m1 < epsilon then -- circles tangent
- ci = rotation_ (p1,math.pi/2,c2)
- cj = rotation_ (p1,-math.pi/2,c2)
+ -- z.A = point : new ( x , y ) contact
+ t,t = intersection_cc_ (c1,p1,c2,p2)
+ ci = rotation_ (t,math.pi/2,c2)
+ cj = rotation_ (t,-math.pi/2,c2)
return ci,cj
-- circles disjoints
elseif m > 0 then
@@ -75,7 +77,7 @@ function radical_axis_ (c1,p1,c2,p2)
ci,cj = intersection_cc_ (c1,p1,ck,c1)
cm,cn = intersection_cc_ (c2,p2,ck,c1)
ci = intersection_ll_ (ci,cj,cm,cn)
- cj = projection_ (c1,c2,ci)
+ cj = symmetry_axial_ (c1,c2,ci) -- projection_ (c1,c2,ci)
return ci,cj
else
ci,cj = intersection_cc_ (c1,p1,c2,p2)
@@ -112,5 +114,44 @@ function circlepoint_ (c,t,k)
return rotation_ (c,phi,t)
end
-
+-- version 1.60 new
+function midcircle_(C1,C2)
+ local state,r,s,t1,t2,T1,T2,p,a,b,c,d,Cx,Cy,i,j
+ state = circles_position(C1,C2)
+ i = barycenter_ ({C2.center,C1.radius},{C1.center,-C2.radius})
+ j = barycenter_ ({C2.center,C1.radius},{C1.center,C2.radius})
+ t1,t2 = tangent_from_ (C1.center,C1.through,i)
+ T1,T2 = tangent_from_ (C2.center,C2.through,i)
+
+ if (state == 'outside') or (state == 'outside tangent')then
+ p = math.sqrt(point.mod(i-t1)*point.mod(i-T1))
+ return circle : radius (i,p)
+ elseif state == 'intersect' then
+ r,s = intersection (C1,C2)
+ return circle : radius (i,point.mod(r-i)) , circle : radius (j,point.mod(r-j))
+ elseif (state == 'inside') or (state == 'inside tangent') then
+ a,b = intersection_lc_ (C1.center,C2.center,C1.center,C1.through)
+ c,d = intersection_lc_ (C1.center,C2.center,C2.center,C2.through)
+
+ if C1.radius < C2.radius then
+ z.u, z.v, z.r, z.s = a, b, c, d
+ else
+ z.u, z.v, z.r, z.s = c, d, a, b
+ end
+
+ if (in_segment_ (z.s,z.v,z.u) == true)
+ then
+ Cx = circle : diameter (z.r,z.v)
+ Cy = circle : diameter (z.u,z.s)
+ else
+ Cx = circle : diameter (z.s,z.v)
+ Cy = circle : diameter (z.u,z.r)
+ end
+ if (Cx.radius) < (Cy.radius) then
+ return Cy : orthogonal_from (j)
+ else
+ return Cx : orthogonal_from (j)
+ end
+ end
+end
\ No newline at end of file
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
index a25e2ce78c..a3d5bd3a9d 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_intersections.lua
@@ -1,6 +1,6 @@
-- tkz_elements_intersections.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
index 5d1dcd99ce..4b27ec821f 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_lines.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_lines.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
index ca948b4334..a3c2de28aa 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_maths.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
index 23ee73f0c4..309b7c762c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_points.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_points.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
index 70322a3d3f..423e13a937 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_regular.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
index ab78d29cf2..3d92bdb819 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_functions_triangles.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_triangles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
index 2ea0c1fa84..1143659bfb 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_line.lua
@@ -1,6 +1,6 @@
-- tkz_elements_lines.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
@@ -268,7 +268,7 @@ end
function line: mediator ()
local m
m = midpoint_ (self.pa,self.pb)
- return line : new (m,rotation_ (m,math.pi/2,self.pb))
+ return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
end
-------------------
-- Result -> circle
@@ -281,6 +281,19 @@ function line: circle_swap ()
return circle : new (self.pb,self.pa)
end
+function line : diameter ()
+ local c = midpoint_ (self.pa,self.pb)
+ return circle : new (c,self.pb)
+end
+
+function line : apollonius (k)
+ local z1,z2,c
+ z1 = barycenter_ ({self.pa,1},{self.pb,k})
+ z2 = barycenter_ ({self.pa,1},{self.pb,-k})
+ c = midpoint_ (z1,z2)
+ return circle : new (c,z2)
+end
+
----------------------
-- Result -> triangle
----------------------
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
index 7228a3396d..44842d2d9c 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_main.lua
@@ -1,6 +1,6 @@
-- tkz_elements-main.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
index 834317aae4..ed4dd949a1 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_misc.lua
@@ -1,6 +1,6 @@
-- tkz_elements_functions_maths.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
@@ -55,56 +55,4 @@ function radical_circle (C1,C2,C3)
return C1 : orthogonal_from (rc)
end
end
--- version 1.60 new
-function circles_position(C1,C2)
- local d,max,min
- d = point.mod(C1.center-C2.center)
- max = C1.radius + C2.radius
- min = math.abs ( C1.radius - C2.radius)
- if d > max then return "outside"
- elseif d == max then return "outside tangent" -- epsilon
- elseif d == min then return "inside tangent" -- epsilon
- elseif d < min then return "inside"
- else return "intersect"
- end
-end
--- version 1.60 new
-function midcircle_(C1,C2)
- local state,r,s,t1,t2,T1,T2,p,a,b,c,d,Cx,Cy,i,j
- state = circles_position(C1,C2)
- i = barycenter_ ({C2.center,C1.radius},{C1.center,-C2.radius})
- j = barycenter_ ({C2.center,C1.radius},{C1.center,C2.radius})
- t1,t2 = tangent_from_ (C1.center,C1.through,i)
- T1,T2 = tangent_from_ (C2.center,C2.through,i)
-
- if (state == 'outside') or (state == 'outside tangent')then
- p = math.sqrt(point.mod(i-t1)*point.mod(i-T1))
- return circle : radius (i,p)
- elseif state == 'intersect' then
- r,s = intersection (C1,C2)
- return circle : radius (i,point.mod(r-i)) , circle : radius (j,point.mod(r-j))
- elseif (state == 'inside') or (state == 'inside tangent') then
- a,b = intersection_lc_ (C1.center,C2.center,C1.center,C1.through)
- c,d = intersection_lc_ (C1.center,C2.center,C2.center,C2.through)
-
- if C1.radius < C2.radius then
- z.u, z.v, z.r, z.s = a, b, c, d
- else
- z.u, z.v, z.r, z.s = c, d, a, b
- end
-
- if (in_segment_ (z.s,z.v,z.u) == true)
- then
- Cx = circle : diameter (z.r,z.v)
- Cy = circle : diameter (z.u,z.s)
- else
- Cx = circle : diameter (z.s,z.v)
- Cy = circle : diameter (z.u,z.r)
- end
- if (Cx.radius) < (Cy.radius) then
- return Cy : orthogonal_from (j)
- else
- return Cx : orthogonal_from (j)
- end
- end
-end \ No newline at end of file
+
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
index 4b5124ecc0..6ed56cc828 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_parallelogram.lua
@@ -1,6 +1,6 @@
-- tkz_elements_parallelogram.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
index 53e662541a..4997b857d8 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
@@ -1,6 +1,6 @@
-- tkz_elements_point.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
index ff144a5e5b..57d8af3aae 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_quadrilateral.lua
@@ -1,6 +1,6 @@
-- tkz_elements_quadrilateral.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
index 21d227a940..600d31665b 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_rectangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements-rectangle.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
index d458fbe97e..c0749917f5 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_regular.lua
@@ -1,6 +1,6 @@
-- tkz_elements_regular.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
index f8cc6b14df..4c3ce73800 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_square.lua
@@ -1,6 +1,6 @@
-- tkz_elements-square.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
index fb70474d22..4a0c892f60 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_triangle.lua
@@ -1,6 +1,6 @@
-- tkz_elements_triangles.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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
diff --git a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
index 17aad462ed..17d5684304 100644
--- a/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
+++ b/macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_vector.lua
@@ -1,6 +1,6 @@
-- tkz_elements_vectors.lua
--- date 23/12/14
--- version 1.60c
+-- date 23/12/24
+-- version 1.72c
-- 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