![绘图时动态改变 Metapost 笔的旋转](https://linux22.com/image/345096/%E7%BB%98%E5%9B%BE%E6%97%B6%E5%8A%A8%E6%80%81%E6%94%B9%E5%8F%98%20Metapost%20%E7%AC%94%E7%9A%84%E6%97%8B%E8%BD%AC.png)
我所寻找的是这样的:
pickup pencircle scaled 50 yscaled .5;
draw z1{rotated 40} .. {rotated 60}z3;
这意味着笔一开始旋转了 40 度,但最终在笔划结束时旋转了 60 度。
我正在尝试使用 Metapost 为我正在设计的字体生成字母形式,但不幸的是,如果不使用贝塞尔曲线来描述某些形状可能会很尴尬。
答案1
您可以使用Metapost 从 Metafont 继承的penpos
和penstroke
宏来实现这一点。不幸的是,它们没有记录在通常的手册中,但它们的工作原理如下所述元字体书。下面是一个例子:
prologues := 3;
outputtemplate := "%j%c.eps";
beginfig(1);
z1 = origin;
z2 = 200 right rotated 10;
penpos1(8,40);
penpos2(10,60);
drawoptions(withcolor .7[blue, white]);
penstroke z1e..z2e;
endfig;
end.
这个想法是,对于您定义的每个点(z1、z2 等),您还定义penpos1
、penpos2
等,其中参数是笔尖的宽度和旋转。然后使用penstroke
您想要的路径调用宏。但请注意,您必须写 not,z1..z2
but z1e..z2e
。后缀通过 中的一些宏魔法以正确的顺序e
转换为l
和。 r
penstroke
您可以在中阅读源定义plain.mp
。