如果将一个节点定义为一个圆,并且你想使用该节点的锚点(西和东)围绕该节点绘制一个圆弧,那么如何确保该圆弧锚定在中心(下图中的红线;参见下面 MWE 中的“使用坐标”)位于圆周的左侧,而不是左侧边缘(下图中的蓝线;参见下方 MWE 中的“使用锚点”)。
也就是说,如果使用锚点,则会产生黑色输出,但如果使用坐标,则会产生红色输出。
我知道这是一个微妙的观点,但我想正确理解节点锚点的工作原理!
为什么不简单地用坐标来做呢?这是一个更大的图形的一部分,为了简单起见,我理想情况下希望用节点锚点来定义图形。
梅威瑟:
\documentclass[12pt,tikz]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%The node:
\node[circle,draw=black, fill = white, inner sep=0pt,minimum size=1.5cm] (pulley) at (0,0) {};
%Using anchors:
\draw[thick,blue] (pulley.west) arc (180:0:0.75);
%Using coordinates (ideally it should like this output):
\draw[thick,red] (-0.75,0) arc (180:0:0.75);
\end{tikzpicture}
\end{document}
答案1
我不知道这是否明显,但这里有一个使用更宽的线条的示例,以便更容易看到:
\documentclass[12pt,tikz,border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
%The node:
\node[circle,draw=black, fill = white,line width=1mm, inner sep=0pt,minimum size=1.5cm] (pulley) at (0,0) {};
%Using anchors:
\draw[line width=3mm,blue,opacity=0.4] (pulley.west) ++(0.5mm,0) arc[start angle=180,end angle=0,radius=0.75cm];
\node [circle,fill=red,inner sep=0.5pt,draw=none,pin=240:\texttt{.west}] at (pulley.west) {};
\end{tikzpicture}
\end{document}
线索是west
锚点位于线的外侧,而不是中间。因此,您必须将起点移动arc
线宽的一半。
(如果边框的宽度node
与 中使用的线宽相同\draw
,则可以使用0.5\pgflinewidth
而不是上面明确的 0.5mm。)
虽然我在这里使用笛卡尔坐标进行平移,但通常最好使用极坐标(假设为圆)。也就是说,使用++(<start angle>-180:<half the linewidth>)
(在本例中(0:0.5mm)
)。