TikZ 中用不同边框样式填充的循环

TikZ 中用不同边框样式填充的循环

我有以下 TikZ:

\begin{tikzpicture}

\draw[fill=gray!50, dashed] 
([shift={(-0.5,0)}]0:0.5) arc[radius=0.5cm, start angle=0, end angle=45] 
-- ([shift={(0,0)}]102.5:0.383) arc[radius=0.383cm, start angle=102.5, end angle=67.5] 
-- ([shift={(0.5,0)}]135:0.5) arc[radius=0.5cm, start angle=135, end angle=180]  
-- cycle;

\end{tikzpicture}

它产生

尖点

我想要这个精确的形状,但我希望顶部的圆弧是实线而不是虚线。我可以用一个 \draw 命令来做到这一点吗?如果不行,最简单的方法是什么?

答案1

最简单的解决方案可能就是在其上绘制:

在此处输入图片描述

笔记:

  • 由于某种原因,我不得不将线条拉长0.18em。将线条宽度稍微加宽以隐藏导致轻微差异的原因,但这种拉长。由于您更了解代码,您可以删除shorten <=-0.18em]line width=0.57pt选项并调整绘图。

代码:

\documentclass[tikz,border=10pt]{standalone}

\begin{document}
\begin{tikzpicture}

\draw[fill=gray!50, dashed] 
   ([shift={(-0.5,0)}]0:0.5)    arc[radius=0.5cm,   start angle=0,     end angle=45  ] 
-- ([shift={(0,0)}]102.5:0.383) arc[radius=0.383cm, start angle=102.5, end angle=67.5] 
-- ([shift={(0.5,0)}]135:0.5)   arc[radius=0.5cm,   start angle=135,   end angle=180 ]  
-- cycle;

\draw [red, line width=0.57pt, cap=round, shorten <=-0.18em]  % 
    (102.5:0.383) arc[radius=0.383cm, start angle=102.5, end angle=67.5]
    ;

\end{tikzpicture}
\end{document}

答案2

以下是一种方法元帖子以供比较。

在此处输入图片描述

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);
path shape;
shape = buildcycle(halfcircle shifted 1/2 left, 
                   halfcircle scaled  3/4,
                   halfcircle shifted 1/2 right) scaled 3cm;

fill shape withcolor 3/4 white;
draw subpath(0,1) of shape dashed evenly;
draw subpath(2,4) of shape withcolor .67 red;
draw subpath(5,6) of shape dashed evenly;
endfig;
end.

我使用了subpath (t,u) of p符号,其中tu表示沿路径的所需“时间” p

弄清楚 MetaPost 认为这些点在由 创建的路径上的位置可能有点棘手buildcycle,但这种情况很典型,因为每个角都有两个点。为了准确确定我想要的点,我使用了一个临时循环来标记它们:

for i=1 upto length(shape): dotlabel.top(decimal i, point i of shape); endfor

相关内容