TikZ 中的箭头坐标

TikZ 中的箭头坐标

我想编写一个使用 TikZ 创建如下照片的宏:

例子
(来源:微软

但最终我想出了这样的办法:

TikZ 图片

如您所见,问题在于箭头指向了终点圆的错误一侧(它们总是指向正确的一侧)。这是我的示例的源代码:

\documentclass[11pt]{scrartcl}
\usepackage[utf8]{inputenc}  
\usepackage{tikz}
\usetikzlibrary{calc} 
\makeatletter 
\@namedef{color@1}{red!40}
\@namedef{color@2}{green!40}   
\@namedef{color@3}{blue!40} 
\@namedef{color@4}{cyan!40}  
\@namedef{color@5}{magenta!40} 
\@namedef{color@6}{yellow!40}    

\newcommand{\graphitemize}[1]{%
\begin{tikzpicture}[every node/.style={align=center}]  

\foreach \gritem [count=\xi] in {#1}  {\global\let\maxgritem\xi}  

\foreach \gritem [count=\xi] in {#1}
{% 
\pgfmathtruncatemacro{\angle}{360/\maxgritem*\xi}
\edef\col{\@nameuse{color@\xi}}
\node[circle,
     ultra thick,
     draw=white,
     fill opacity=.5,
     fill=\col,
     minimum size=3cm] (satellite\xi) at (\angle:4cm) {\gritem };
}%

\foreach \gritem [count=\xi] in {#1}
{% 
\pgfmathsetmacro{\xj}{mod(\xi, \maxgritem) + 1}
\edef\col{\@nameuse{color@\xi}}
\draw[<-,line width=.5cm,opacity=.5,\col] (satellite\xj) to[bend left] (satellite\xi);
}%
\end{tikzpicture}  
}%

\begin{document}

\graphitemize{Phase 1,Phase 2, Phase 3, Phase 4}

\end{document} 

请注意,我改编了 Altermundus 回答的代码这个问题。如何固定箭头的终止位置?

答案1

问题来自数学运算mod(\xi, \maxgritem) + 1。TikZ 给出的结果带有小数点,例如1.0, 2.0等。后来,由于您在节点命名中使用它,它变成了satellite1.0,satellite2.0。巧合的是,这意味着箭头应该以零角度到达节点边界,因此右侧跟踪很奇怪。

您可以通过将操作线替换为

\pgfmathtruncatemacro{\xj}{mod(\xi, \maxgritem) + 1)} 

相关内容