我有一条简单的任意曲线和一条曲线下方的直线。曲线仅代表一些任意函数。但我的观点是,鉴于我在曲线上有两个任意点,它们投影在曲线下方的直线上,我如何精确地拟合两条路径之间的区域。我尝试过裁剪它,但它裁剪的是曲线下方而不是上方。阴影区域与曲线不相符,放大后可以清楚地看到。
\begin{tikzpicture}
\draw (-2,0) -- (5,0);
\draw (-2,2) .. controls (0,1) and (3,1) .. coordinate[pos=0.8](A) coordinate[pos=0.925](B) (5,2);
\draw (A) --++ (0,-43.25pt) coordinate(C);
\draw (B) --++ (0,-51.15pt) coordinate(D);
\filldraw[violet] (A) -- (B) -- (D) -- (C);
\end{tikzpicture}
答案1
如果要剪切紫色区域,首先需要定义要剪切的区域。以下可能是实现所需内容的方法:
\documentclass[border=1mm, tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\clip (-2,2) .. controls (0,1) and (3,1) .. coordinate[pos=0.8](A) coordinate[pos=0.925](B) (5,2) -- (5,0) -- (-2,0) -- cycle;
\coordinate (C) at (A |- 0,0);
\coordinate (D) at (B |- 0,0);
\draw[fill=violet] (A) -- (B) -- (D) -- (C) -- cycle;
\end{scope}
\draw (-2,0) -- (5,0);
\draw (-2,2) .. controls (0,1) and (3,1) .. (5,2);
\end{tikzpicture}
\end{document}
(A |- 0,0)
这里的意思是:获取 的x值A
和 的y值0,0
,即 坐标 正下方直线上的坐标A
。
如果您不想重复输入曲线的路径,您可以将曲线的路径存储在某些宏中,例如:
\newcommand{\mycurve}{ (-2,2) .. controls (0,1) and (3,1) .. (5,2) }
\begin{tikzpicture}
\begin{scope}
\clip \mycurve coordinate[pos=0.8](A) coordinate[pos=0.925](B) -- (5,0) -- (-2,0) -- cycle;
\coordinate (C) at (A |- 0,0);
\coordinate (D) at (B |- 0,0);
\draw[fill=violet] (A) -- (B) -- (D) -- (C) -- cycle;
\end{scope}
\draw (-2,0) -- (5,0);
\draw \mycurve;
\end{tikzpicture}
无论如何,结果将是: