Pappus
Example 1 Pappus chain with tkz-elements
In geometry, the Pappus chain is a ring of circles between two tangent circles investigated by Pappus of Alexandria in the 3rd century AD. Wikipedia
View TeX code
% !TEX TS-program = lualatex
% Created by Alain Matthes on 2025-06-15.
% Copyright (c) 2025 __ AlterMundus __.
\def\nc
\def\xC
\directlua
View Lua code
init_elements() local xC, nc = ... local xB = xC / tkz.phi local xD = (xC * xC) / xB local xJ = (xC + xD) / 2 local r = xD - xJ z.A = point(0, 0) z.B = point(xB, 0) z.C = point(xC, 0) L.AC = line(z.A, z.C) z.i = L.AC.mid L.AB = line(z.A, z.B) z.j = L.AB.mid z.D = point(xD, 0) C.AC = circle(z.A, z.C) for i = -nc, nc do z["J" .. i] = point(xJ, 2 * r * i) z["H" .. i] = point(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(z.A, z["J" .. i]) C.JH = circle(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(z["S" .. i .. "p"], z["T" .. i .. "p"]) z["I" .. i] = L.SpTp.mid end
Example 2 Pappus explanations with tkz-elements
Let $D$ belong to the line $(AC)$ such that DB \cdot DA = AC^2$ then $B$ is the image of $D$ in the inversion of center $A$ and power $AC^2$. The semicircles of diameter $[AB]$ and $[AC]$ pass through the pole $A$. Their images are $\mathcal{L'}$ and $\mathcal{L}$. Circles of center $J_i$ and diameter $S_iT_i$ have as images circles of diameter $S'_iT'_i$.
View TeX code
% !TEX TS-program = lualatex
% Created by Alain Matthes on 2022-01-18.
% Copyright (c) 2022 __ AlterMundus __.
\def\nc
\def\xC
\directlua
View Lua code
init_elements() local xC, nc = ... local xB = xC / tkz.phi local xD = (xC * xC) / xB local xJ = (xC + xD) / 2 local r = xD - xJ z.A = point(0, 0) z.B = point(xB, 0) z.C = point(xC, 0) L.AC = line(z.A, z.C) -- z.B = L.AC:gold_ratio() z.D = point(xD, 0) z.c = z.C:rotation(-math.pi / 2, z.B) z.a = z.A:rotation(math.pi / 2, z.C) z.d = z.D:rotation(-math.pi / 2, z.C) L.AC = line(z.A, z.C) z.mAC = L.AC.mid L.AB = line(z.A, z.B) z.mAB = L.AB.mid L.BC = line(z.B, z.C) z.mBC = L.BC.mid L.CD = line(z.C, z.D) z.mCD = L.CD.mid C.AC = circle(z.A, z.C) for i = 1, nc do z["J" .. i] = point(xJ, 2 * r * i) z["H" .. i] = point(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(z.A, z["J" .. i]) C.JH = circle(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(z["S" .. i .. "p"], z["T" .. i .. "p"]) z["I" .. i] = L.SpTp.mid end