圆形子路径与路径之间的阴影区域

圆形子路径与路径之间的阴影区域

我想为圆弧和子路径之间的区域添加阴影。我尝试使用buildcycle但没有结果。我该怎么办?

\starttext
\startuseMPgraphic{name}
draw fullcircle scaled 4cm;
path q; q := subpath (0, 5) of fullcircle scaled 4cm; drawarrow q;
path p[];
p1 = subpath (5, 8) of fullcircle scaled 4cm;
p2 = (cosd 225, sind 225)*2cm -- (cosd 0, sind 0)*2cm;
p3 = buildcycle(p1, p2);
filldraw p3 withcolor green;
draw p1; draw p2;
\stopuseMPgraphic
\useMPgraphic{name}
\stoptext

答案1

这里不需要buildcycle。由于您所做的只是关闭圆弧路径,因此您可以像-- cycle这样使用:

\starttext
\startuseMPgraphic{name}
    path C, q, area; 
    C = fullcircle scaled 4cm;
    q = subpath (0, 5) of C; 
    area = subpath (5, 8) of C -- cycle;
    fill area withcolor 1/2[green, white];
    draw area;
    drawarrow q;
\stopuseMPgraphic
\useMPgraphic{name}
\stoptext

在此处输入图片描述

  • 为什么 buildcycle在这里不起作用是一个有趣的问题。这并不是因为两条路径不重叠——在这种情况下你会收到一条错误消息——我认为这是因为当buildcycle寻找交叉点时,它两次都找到同一个点,所以它填充的区域只是一个点(所以你看不到它)。

  • 使用 plain 编译 OP 代码mpost会产生以下 PostScript 输出(部分)

    0 1 0 setrgbcolor
    newpath -40.08661 -40.08762 moveto
    -40.08652 -40.08739 lineto
    closepath
    gsave fill grestore stroke
    

    这证实了我的理论,即buildcycle创建了一条非常微小的封闭路径,在输出中是不可见的。

相关内容