tikz 中同一个绘图命令中的“to[out=x,in=y]”曲线和“plot(\x,{cos(\x)})”

tikz 中同一个绘图命令中的“to[out=x,in=y]”曲线和“plot(\x,{cos(\x)})”

我试图在同一个绘制命令中绘制一条曲线,然后绘制一个图。但是,即使绘制了一条线,这也不起作用。以下代码有助于理解这个问题:

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture} %This works!
\draw[domain=-1:1] plot(\x,{cos(\x*100)}) to[out=-60,in=180] (2,2);
\end{tikzpicture}

\begin{tikzpicture} %This does too!
 \draw[domain=-1:1] (-2,-2) -- plot(\x,{cos(\x*100)}) to[out=-60,in=180] (2,2); 
\end{tikzpicture}

\begin{tikzpicture} %This gives errors :( Why?
 \draw[domain=-1:1] (-2,-2) to[out=40,in=30] plot(\x,{cos(\x*100)}) to[out=-60,in=180] (2,2); 
\end{tikzpicture}

\end{document}

有人可以解释为什么这不起作用以及我该如何实现这一点吗?

答案1

操作to与 有很大不同--。从手册第 14.13 节中,您可以看到to默认安装以下形式的路径:

--(\tikztotarget) \tikztonodes

对于曲线,模式类似,仍然使用宏\tikztotarget\tikztosource\tikztotarget,这些宏由解析 to 操作的代码设置。摘自手册:

to 操作后面总是跟着一个 ⟨coordinate⟩

这样\tikztotarget才能进行适当的设置。

从第 22.2 节中我们了解到,--plot是明确定义的特定变体plot。由于没有特殊to plot操作,因此该to操作本身无法理解直接操作plot

解决方案是,例如使用手动计算图的初始点,并在操作之后、之前\pgfmath明确放置目标坐标:toplot

\def\startPlotX{-1}
\draw[domain=\startPlotX:1]
    (-2,-2)
    to[out=40,in=30] (\startPlotX,{cos(\startPlotX*100)})
    plot(\x,{cos(\x*100)})
    to[out=-60,in=180] (2,2);

相关内容