tikz 两个圆之间的切线圆弧

tikz 两个圆之间的切线圆弧

我制作了下面一个糟糕的 MSPaint 插图,试图传达我想要实现的目标。我有两个半径为 0.4 的圆,分别位于 (0,0) 和 (1,0)。我正在使用 TikZ。

我试图绘制一条平滑且对称的弧线(手工用红色近似),但要受到以下限制:

  1. 端点与每个圆相切,位于圆的外边缘。每个圆上的端点都由相同的 45 度极角定义(尽管方向相反)。
  2. 中点位于 (0.5, 0.2),切线平直。

按照上述方法定义圆弧可能确实需要额外的约束;如果还可以包括一对对称的控制点,那么我可能会玩凹度,这也是理想的。

最后,我还想在两个圆圈的底面上放置相同的曲线,并用颜色填充中间的区域。

在此处输入图片描述

答案1

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}[scale=2]
\pgfmathsetmacro{\rbez}{0.08}
\filldraw[fill=yellow] (45:0.4)
        arc[start angle=45,end angle=-45,radius=0.4]
        .. controls +(45:\rbez) and +(180:\rbez) .. (0.5,-0.2)
        .. controls +(0:\rbez) and +(135:\rbez) .. ($(1,0)+(225:0.4)$)
        arc[start angle=225,end angle=135,radius=0.4]
        .. controls +(225:\rbez) and +(0:\rbez) .. (0.5,0.2)
        .. controls +(180:\rbez) and +(-45:\rbez) .. cycle;
\draw (45:0.4) arc[start angle=45,end angle=315,radius=0.4];
\draw ($(1,0)+(-135:0.4)$) arc[start angle=-135,end angle=135,radius=0.4];
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

使用inout语法,您可以明确设置角度。

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
 \draw (0,0) circle[radius=0.4] (1,0) circle[radius=0.4];
 \draw[fill=blue] (-45:0.4)  arc[start angle=-45,end angle=45,radius=0.4] 
  to[out=-45,in=180] (0.5,0.2)
   to[out=0,in=-135] ([xshift=1cm]135:0.4) 
   arc[start angle=135,end angle=225,radius=0.4] to[out=135,in=0]
   (0.5,-0.2) to[out=180,in=45] cycle;
\end{tikzpicture}
\end{document}

在此处输入图片描述

这个结果并不唯一。即使你要求对称,也有两个参数可以改变,in loosenessout looseness。整体松散度大致对应\rbezpolyn 的精彩回答,但实际上你可以引入其中两个。

答案3

如果你愿意让中点不精确到(0.5,0.2)但小于下面的线宽,则可以仅用弧线绘制桥梁,并且没有额外的张力参数。

\documentclass[tikz, border=0.1cm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\draw[fill=red]
 (45:0.4)
 arc[radius={sqrt(0.5)-0.4}, start angle=-135, end angle=-45]
 arc[radius=0.4, start angle=135, end angle=225]
 arc[radius={sqrt(0.5)-0.4}, start angle=45, end angle=135]
 arc[radius=0.4, start angle=-45, end angle=45];
\draw (0,0) circle[radius=0.4];
\draw (1,0) circle[radius=0.4];
\end{tikzpicture}
\end{document}

带桥的圆圈

相关内容