
Я хотел бы заполнить этот треугольник
Код:
\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