TikZ: как заполнить область, ограниченную пересечениями?

TikZ: как заполнить область, ограниченную пересечениями?

Я хотел бы заполнить этот треугольник введите описание изображения здесь

Код:

\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    % \draw [help lines] (7,0) grid (11,4);
    \draw [fill=red] (0,1.3) circle (1.3); 
    \draw [fill=blue] plot [smooth cycle,scale=0.4, xshift=18cm, yshift=1.5cm] coordinates
    {(1,0) (0,2) (1.3,4) (3.6,2) (3.6+3.6-1.3,4) (2*3.6,2) (3.6+3.6-1,0) (3.6,1)}; 
    \draw (8.55,0.98) -- ++ (0.1,-1.47) (8.7,0.99) -- (8.55+0.1,-0.49); 

\end{tikzpicture}
\end{document}

Я посмотрел наЗаполнение области между двумя линиями и дугойно я не смог найти решение. Я думаю, что сначала я должен дать имя синему объекту через name path=candy. Затем я должен дать команду

\path[name path=twolines] (0.98) -- ++ (0.1,-1.47) (8.7,0.99) -- (8.55+0.1,-0.49);

для поиска пересечений. После этого, с помощью команды fill, я должен заполнить эту область. Проблема в том, что я не знаю как. Может быть, с помощью \clip, но опять же, как?

решение1

Два простых приема могут сэкономить вам массу работы. Нарисуйте этот треугольник и заполните его как обычно, [fill=<color>]прежде чем рисовать форму мотылька, затем сдвиньте треугольник вверх на очень маленькую длину, чтобы скрыть крошечное белое пространство между дугой и стороной треугольника. Наконец, нарисуйте изогнутую форму. Это немного приблизительно, но избавит вас от головной боли.

\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    % \draw [help lines] (7,0) grid (11,4);
    \draw [fill=red] (0,1.3) circle (1.3);
    \draw [fill=red,yshift=1pt] (8.55,0.98) -- ++(0.1,-1.47) -- (8.7,0.99); 
    \draw [fill=blue] plot [smooth cycle,scale=0.4, xshift=18cm, yshift=1.5cm] coordinates
    {(1,0) (0,2) (1.3,4) (3.6,2) (3.6+3.6-1.3,4) (2*3.6,2) (3.6+3.6-1,0) (3.6,1)}; 
\end{tikzpicture}

\end{document}

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

решение2

Вы можете просто нарисовать треугольник немного больше, чем нужно, в верхней части (я использую вариант shortenс отрицательной длиной), а затем поместить на него бант, чтобы получить идеальный результат, как на этом рисунке:

\documentclass[border=0.2cm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
   \draw [fill=red, shorten <=-0.1cm, shorten >=-0.1cm] (8.55,0.98) -- (8.65,-0.49) -- (8.7,0.99); 
   \draw [fill=blue] plot [smooth cycle,scale=0.4, xshift=18cm, yshift=1.5cm] coordinates
    {(1,0) (0,2) (1.3,4) (3.6,2) (3.6+3.6-1.3,4) (2*3.6,2) (3.6+3.6-1,0) (3.6,1)}; 
 \end{tikzpicture}
\end{document}

Заполненный треугольник с бантом

Если вам по какой-то причине нужен идеально заполненный треугольник на переднем плане, то вы можете использовать перевернутый клип из ответа @Jake с бантом:https://tex.stackexchange.com/a/12033/8650

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