
La inversión de un punto P con centro O es otro punto P' a lo largo de la recta OP tal que se obtiene el producto OP. OP' = k, es decir, una constante k. La inversión de un círculo, por un punto O (que no está en el círculo) es otro círculo, como en la figura siguiente.
¿Es posible dibujar el segundo círculo en TikZ como una inversión (correcta) del primero? Sé que es fácil hacer traslaciones, rotaciones y otras transformaciones lineales... pero nunca he visto una inversión.
Respuesta1
Mientras espera una solución TikZ, aquí tiene una forma sencilla de hacer su diagrama enMetapost. La geometría básica está bien explicada.en Mathworld, (aunque el diagrama muestra la inversión de un puntoafuerael círculo de inversión; en este caso los roles de P
y P'
están invertidos porque P
está dentro del círculo de inversión).
Aquí he agregado el contorno de parte del círculo de inversión en rosa tenue para que sea un poco más obvio cómo funciona; por supuesto, puedes eliminar el arco rosa si no es necesario.
prologues := 3;
outputtemplate := "%j%c.eps";
vardef invert_point(expr p, k) =
if abs(p)>0:
unitvector p scaled (k/abs(p)) scaled k
else:
origin % strictly this should be a point at infinity
fi
enddef;
vardef invert_path(expr P, k) =
for t=0 step 1/16 until length P-1/16:
invert_point(point t of P, k) --
endfor
if cycle P:
cycle
else:
invert_point(point infinity of P, k)
fi
enddef;
beginfig(1);
path C, C';
pair P, P', Q;
k = 150;
draw subpath (-1.4,1.4) of fullcircle scaled 2k withcolor .8[red,white];
C = fullcircle scaled 72 shifted 100 right;
P = point 1 of C;
C' = invert_path(C, k);
P' = invert_point(P, k);
Q = (origin -- P) intersectionpoint subpath (2,4) of C;
draw origin -- P';
draw origin -- center C' withcolor .5 white;
draw P' -- center C' withcolor .5 white;
draw Q -- center C withcolor .5 white;
draw C;
draw C' withcolor .78 blue;
fill fullcircle scaled 3;
fill fullcircle scaled 3 shifted P;
fill fullcircle scaled 3 shifted Q;
fill fullcircle scaled 3 shifted P';
fill fullcircle scaled 3 shifted center C;
fill fullcircle scaled 3 shifted center C';
label(btex $O$ etex, origin + (-6,3));
label(btex $P$ etex, P + (+3,7));
label(btex $P'$ etex, P' + (-3,7));
label(btex $Q$ etex, Q + (-3,7));
label(btex $C$ etex, point 5.5 of C + (-3,-7));
endfig;
end
Notas
Por simplicidad
invert_point
se supone que el círculo de inversión está centrado en el origen. Pero no sería difícil adaptar la subrutina para aceptar un círculo arbitrario en lugar del radiok
.Nuevamente, para simplificar, he proporcionado dos funciones diferentes aquí para a
path
y para apoint
, pero puedes escribir fácilmente una solainvert
función y usarif path P
yif pair P
elegir la acción correcta de acuerdo con lo que le pasaste.La expresión
unitvector p scaled (k/abs(p)) scaled k
podría escribirse de forma más natural,unitvector p scaled (k**2/abs(p))
pero obtendrá un error de desbordamiento aritmético si la establecek
en más de 181. Esto se debe a que182**2
es mayor que2**15
el número más grande que permite MP. Para evitar esto, codifíquelo como lo he mostrado o utilícelompost -numbersytem=double
para procesarlo.No uses esto para invertir un punto en el origen; ya que no se puede representar fácilmente el infinito en un diagrama finito.
Respuesta2
Lo he resuelto en Tikz de la siguiente manera.
Primero, hay dos inversiones diferentes:
- el punto está dentro del círculo de inversión;
- el punto está fuera de él.
Voy a empezar con el segundo caso. Dibujaré un círculo centrado en el punto "O" (llamado "k") y buscaré el punto de inversión del punto "P" fuera del círculo "k".
Lo primero que debes saber es uno de los puntos tangentes de "P" a "k". La proyección de este punto a la recta "OP" es el punto de inversión de "P".
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\coordinate (O) at (0,0);
\coordinate (P) at (5,0);
\draw[red,thick,name path=circ1](O)circle(2);
%
% I look for the midpoint of O and P. This point will be the centre of
% an arc whose intersection with k will give me the tangent points
%
\path(O)--coordinate[midway](M)(P);
%
% I draw the arc whose intersection with circle are the 2 tangent points
%
\path[name path=circ2] let
\p1=(O),
\p2=(M),
\n1={veclen(\x2-\x1,\y2-\y1)} in
($(M)+({\n1*cos(130)},{\n1*sin(130)})$) arc (130:230:\n1);
\path[name intersections={of=circ1 and circ2}]
(intersection-1) coordinate (Tg1)
(intersection-2) coordinate (Tg2);
\draw[blue]
(A)--(Tg1)
(O)--node[midway,left,black]{$\mathtt{r}$}(B)
(O)--(A);
%
% Here we are. This projection is the inversion of point P with regards
% to circle k
%
\draw[orange](Tg1)--($(O)!(Tg1)!(P)$)coordinate(InvP);
%
\draw[black,line width=.75,fill=white]
(P)circle(1.5pt)node[black,below]{$\mathtt{P}$};
\draw[black,line width=.75,fill=white]
(O)circle(1.5pt)node[black,below]{$\mathtt{O}$};
\draw[black,line width=.75,fill=white]
(Tg1)circle(1.5pt)node[black,below]{$\mathtt{Tg1}$};
\draw[black,line width=.75,fill=white]
(InvP)circle(1.5pt)node[black,below]{$\mathtt{P'}$};
\node at (-1.75,0) {$\symtt{k}$};
\end{tikzpicture}
\end{document}
Cuando el punto está dentro del círculo, todo lo que tenemos que hacer es encontrar la recta perpendicular desde OP, encontrar la intersección de esta recta con el círculo k (llámelo TgP), trazar la recta tangente desde este punto y encontrar su intersección con OP.