绘图时动态改变 Metapost 笔的旋转

绘图时动态改变 Metapost 笔的旋转

我所寻找的是这样的:

pickup pencircle scaled 50 yscaled .5;
draw z1{rotated 40} .. {rotated 60}z3;

这意味着笔一开始旋转了 40 度,但最终在笔划结束时旋转了 60 度。

我正在尝试使用 Metapost 为我正在设计的字体生成字母形式,但不幸的是,如果不使用贝塞尔曲线来描述某些形状可能会很尴尬。

答案1

您可以使用Metapost 从 Metafont 继承的penpospenstroke宏来实现这一点。不幸的是,它们没有记录在通常的手册中,但它们的工作原理如下所述元字体书。下面是一个例子:

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 等),您还定义penpos1penpos2等,其中参数是笔尖的宽度和旋转。然后使用penstroke您想要的路径调用宏。但请注意,您必须写 not,z1..z2but z1e..z2e。后缀通过 中的一些宏魔法以正确的顺序e转换为l和。 rpenstroke

您可以在中阅读源定义plain.mp

相关内容