Dibujé un círculo paracadena de papussobre un arbelos. ¿Cómo dibujar otros círculos?
\documentclass[10pt]{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[x11names]{xcolor}
\usepackage{fouriernc}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\centering
\begin{tikzpicture}[scale=1.5,line join=round,font=\small]
\coordinate[label=below:$A$] (A) at (0,0);
\coordinate[label=below:$B$] (B) at (4,0);
\coordinate[label=below:$C$] (C) at (6,0);
\draw[thick,lightgray](0,0)--(6,0);
\draw[Burlywood4,thick]
(6,0) arc [radius=3, start angle=0, delta angle=180] --
(0,0) arc [radius=2, start angle=180, delta angle=-180]--(4,0) arc [radius=1, start angle=-180, delta angle=-180]--cycle;
\path[name path=b1]
(6,0) arc [radius=3, start angle=0, delta angle=180];
\path[name path=b2] (0,0) arc [radius=2, start angle=180, delta angle=-180];
\path[name path=b3] (4,0) arc [radius=1, start angle=-180, delta angle=-180];
\draw[olive!50,name path=b4] (4,0) arc (225:60:{sqrt(2)});
\draw[violet!50,name path=b5] (4,4) arc (45:-40:{2*sqrt(2)});
\path [name intersections={of = b4 and b5, by={D}}];
\path [name intersections={of = b2 and b4, by={T,E}}];
\path [name intersections={of = b3 and b5, by={F}}];
\coordinate (K) at ($(E)!.5!(F)$);
\coordinate (L) at ($(D)!.5!(F)$);
\coordinate (M) at ($(K)!1cm!90:(F)$);
\coordinate (N) at ($(L)!1cm!90:(D)$);
\path[name path=g1] (K)--(M);
\path[name path=g2] (L)--(N);
\path [name intersections={of = g1 and g2, by={O}}];
\draw[thick,Red4]
let
\p1=( $(E)-(O) $ )
in
(O) circle ({veclen(\x1,\y1)});
\foreach \p in {D,E,F,O}
\draw[fill,DodgerBlue4] (\p) circle(1pt);
%\foreach \p in {D,E,F}
%\node[above] at (\p) {$\p$};
\end{tikzpicture}
\end{document}
Respuesta1
Con las coordenadas proporcionadas en los enlaces:
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\RadiiBig{4}
\newcommand\RadiiSmall{3}
\begin{document}
\begin{tikzpicture}
\coordinate[label=below:A](A) at (0,0);
\coordinate[label=below:B](B) at (\RadiiBig*2,0);
\coordinate[label=below:C](C) at (\RadiiSmall*2,0);
\pgfmathsetmacro{\r}{\RadiiSmall/\RadiiBig}
\draw[gray!50]($(A)+(-1,0)$)--($(B)+(1,0)$);
\draw(\RadiiBig,0) circle (\RadiiBig);
\draw(\RadiiSmall,0) circle (\RadiiSmall);
%
\draw ($(C)+(\RadiiBig-\RadiiSmall,0)$) circle (\RadiiBig-\RadiiSmall);
\foreach \n in {1,...,15}{%
\pgfmathsetmacro{\denom}{\n*\n*(1-\r)*(1-\r)+\r}
\pgfmathsetmacro{\x}{2*\RadiiBig*\r*(1+\r)/(2*\denom)}
\pgfmathsetmacro{\y}{2*\RadiiBig*\n*\r*(1-\r)/\denom}
\pgfmathsetmacro{\Radn}{2*\RadiiBig*\r*(1-\r)/(2*\denom)}
\draw(\x,\y) circle (\Radn);
\draw(\x,-\y) circle (\Radn);
}
\end{tikzpicture}
\end{document}
EDITAR
Siguiendo la idea de Thruston con la inversión de círculos aplicada a Tikz. Con el uso de la definición de que un punto P se invierte en P' mediante AP*AP'=r^2 donde r es el círculo reflejado, obtengo lo siguiente. Sólo hice una función para la inversión de un punto, por lo que el centro de la imagen especular de un círculo debe derivarse de eso.
\begin{tikzpicture}[
declare function={CircInv(\APp,\r)=\r*\r/\APp;}
]
\coordinate[label=below:A](A) at (0,0);
\coordinate[label=below:B](B) at (\RadiiBig*2,0);
\coordinate[label=below:C](C) at (\RadiiSmall*2,0);
\pgfmathsetmacro{\Rp}{\RadiiBig-\RadiiSmall}%% R'
\pgfmathsetmacro{\r}{2*\RadiiBig}%% r: mirror circle
\pgfmathsetmacro{\R}{(CircInv(2*\RadiiSmall,\r)-\r)/2}%% R: Mirror image of first circle
\coordinate[label=below:$P'$](Pp) at ($(C)+(\Rp,0)$);%% Center first circle
\coordinate[label=below:$P$](P) at ($(B)+(\R,0)$);%% Center of mirror circle of first circle
%%
\draw[gray!50]($(A)+(-1,0)$)--($(B)+(3,0)$);
\draw(\RadiiBig,0) circle (\RadiiBig);
\draw(\RadiiSmall,0) circle (\RadiiSmall);
\draw[red](A) (-20:\r) arc (-20:50:\r);\draw[red](A) -- +(-15:\r) node[pos=0.5,anchor=south]{$r$};
\draw[blue](Pp) circle (\Rp);\draw[blue] (Pp) -- +(45:\Rp) node[pos=0.5,anchor=south east]{$R'$};
\draw[gray](P) circle (\R);\draw[gray] (P) -- +(45:\R) node[pos=0.5,anchor=south east]{$R$};
%%
\foreach \n in {1,2}{%% First loop showing the column circles
\pgfmathsetmacro{\alpha}{atan(2*\n*\R/(\r+\R))}
\pgfmathsetmacro{\X}{2*\n*\R/sin(\alpha)}%% Length from (A) to center of circle
\pgfmathsetmacro{\Rpn}{(CircInv(\X-\R,\r)-CircInv(\X+\R,\r))/2}%% Size of mirror circle
\pgfmathsetmacro{\Y}{CircInv(\X+\R,\r)+\Rpn}%% Length (A to center mirror circle
\draw[gray](A) -- (\alpha: \X);
\draw[gray](P |- {(0,2*\n*\R)}) circle (\R);
\draw[blue](A) -- (\alpha: \Y) circle (\Rpn);
}
\foreach \n in {3,4,...,30}{%% Same as previous loop but without gray stuff
\pgfmathsetmacro{\alpha}{atan(2*\n*\R/(\r+\R))}
\pgfmathsetmacro{\X}{2*\n*\R/sin(\alpha)}
\pgfmathsetmacro{\Rpn}{(CircInv(\X-\R,\r)-CircInv(\X+\R,\r))/2}
\pgfmathsetmacro{\Y}{CircInv(\X+\R,\r)+\Rpn}
\draw[blue](A) (\alpha: \Y) circle (\Rpn);
}
\end{tikzpicture}
Respuesta2
Puedes dibujar esto coninversión de círculotambién.
No estoy seguro de cómo hacer la inversión con TikZ pero aquí hay unaMetapostversión, envuelta en luamplib
. Compilar con lualatex
.
\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
% invert path or pair P in circle C
vardef invert(expr P, C) =
save I, r; pair I; numeric r;
I = center C;
r = abs(point 0 of C shifted -I);
if pair P: if abs(P-I) > 0: unitvector(P-I) scaled (r/abs(P-I)*r) shifted fi I
elseif path P:
save T; numeric T;
T = length P;
for t=0 upto T-1: invert(point t of P, C) .. endfor if cycle P: cycle else: invert(point T of P, C) fi
fi
enddef;
beginfig(1);
pair A,B,C;
numeric r;
A = origin;
C = (10cm,0);
r = 3/4;
B = r[A,C];
path c[];
c1 = fullcircle scaled 2 abs(A-C); % large circle for the inversions
c2 = fullcircle scaled abs(A-C) shifted 1/2[A,C];
c3 = fullcircle scaled abs(A-B) shifted 1/2[A,B];
c4 = fullcircle scaled abs(B-C) shifted 1/2[B,C];
c5 = invert(c4,c1);
numeric d; d = abs(point 0 of c5-point 4 of c5);
for i=1 upto 42:
draw invert(c5 shifted (0,i*d), c1);
endfor
draw subpath(0,4) of c2 withcolor 2/3 blue;
draw subpath(0,4) of c3 withcolor 2/3 blue;
draw subpath(0,4) of c4 withcolor 2/3 blue;
draw A--C;
dotlabel.bot("$A$", A);
dotlabel.bot("$B$", B);
dotlabel.bot("$C$", C);
endfig;
\end{mplibcode}
\end{document}
El método es un poco más fácil de entender si dibujo algunas partes más de la construcción: los círculos grises están c5
en mi código; el arco rosa es parte de c1
, que es el círculo en el que c5
se invierten las s de la columna.
Respuesta3
Aquí una solución simple contkz-euclide v5
la última versión detkz-euclide: versección 47.25del manual.
\documentclass[tikz,border=3mm]{standalone}
\usepackage[svgnames]{xcolor}
\usepackage{tkz-euclide}% v5
\pgfmathsetmacro{\xB}{6}
\pgfmathsetmacro{\xC}{9}
\pgfmathsetmacro{\xD}{(\xC*\xC)/\xB}
\pgfmathsetmacro{\xJ}{(\xC+\xD)/2}
\pgfmathsetmacro{\r}{\xD-\xJ}
\pgfmathsetmacro{\nc}{16}
\begin{document}
\begin{tikzpicture}
\tkzDefPoints{0/0/A,\xB/0/B,\xC/0/C,\xD/0/D}
\tkzDefCircle[diameter](A,C)\tkzGetPoint{x}
\tkzDrawCircle[fill=teal!30](x,C)
\tkzDefCircle[diameter](A,B)\tkzGetPoint{y}
\tkzDrawCircle[fill=teal!30](y,B)
\foreach \i in {-\nc,...,0,...,\nc}
{\tkzDefPoint(\xJ,2*\r*\i){J}
\tkzDefPoint(\xJ,2*\r*\i-\r){H}
\tkzDefCircleBy[inversion = center A through C](J,H)
\tkzDrawCircle[fill=teal](tkzFirstPointResult,tkzSecondPointResult)}
\end{tikzpicture}
\end{document}