Как замкнуть путь, состоящий из дуг?

Как замкнуть путь, состоящий из дуг?

У меня есть следующий код, который сгенерирован каким-то скриптом. Первая и последняя координаты в пути совпадают. Я не знаю, как сказать 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}

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