如何创建一支仅在路径右侧绘图的笔?

如何创建一支仅在路径右侧绘图的笔?

假设我有一条表示房间内部尺寸的路径。我想画一条细线来表示内部空间。但我还想画出墙壁的厚度。最简单的方法是,我手动增加和减去墙壁的厚度,假设笔在路径的两侧绘制(这就是为什么我必须将厚度除以 2)。

ft = 1cm;
wall_depth = 0.5ft;

% Draw the measured room outline
pickup pensquare scaled 1bp;
draw (0,0)--(26ft,0)--(26ft,27.5ft)--(0,27.5ft)--cycle;

% Draw in the thickness of the walls
pickup pensquare scaled 0.5ft;
t = wall_depth / 2;
draw (0-t,0-t)--(26ft+t,0-t)--(26ft+t,27.5ft+t)--(0-t,27.5ft+t)--cycle withcolor .8 white;

在此处输入图片描述

似乎我应该能够定义一支只在路径右侧绘制的笔,这样我就可以强制将厚度设置在路径的外部。我可以这样做吗?

或者,我希望能够告诉 Metapost 在我的薄多边形外面神奇地添加一堵厚墙,但我认为我不能这样做。

答案1

类似这样的方法(有点像 Andrew 所建议的)可能是一种方法,但这取决于你真正想要什么。构造只是为了得到一个随机多边形(这可能是 MetaFun,但你有自己的路径)。

上面的例子(第一张图)用宽笔用黄色绘制路径,然后用蓝色填充路径(具有透明度,以便看到重叠)。

下面的示例是向右绘制的。首先,我们用深红色绘制路径,然后我们取消填充路径(这是要做的重要事情,但需要封闭的路径,就像您似乎所做的那样)。然后我们还用深蓝色绘制路径,只是为了显示深红色绘制的路径的左侧在右侧。

我使用 ConTeXT,因此下面的代码是完整的 ConTeXt 文档(可以用 运行context)。但重要的 MetaPost 代码是相同的……

\startMPpage[offset=1dk]
u:=1in ;

path p ; p := unspiked circularpath(3) randomized 0.3 scaled u ;

draw image(
draw p withpen pencircle scaled 2mm withcolor yellow ;
fill p withcolor blue withtransparency(2,0.5) ;
) ;

draw image(
draw p withpen pencircle scaled 2mm withcolor darkred ;
unfill p ;
draw p withcolor darkblue ;
) xshifted 1.5u ;

\stopMPpage

绘制在路径右侧

相关内容