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}