查找路径上给定 x 坐标的点(为给定的 x 标记 f(x) 点)

查找路径上给定 x 坐标的点(为给定的 x 标记 f(x) 点)

y=f(x) 函数作为路径给出;对于一组 x 坐标,我想将节点 (x,f(x)) 放置在路径上,并用垂直线将其与 (x,0) 连接起来。

我自己还没有走多远:

\tikz{
  \def\fSpec{ (-2,-2.2) .. controls (-1,2.5) and (.5,-1.7) .. (2,1.6) }
  \def\xxx{{-1.9,-1.3,-.8,-.2,.4,.9,1.5,2.0}}
  \draw[thin] \fSpec;
  \foreach\x in \xxx{
      %% how to find f(\x) here?
  }
}

我知道 Intersections 库,但是它似乎有点过度;我想学一些更优雅的东西。

我无法沿着路径长度给出参数,因为会有多个具有不同形状的函数,并且所有点都需要具有相同的 x 坐标。

答案1

Andrew Stacey 在评论中说道:该intersections库的唯一替代方案是将曲线作为函数提供。这是我目测拟合的曲线:

您的曲线显示为浅灰色。如果您不需要非常仔细地重新创建曲线,当然可以使用更简单的函数。

\documentclass{article}
\usepackage{tikz}

\begin{document}
\tikz{
  \def\fSpec{ (-2,-2.2) .. controls (-1,2.5) and (.5,-1.7) .. (2,1.6) }
  \def\xxx{-1.9,-1.3,-.8,-.2,.4,.9,1.5,2.0}
  \draw [gray!50] \fSpec;
  \foreach \x in \xxx{
      \draw (\x,0) -- ({\x},{0.25+1.3*(\x+0.15)^3/5-(\x+0.15)^2/5-\x/10});
  }
  \draw [red] plot [domain=-2:2] ({\x},{0.25+1.3*(\x+0.15)^3/5-(\x+0.15)^2/5-(\x)/10});
}

\end{document}

相关内容