Wie zeichnet man die Umkehrung eines Kreises in TikZ?

Wie zeichnet man die Umkehrung eines Kreises in TikZ?

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. Umkehrung eines Kreises

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 Pund P'vertauscht, da Psich 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.

Ein Kreis mit einer Inversion

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_pointwird 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 akzeptiert k.

  • Der Einfachheit halber habe ich hier wieder zwei unterschiedliche Funktionen für a pathund für a bereitgestellt point, Sie können jedoch problemlos eine einzelne invertFunktion schreiben und if path Pund verwenden if pair P, um je nach dem, was Sie übergeben haben, die richtige Aktion auszuwählen.

  • Der Ausdruck unitvector p scaled (k/abs(p)) scaled kkönnte natürlicher geschrieben werden als, unitvector p scaled (k**2/abs(p))aber Sie erhalten einen arithmetischen Überlauffehler, wenn Sie keinen Wert über 181 festlegen. Dies liegt daran, dass 182**2größer ist als 2**15die größte Zahl, die einfaches MP zulässt. Um dies zu vermeiden, codieren Sie es entweder wie gezeigt oder verwenden Sie mpost -numbersytem=doublezur 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:

  1. der Punkt liegt innerhalb des Inversionskreises;
  2. 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}

Bildbeschreibung hier eingeben

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.

verwandte Informationen