Zeichnen Sie die Differenz zwischen zwei Bézierkurven auf.

Zeichnen Sie die Differenz zwischen zwei Bézierkurven auf.

Ich habe den folgenden Code zum Plotten zweier parabelähnlicher „Funktionen“:

\begin{tikzpicture}[
  remember picture,
  overlay
  ]

  \tikzmath{
    \w = 4;
    \yVs0 = 2;
    \yVsl = 1;
    \yVsf = 3;
    \yss0 = \yVs0*2;
    \yssl = \yVsl*1.5;
    \yssf = \yVsf*1.1;
  }

  \tikzset{
    shift={(current page.center)}
  }

  \begin{scope}[
    shift={($0.5*(-\w,-\w)$)}
    ]

    \draw[->,thick] (0,0) -- (\w,0);

    \draw[
    blue]
    (0,\yVs0) .. controls (\w*1/4,\yVsl) and (\w*3/4,\yVsl) .. (\w,\yVsf);

    \draw[
    red]
    (0,\yss0) .. controls (\w*1/4,\yssl) and (\w*3/4,\yssl) .. (\w,\yssf);

  \end{scope}

\end{tikzpicture}

was ergibt: Bildbeschreibung hier eingeben

Wie kann ich die Differenz der y-Koordinaten zwischen diesen beiden Kurven darstellen? Beispielsweise indem ich entlang jeder Funktion N Markierungen in regelmäßigen x-Koordinatenschritten platziere und die Differenz der y-Koordinaten daraus bilde.

Antwort1

Dies ist eine Brute-Force-Methode, die Schnittpunkte verwendet. Sie berechnet die Schnittpunkte einiger vertikaler Pfade und die Differenz ihrer Y-Werte, speichert sie in einer Liste und stellt die Liste grafisch dar.

\documentclass[tikz,margin=3mm]{standalone}
\usetikzlibrary{calc,intersections,math}
\begin{document}

\begin{tikzpicture}

  \tikzmath{
    \w = 4;
    \yVs0 = 2;
    \yVsl = 1;
    \yVsf = 3;
    \yss0 = \yVs0*2;
    \yssl = \yVsl*1.5;
    \yssf = \yVsf*1.1;
  }

  \tikzset{
    shift={(current page.center)}
  }

  \begin{scope}[
    shift={($0.5*(-\w,-\w)$)}
    ]

    \draw[->,thick] (0,0) -- (\w,0);

    \draw[name path=A,
    blue]
    (0,\yVs0) .. controls (\w*1/4,\yVsl) and (\w*3/4,\yVsl) .. (\w,\yVsf);

    \draw[name path=B,
    red]
    (0,\yss0) .. controls (\w*1/4,\yssl) and (\w*3/4,\yssl) .. (\w,\yssf);
    \edef\lstCoords{(0,\yss0-\yVs0)}
    \foreach \X in {1,...,9}
     {\pgfmathsetmacro{\myx}{\X*0.1*\w}
     \path[name path=vert,overlay] ([yshift=-1pt]current bounding box.south-|\myx,0)
      -- ([yshift=1pt]current bounding box.north-|\myx,0);
     \path[name intersections={of=A and vert,by=i1},name intersections={of=B and vert,by=i2}]  
      let \p1=($(i2)-(i1)$) in \pgfextra{\xdef\lstCoords{\lstCoords (\myx,\y1)}};
     }
    \edef\lstCoords{\lstCoords (\w,\yssf-\yVsf)}
    \draw[orange] plot[smooth] coordinates {\lstCoords};
  \end{scope}

\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen