删除 tikz 图片中的小扭结

删除 tikz 图片中的小扭结

我使用 tikz 制作了此图形: enter image description here 源代码:

\documentclass[]{scrartcl}  
\usepackage{tikz}   
\usetikzlibrary{shapes, arrows, calc, positioning, fit, external}
\begin{document}

\begin{tikzpicture}[scale = 1.4, domain=-5:5, samples=49, text height=1.5ex, text depth=.25ex]]
\centering
\def\w0{0.7}
\def\z0{1.25}
\def\hype{\w0*sqrt(1 + (\x / \z0)^2)}

\fill[fill=red!10] (-5,0) -- plot(\x,{\hype}) -- plot[domain=5:-5](\x,{- \hype}) -- cycle;
\draw[color=red,very thick] plot (\x,{\hype});
\draw[color=red,very thick] plot (\x,{- \hype});

\draw[color=gray,dashed] plot (\x,{\x * \w0 / \z0});
\draw[color=gray,dashed] plot (\x,{-\x * \w0 / \z0});
\draw[color=black,thick,loosely dashdotted] (-5,0) -- (5,0);

\draw[dashed] (0, 0) -- (0, -2.5);
\draw[dashed] (\z0, 0) -- (\z0, -2.5);
\draw[<->, thick] (0, -2.3) -- (\z0, -2.3) node[midway,above]{$z_r$};

\draw[<->, thick] (0, -\w0) -- (0, \w0) node[midway,fill=white]{$w_0$};
\draw[<->, thick] (\z0, {-sqrt(2)*\w0}) -- (\z0, {sqrt(2)*\w0}) node[midway,fill=white]{$\sqrt{2}\,w_0$};

\node[draw,color=green,thick,circle,minimum size=1.5cm] at (-4.9, 2.8) {};
\end{tikzpicture}

\end{document}

绿色圆圈只是用来标记问题。如何消除扭结?当我指定较少的样本数时,扭结就消失了,但双曲线看起来很糟糕。样本越多,扭结越明显。

答案1

您可以使用 pgf 2.1 和下一个代码来避免该问题

 \draw[color=gray,dashed] plot (\x,{\x * (\w0 / \z0)});
 \draw[color=gray,dashed] plot (\x,{-\x * (\w0 / \z0)});

评论 :

a)两个点足以用 pgf 2 或 pgf 3 画一条线。所以:

   \draw[color=gray,dashed,samples=2] plot (\x,{\x * (\w0 / \z0)});
   \draw[color=gray,dashed,samples=2] plot (\x,{-\x * (\w0 / \z0)});

b) pgf 3.0 没有问题

答案2

请注意,样本=2似乎以消除问题(因为有一条平滑的线)但线的位置错误:

enter image description here

代码:

\draw[color=gray,dashed] plot (\x,{-\x * \w0 / \z0});
\draw[color=gray, samples=2] plot (\x,{-\x * \w0 / \z0});

所以这不是解决办法。


除了尴尬的“更改括号”之外,还有另一种解决方案:替换

\usepackage{tikz}  

\usepackage{tikz, pgfplots}

或者甚至只是

\usepackage{pgfplots}

并且它可以工作。(不要忘记声明\pgfplotsset{compat=1.9})在获得一些 pgfplots 和 tikz 经验后,我建议使用具有适当轴环境的 pgfplots 来处理与函数图相关的任何内容。

但升级到 PGF 3 可能是最好的解决方案。

目前我找不到简单的升级方法。(使用 MikTeX 2.9)

相关内容