正如您在与水平线的交点处看到的,“椭圆”路径太尖锐了。我该如何解决这个问题?
\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
我不确定预期的结果是什么。
如果您希望曲线在顶部和底部“平滑”,那么用一对“不相关”的圆弧绘制它是行不通的。为此,您需要使用椭圆(如其他答案所建议的那样),或者定义适当的控制点,或者使用您的方法,确保尖端的入角和出角保证曲线的切线在这些点处是水平的。即:它们应该是 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}
生成:
如果您希望曲线具有“锐角”尖端,但又不希望这些尖端超出水平线,那么问题就在于使用的线连接类型。默认情况下,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
使用arc
s:
\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}
使用bend
s:
\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}