路径锚点宏

路径锚点宏

我正在尝试构建一个宏来为给定路径分配锚点。这是我所拥有的:

beginfig(1);
def anchors(expr p) =
  pair p.n, p.e, p.s, p.w;
  p.n := .5(ulcorner p + urcorner p);
  p.e := .5(urcorner p + lrcorner p);
  p.s := .5(llcorner p + lrcorner p);
  p.w := .5(ulcorner p + llcorner p);
enddef;
path b; b := unitsquare scaled 2cm;
anchors(b);
endfig;
end;

但这行不通。但是,如果我取出宏的内部结构并内联它们,一切都会顺利进行。为什么呢?

答案1

您必须使用suffix而不是expr

def anchors(suffix p) =
pair p.n, p.e, p.s, p.w;
  p.n := .5(ulcorner p + urcorner p);
  p.e := .5(urcorner p + lrcorner p);
  p.s := .5(llcorner p + lrcorner p);
  p.w := .5(ulcorner p + llcorner p);
enddef;
path b; b := unitsquare scaled 1pt;
anchors(b);
show b.n;
show b.e;
show b.s;
show b.w;
end

这输出

>> (0.49814,0.99626)
>> (0.99626,0.49814)
>> (0.49814,0)
>> (0,0.49814)

相关内容