Вопрос по правилу ненулевого значения TikZ

Вопрос по правилу ненулевого значения TikZ

Мне нужна помощь в том, как TikZnonzero ruleработает. Он говорит, что считает количество пересечений луча, начиная с некоторых точек.официальный пример fillс треугольником и кругомзапутался, потому что пересечение треугольника и круга не заполнено.

Чтобы понять это, я адаптировал этот пример и добавил второй пример из двух кругов.

\begin{document}
\begin{tikzpicture}
  \filldraw[fill=yellow]
    % Clockwise isoceles right-angled triangle
    (0,0) -- (1,1) -- (2,0) --cycle
    % Small circle centered on the leftmost vertex
    (0,0) circle (.5);

  \draw[->] (0,0) -- (.3,.3);
  \draw[->] (1,1) -- (1.5,.5);
  \draw[->] (2,0) -- (1,0);
  \draw[->] (120:.5) arc (120:90:.5);
  \draw[->] (300:.5) arc (300:270:.5);

  \draw[->] (.2,.1) -- +(0,1) node[above] {crossings: $1+1 = 2$};

  \begin{scope}[yshift=-3cm]
    \filldraw[fill=yellow]
      % Two circles
      (0,0) circle (.5)
      (.5,0) circle (.5);

      \draw[->] (120:.5) arc (120:90:.5);
      \draw[->] (300:.5) arc (300:270:.5);
      \draw[->] (120:.5)+(.5,0) arc (120:90:.5);
      \draw[->] (300:.5)+(.5,0) arc (300:270:.5);
      
    \draw[->] (.2,.1) -- +(0,1) node[above] {crossings: $1+1 = 2$};
  \end{scope}
\end{tikzpicture}
\end{document}

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

Мне трудно понять следующее:

  1. В первом примере часть пересечения НЕ заполнена.
  2. Во втором примере пересечение заполнено.

потому что количество пересечений одинаковое. Можете ли вы объяснить, почему так происходит?

решение1

Исправлено направление рисования кругов путем изменения его на противоположное с помощью[x radius=-\r, y radius=\r]

\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\filldraw[fill=yellow]
(0,0) -- (1,1) -- (2,0) --cycle
(0,0) circle[x radius=-0.5, y radius=0.5];
\draw[->] (0,0) -- (.3,.3);
\draw[->] (1,1) -- (1.5,.5);
\draw[->] (2,0) -- (1,0);
\draw[->] (120:.5) arc (120:90:.5);
\draw[->] (300:.5) arc (300:270:.5);
\draw[->] (.2,.1) -- +(0,1) node[above] {crossings: $1+1 = 2$};
\begin{scope}[yshift=-3cm]
\filldraw[fill=yellow]
(0,0) circle[x radius=-0.5, y radius=0.5]
(.5,0) circle[x radius=-0.5, y radius=0.5];
\draw[->] (120:.5) arc (120:90:.5);
\draw[->] (300:.5) arc (300:270:.5);
\draw[->] (120:.5)+(.5,0) arc (120:90:.5);
\draw[->] (300:.5)+(.5,0) arc (300:270:.5);
\draw[->] (.2,.1) -- +(0,1) node[above] {crossings: $1+1 = 2$};
\end{scope}
\end{tikzpicture}
\end{document}

Диаграмма с заполненными кругами и треугольниками

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