如何通过 tikz 中的剪辑来拟合曲线下的面积?

如何通过 tikz 中的剪辑来拟合曲线下的面积?

我有一条简单的任意曲线和一条曲线下方的直线。曲线仅代表一些任意函数。但我的观点是,鉴于我在曲线上有两个任意点,它们投影在曲线下方的直线上,我如何精确地拟合两条路径之间的区域。我尝试过裁剪它,但它裁剪的是曲线下方而不是上方。阴影区域与曲线不相符,放大后可以清楚地看到。

\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}

无论如何,结果将是:

在此处输入图片描述

相关内容