围绕点 0 填充圆形路径

围绕点 0 填充圆形路径

我正在尝试接近的fill一部分。point 0circularpath

path circle ; circle = circularpath(10) scaled 200 ;
pair a, b ; a = point 35 of circle ; b := point 5 of circle ;

fill buildcycle((origin--a), (origin--b), circle) withcolor lightgray ;
draw circle ; dotlabel.top("A", a) ; dotlabel.top("B", b) ;

我尝试了我能想到的所有可能的参数组合buildcyclereverse但总是给出以下错误的输出:

确实,我的目标是交换颜色并仅让小区域变成灰色。

我怎样才能实现这个目标?

答案1

我从来没有真正理解过 buildcycle 是如何工作的。在这种情况下,你不需要它。你可以尝试这样的操作:

\startMPpage[offset=1dk]
path circle ; circle := fullcircle scaled 200 ;
z[0] = point 1 of circle ;
z[1] = point 3 of circle ;

fill subpath(1,3) of circle -- origin -- cycle withcolor lightgray ;
draw circle ;
freedotlabel("B", z[0],origin) ;
freedotlabel("A", z[1],origin) ;
\stopMPpage

由于您似乎使用 MetaFun,因此我还将您的 dotlabels 更改为 freedotlabels。

蛋糕结果

答案2

这里没必要buildcycle

我稍微简化了一下以使其与普通 MP 一起使用,但这也应该在 Context 格式中起作用metafun

\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);
path circle; 
circle = fullcircle scaled 200;

numeric a, b; a = 3; b = 1;
fill origin -- subpath (a, b) of circle -- cycle withcolor 7/8;

draw circle; 
dotlabel.ulft("A", point a of circle); 
dotlabel.urt("B", point b of circle);
endfig;
\end{mplibcode}
\end{document}

编译它lualatex(或者适应你的环境)以获得以下内容:

在此处输入图片描述

相关内容