summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex')
-rw-r--r--macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex560
1 files changed, 525 insertions, 35 deletions
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