У меня есть следующий код, который сгенерирован каким-то скриптом. Первая и последняя координаты в пути совпадают. Я не знаю, как сказать TikZ закрыть путь. Я пробовал добавлять --cycle, но это, похоже, работает только тогда, когда первая и последняя координаты различны. В качестве обходного пути я могу немного сместить последнюю точку (тогда --cycle закроет путь), но это не элегантное решение. Как мне закрыть путь?
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\filldraw[fill=green!20!white,line width=0.5mm]
(-4.5:1)
arc (-4.5 : 4.5 : 1)
arc (94.5 : 115.5 : 5.3955171743191)
arc (205.5: 214.5 : 1)
arc (124.5: -4.5 : 0.47697553269816)
arc (265.5: 274.5 : 1)
arc (184.5: 85.5 : 0.85408068546347)
-- cycle;
\end{tikzpicture}
\end{document}
Предложение пользователя user3337813 не работает, дефект лучше виден в этом примере:
\filldraw[fill=green!20!white] ( -4.5 :1)
arc ( -4.5 : 34.5 :1)
arc ( -55.5 : -64.5 : 12.706204736175 )
arc ( 205.5 : 214.5 :1)
arc ( 124.5 : -4.5 : 0.47697553269816 )
arc ( 265.5 : 274.5 :1)
arc ( 184.5 : 85.5 : 0.85408068546347 )
arc ( -4.5 : 34.5 :1)
-- cycle;
\end{tikzpicture}
Если я уберу --cycle, результат будет выглядеть хорошо, но технически путь останется открытым.
решение1
Вы можете добавить первую дугу как последнюю дугу...
EDIT. OP ссылается на появление двойной дуги как на нежелательное. Таким образом, альтернативный подход заключается в том, чтобы разбить первую дугу на две частичные дуги, размещенные в начале и конце цепи:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\filldraw[fill=green!20!white,line width=0.5mm]
(-4.5:1)
arc (-4.4 : 4.5 : 1)% PARTIAL ARC
arc (94.5 : 115.5 : 5.3955171743191)
arc (205.5: 214.5 : 1)
arc (124.5: -4.5 : 0.47697553269816)
arc (265.5: 274.5 : 1)
arc (184.5: 85.5 : 0.85408068546347)
arc (-4.5 : -4.4 : 1)% PARTIAL ARC (COMPLETED)
-- cycle;
\end{tikzpicture}
\end{document}
Этот ОТРЕДАКТИРОВАННЫЙ подход разрешает встречный случай, показанный в отредактированном вопросе OP:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\filldraw[fill=green!20!white] ( -4.5 :1)
arc ( 0 : 34.5 :1)
arc ( -55.5 : -64.5 : 12.706204736175 )
arc ( 205.5 : 214.5 :1)
arc ( 124.5 : -4.5 : 0.47697553269816 )
arc ( 265.5 : 274.5 :1)
arc ( 184.5 : 85.5 : 0.85408068546347 )
arc ( -4.5 : 0 :1)
-- cycle;
\end{tikzpicture}
\end{document}
решение2
По какой-то причине это, кажется, работает, если вы замените 85.5
на 85.6
. Я не знаю, приемлемо ли это для вашего приложения. Возможно, есть проблема с циклом, если точки слишком близки.
\documentclass[border=1mm,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[x=1cm,y=1cm]%
\draw[fill=green!20!white,line width=0.5mm]
(-4.5:1)
arc (-4.5 : 4.5 : 1)
arc (94.5 : 115.5 : 5.3955171743191)
arc (205.5: 214.5 : 1)
arc (124.5: -4.5 : 0.47697553269816)
arc (265.5: 274.5 : 1)
arc (184.5: 85.6 : 0.85408068546347)
-- cycle;
\end{tikzpicture}
\end{document}