画一个半径固定但未知的圆

画一个半径固定但未知的圆

我想画一个以一个点为中心O,经过第二个点的圆A。如果我们有一个明确的距离公式,这很容易。在许多情况下,这两个点是作为其他一些对象的交点给出的,因此它们之间的距离是隐式给出的(或非常复杂)。我们还能使用 tikz 使用两个点和|OA|的位置来画圆吗? OA

答案1

有很多选择,其中我列出两个。

  1. 有一个专门用于此的库:through。它将生成具有指定中心且边界穿过该点的圆形节点。
  2. calc可以计算距离并将其用作半径。如果您只需要路径而不是节点,这可能会很有用。

\documentclass[tikz,border=3.14mm]{standalone} 
\usetikzlibrary{through,intersections,calc} 
\begin{document} 
\begin{tikzpicture}[font=\sffamily,circle defined by/.style args={center #1 and
point #2}{insert path={let \p1=($(#2)-(#1)$),\n1={veclen(\x1,\y1)} in
(#1) circle[radius=\n1]}}]
\begin{scope}[local bounding box=through]
 \draw[name path=upper] (0,0) coordinate(L1) to [bend right] (2,0) coordinate(R1);
 \draw[name path=lower] (0,-0.5) coordinate(L2) to [bend left] (2,-0.5) coordinate(R2);
 \draw[name intersections={of=upper and lower,name=i}]
 node[draw,circle through={(i-2)}] at (i-1){};
\end{scope} 
\node[above] at (through.north){option 1: through};
\begin{scope}[local bounding box=calc,xshift=3cm]
 \draw[name path=upper] (0,0) coordinate(L1) to [bend right] (2,0) coordinate(R1);
 \draw[name path=lower] (0,-0.5) coordinate(L2) to [bend left] (2,-0.5) coordinate(R2);
 \draw[name intersections={of=upper and lower,name=j},
 circle defined by=center j-1 and point j-2];
\end{scope} 
\node[above] at (calc.north){option 2: calc};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容