使用“至”曲线闭合路径

使用“至”曲线闭合路径

正如您在与水平线的交点处看到的,“椭圆”路径太尖锐了。我该如何解决这个问题?

\documentclass{article}
\usepackage{tikz}  

\begin{document}

\begin{tikzpicture}[scale=0.3]
  \draw (0,7.5)--(5,7.5);
  \draw[smooth] (0,0) to[out=75,in=285] (0,7.5) to[out=255,in=105] (0,0)-- cycle;
\end{tikzpicture}

\end{document}

在此处输入图片描述

我正在尝试做这样的事情:

\documentclass{article}
\usepackage{tikz} 
\usetikzlibrary{patterns}  

\begin{document}

\begin{tikzpicture}[scale=0.3]

 \draw[smooth,pattern=north east lines] (0,0) to[out=75,in=285] (0,7.5)   to[out=255,in=105] (0,0)-- cycle;
 \draw (0,-7.5) to[out=105,in=255] (0,0);

\draw (0,7.5)--(20,7.5);
\draw (0,-7.5)--(20,-7.5);

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

我不确定预期的结果是什么。

  1. 如果您希望曲线在顶部和底部“平滑”,那么用一对“不相关”的圆弧绘制它是行不通的。为此,您需要使用椭圆(如其他答案所建议的那样),或者定义适当的控制点,或者使用您的方法,确保尖端的入角和出角保证曲线的切线在这些点处是水平的。即:它们应该是 0 或 180:

    \begin{tikzpicture}[scale=0.3]
      \draw (0,7.5)--(5,7.5);
      \draw (0,0) to [out=180,in=180] (0,7.5) to[out=0,in=0] (0,0) -- cycle;
    \end{tikzpicture}
    

    结果

    如果你想要椭圆具有不同的纵横比,可以使用参数looseness,默认情况下为1。例如:

    \begin{tikzpicture}[scale=0.3]
      \draw (0,7.5)--(5,7.5);
      \draw (0,0) to [out=180,in=180,looseness=0.5] (0,7.5) to[out=0,in=0, looseness=0.5] (0,0) -- cycle;
    \end{tikzpicture}
    

    生成:

    结果

  2. 如果您希望曲线具有“锐角”尖端,但又不希望这些尖端超出水平线,那么问题就在于使用的线连接类型。默认情况下,tikz 使用“斜接连接”,当两条线以小角度连接到一个角时,线的宽度会导致它们的相交“超出角”。您可以使用 来line join=round解决这个问题。

    \begin{tikzpicture}[scale=0.3]
      \draw (0,7.5)--(5,7.5);
      \draw[smooth, line join=round] (0,0) to[out=75,in=285] (0,7.5) to[out=255,in=105] (0,0)-- cycle;
    \end{tikzpicture}
    

    结果

答案2

您可以使用 TikZ 中的内置ellipse命令。如下所示:

\documentclass{article}
\usepackage{tikz}  

\begin{document}

\begin{tikzpicture}[scale=0.3]
  \draw (0,7.5)--(5,7.5);
  \draw (0,3.75) ellipse (0.75 and 3.75);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

使用arcs:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}

\begin{tikzpicture}[scale=0.3]

\draw (20,8)--(0,8); 
\draw[pattern=north east lines] (0,8) arc[start angle=-270,end angle = -90, x radius=1.5cm, y radius=4cm]coordinate[pos=1](a) arc[start angle=-90,end angle = 90, x radius=1.5cm, y radius=4cm];
%
\draw (a) arc[start angle=-270,end angle = -90, x radius=1.5cm, y radius=4cm] --(20,-8);

\end{tikzpicture}
\end{document}

在此处输入图片描述

使用bends:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{patterns}

\begin{document}

\begin{tikzpicture}[scale=0.3,line join = round]

\draw (20,8)--(0,8); 
\draw[pattern=north east lines] (0,8) to[bend left] (0,0)coordinate[pos=1](a) to[bend left] (0,8);
%
\draw (a) to[bend right] (0,-8) -- (20,-8);

\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容