두 베지어 곡선 간의 차이를 플롯합니다.

두 베지어 곡선 간의 차이를 플롯합니다.

두 개의 포물선 모양의 "함수"를 플롯하는 다음 코드가 있습니다.

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

이는 다음을 생성합니다. 여기에 이미지 설명을 입력하세요

이 두 곡선 사이의 y 좌표 차이를 어떻게 플롯할 수 있나요? 예를 들어, 일반적인 x 좌표 단계에서 각 함수를 따라 N개의 마커를 배치하고 이들의 y 좌표 차이를 취합니다.

답변1

이것은 교차로를 이용한 무차별적인 방법입니다. 일부 수직 경로와의 교차점과 해당 y 값의 차이를 계산하여 목록에 저장하고 목록을 그립니다.

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

여기에 이미지 설명을 입력하세요

관련 정보