首页 文章

postscript合并两条路径

提问于
浏览
1

我在编写器课程的后记上编写了一个高级语言,我想创建两个函数:concatenate和union,它应该采用两个路径并将它们联系起来 . 连接通过将第一个路径的终点连接到第二个路径的起点来工作 . Union工作不会连接 endpoints .

玩了一段时间后,我设法自动执行这些操作 . 在某些情况下我得到了预期的结果,但在其他情况下没有 . 我将给出我的解决方案的具体示例,以及它们失败的地方 .

WORKING: 如果我想采用两条路径,一条由弧线构成,另一条通过连接三个点,我可以采取以下基本路径:

newpath 100 200 70 0 45 arc  %create an arc path
 newpath 100 100 moveto  200 200 lineto 200 300 lineto %create a polygon

并通过让我的编译器编写代码来连接它们(从弧的 endpoints 到行的起点创建一条线):

newpath 100 100 moveto  200 200 lineto 200 300 lineto reversepath currentpoint newpath %stores the startpoint of the polygon to be used later

newpath 100 200 70 0 45 arc % creates the arc
lineto  %takes the saved information about start of the polygon and creates a line to it
100 100 moveto  200 200 lineto 200 300 lineto  %finishes by adding the polygon to the path

STILL MISSING:

我正在操作我用来创建这些路径的原始字符串,但是在用户为路径创建绑定的情况下如何继续,现在我想加入它们 . 例如,假设用户创建绑定:

/p1 {  newpath 100 200 70 0 45 arc } bind def
/p2 {  newpath 100 100 moveto  200 200 lineto 200 300 lineto } bind def

如何在不修改绑定的情况下根据需要继续加入这两个路径?

我试过类似的东西

p1 uappend p2

,但它没有奏效 . 在寻找了很多天之后,我找不到任何帮助 .

谢谢

1 回答

  • 2

    您可以加载函数的定义,然后查看可执行数组的内容 .

    /p1 load {==} forall
    

    会告诉你看起来像什么 . 或者,您可以定义存储其操作数的每个路径运算符的版本,并只执行这些过程 .

    /moveto {....} def
    /lineto {....} def
    ...
    ...
    p1 p2
    

    像往常一样,编程问题有多种可能的解决方案 .

相关问题