TikZ: использование decorations.markings для украшения обрезанного пути

TikZ: использование decorations.markings для украшения обрезанного пути

Я обрезал круг вдоль линии atan(2/3). Там, где обрезается круг, я хотел бы поставить стрелку. Я думал, что будет так же просто, как (atan(2/3) + 180)/360получить его процентное расположение вдоль пути. К сожалению, это не так. В итоге я вычел 32.5градусы методом проб и ошибок. Но я хотел бы сделать более точное размещение.

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}
\begin{tikzpicture}
  \pgfmathsetmacro{\angle}{atan(2/3)};
  \pgfmathsetmacro{\ppi}{\angle + 180};
  \pgfmathsetmacro{\percent}{(\ppi - 32.5)/360};

  \begin{scope}[rotate = \angle, decoration = {
      markings,
      mark = at position \percent with {\arrow{stealth}}
    }]
    \clip (0, .4) rectangle (-.45, 0);

    \draw[postaction = decorate] (cylinder) circle[radius = .395cm];
  \end{scope}
\end{tikzpicture}
\end{document}

введите описание изображения здесь

решение1

Давайте проанализируем. Без \clip,без вращения и нарисованного прямоугольника это ваш круг:

введите описание изображения здесь

Это показывает, что \percentзначение должно быть 50. С

\pgfmathsetmacro{\ppi}{\angle + 180};
\pgfmathsetmacro{\percent}{(\ppi)/360};

Вы, конечно, не даете, 50%но больше того. Если быть точным, вы даете atan(2/3)больше \ppi. Если мы сделаем \ppi= 180, то \percentбудет 50.

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}
\begin{tikzpicture}
  \pgfmathsetmacro{\angle}{atan(2/3)};
  \pgfmathsetmacro{\ppi}{180};
  \pgfmathsetmacro{\percent}{(\ppi)/360};

  \begin{scope}[rotate = 0, decoration = {%     % change rotate to \angle
      markings,
      mark = at position \percent with {\arrow{stealth}}
    }]
    %\clip (0, .4) rectangle (-.45, 0);
    \draw (0, .4) rectangle (-.45, 0);

    \draw[postaction = decorate] (0,0) circle[radius = .395cm];
  \end{scope}
\end{tikzpicture}
\end{document}

введите описание изображения здесь

Теперь вы можете вращать и обрезать, чтобы получить:

\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}
\begin{tikzpicture}
  \pgfmathsetmacro{\angle}{atan(2/3)};
  \pgfmathsetmacro{\ppi}{180};
  \pgfmathsetmacro{\percent}{(\ppi)/360};

  \begin{scope}[rotate = \angle, decoration = {
      markings,
      mark = at position \percent with {\arrow{stealth}}
    }]
    \clip (0, .4) rectangle (-.45, 0);
    %\draw (0, .4) rectangle (-.45, 0);

    \draw[postaction = decorate] (0,0) circle[radius = .395cm];
  \end{scope}
\end{tikzpicture}
\end{document}

введите описание изображения здесь

Связанный контент