TikZ:正确地将曲线连接到圆的边缘

TikZ:正确地将曲线连接到圆的边缘

我正在尝试绘制一个图表,其中圆圈内有一条曲线,并连接到边缘。我想要的是类似于描述的这里。这是我的代码:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\node[draw,circle,minimum size=40pt,red](circ){};
\draw[blue,looseness=1.5]
    (circ.west) to [out=70,in =110]
    (circ.center) to [out=-70,in=-110] (circ.east);

\end{tikzpicture}
\end{document}

问题是,曲线的边缘与圆的边缘没有按照我想要的方式对齐。我想要的是蓝色曲线只延伸到红色圆的内边缘。现在,我可以先画出曲线,然后使用不可见的节点,但问题是,由于它延伸到了圆的外边缘,所以其中一些节点仍然可见。而且,这似乎是一个不太优雅的解决方案。

输出

答案1

像这样吗?

在此处输入图片描述

我设置了圆outside sep=0pt。这样圆的坐标就位于圆上,不再位于圆外。同样在第一种情况下,将蓝线放在圆后面:

\documentclass[border=10pt,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}

\node[circle, draw=red,
      minimum size=40pt, outer sep=0pt](circ){};
\scoped[on background layer]
\draw[blue,looseness=1.5]
    (circ.west)   to [out =70,in =110]
    (circ.center) to [out=-70,in=-110] (circ.east);
\end{tikzpicture}
     \end{document}

第二个例子是线在前面,但线有圆形帽:

\documentclass[border=10pt,tikz]{standalone}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}

\node[circle, draw=red,
      minimum size=40pt, outer sep=0pt](circ){};
 \draw[blue,cap=round,looseness=1.5]
    (circ.west)   to [out =70,in =110]
    (circ.center) to [out=-70,in=-110] (circ.east);
\end{tikzpicture}
     \end{document}

这使:

在此处输入图片描述

答案2

使用圆圈剪掉外面的所有内容,并在最后绘制它:

\documentclass[border=10pt]{standalone}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\node[circle,minimum size=40pt](circ){};
\clip (0,0) circle (20pt);
\draw[blue,looseness=1.5]
    (circ.west) to [out=70,in =110]
    (circ.center) to [out=-70,in=-110] (circ.east);
\node[draw,circle,minimum size=40pt,red,thick] {};
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容