summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz/tkz-elements/doc
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/tkz-elements/doc
parent4730d615ef9f92ac5b55492b0eadad6023d991e0 (diff)
CTAN sync 202312250300
Diffstat (limited to 'macros/latex/contrib/tkz/tkz-elements/doc')
-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
12 files changed, 720 insertions, 181 deletions
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