我正在尝试构建一个宏来为给定路径分配锚点。这是我所拥有的:
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)