
Die Umkehrung eines Punktes P und Mittelpunkts O ergibt einen weiteren Punkt P' entlang der Linie OP, sodass das Produkt OP. OP' = k, also eine Konstante k. Die Umkehrung eines Kreises durch einen Punkt O (nicht im Kreis) ergibt einen weiteren Kreis, wie in der Abbildung unten.
Ist es möglich, den zweiten Kreis in TikZ als (korrekte) Umkehrung des ersten zu zeichnen? Ich weiß, dass es einfach ist, Verschiebungen, Drehungen und andere lineare Transformationen durchzuführen … aber ich habe noch nie eine Umkehrung gesehen.
Antwort1
Während Sie auf eine TikZ-Lösung warten, finden Sie hier eine einfache Möglichkeit, Ihr Diagramm inMetapostDie grundlegende Geometrie wird gut erklärtauf Mathworld, (obwohl das Diagramm dort die Umkehrung eines Punktes zeigtdraußender Inversionskreis; in diesem Fall sind die Rollen von P
und P'
vertauscht, da P
sich innerhalb des Inversionskreises befindet).
Hier habe ich den Umriss eines Teils des Inversionskreises in blassem Rosa hinzugefügt, um die Funktionsweise etwas deutlicher zu machen. Sie können den rosa Bogen natürlich auch entfernen, wenn er nicht benötigt wird.
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
Anmerkungen
Der Einfachheit halber
invert_point
wird angenommen, dass der Mittelpunkt des Umkehrkreises der Ursprung ist. Es wäre jedoch nicht schwer, das Unterprogramm so anzupassen, dass es anstelle des Radius einen beliebigen Kreis akzeptiertk
.Der Einfachheit halber habe ich hier wieder zwei unterschiedliche Funktionen für a
path
und für a bereitgestelltpoint
, Sie können jedoch problemlos eine einzelneinvert
Funktion schreiben undif path P
und verwendenif pair P
, um je nach dem, was Sie übergeben haben, die richtige Aktion auszuwählen.Der Ausdruck
unitvector p scaled (k/abs(p)) scaled k
könnte natürlicher geschrieben werden als,unitvector p scaled (k**2/abs(p))
aber Sie erhalten einen arithmetischen Überlauffehler, wenn Siek
einen Wert über 181 festlegen. Dies liegt daran, dass182**2
größer ist als2**15
die größte Zahl, die einfaches MP zulässt. Um dies zu vermeiden, codieren Sie es entweder wie gezeigt oder verwenden Siempost -numbersytem=double
zur Verarbeitung.Verwenden Sie dies nicht, um einen Punkt am Ursprung umzukehren, da Sie Unendlichkeit in einem endlichen Diagramm nicht einfach darstellen können.
Antwort2
Ich habe es in Tikz folgendermaßen ausgearbeitet.
Erstens gibt es zwei verschiedene Inversionen:
- der Punkt liegt innerhalb des Inversionskreises;
- der Punkt liegt außerhalb davon.
Ich werde mit dem zweiten Fall beginnen. Ich werde einen Kreis zeichnen, dessen Mittelpunkt der Punkt „O“ (genannt „k“) ist, und den Umkehrpunkt des Punkts „P“ außerhalb des Kreises „k“ suchen.
Als erstes müssen Sie einen der Tangentialpunkte von „P“ zu „k“ kennen. Die Projektion dieses Punktes auf die Linie „OP“ ist der Umkehrpunkt von „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}
Wenn der Punkt innerhalb des Kreises liegt, müssen wir nur die Senkrechte von OP finden, den Schnittpunkt dieser Linie mit dem Kreis k ermitteln (nennen wir ihn TgP), die Tangente von diesem Punkt zeichnen und ihren Schnittpunkt mit OP ermitteln.