Я делаю язык высокого уровня поверх postscript для своего курса по компиляторам и хочу создать две функции: concatenate и union, которые должны использовать два пути и соединять их.Конкатенация работает путем подключения конечной точки первого пути к начальной точке второго.Union works не соединяет конечные точки.
Пройдя некоторое время, мне удалось автоматически выполнить эти операции.Я получил ожидаемый результат в некоторых случаях, но не в других.Я приведу конкретные примеры моего решения и там, где они терпят неудачу.
РАБОТА: Если я хочу выбрать два пути, один из которых сделан дугой, а другой - путем соединения трех точек, яможет взять следующие основные пути:
newpath 100 200 70 0 45 arc %create an arc path
newpath 100 100 moveto 200 200 lineto 200 300 lineto %create a polygon
и объединить их (создавая линию от конечной точки дуги до начальной точки линий), позволив моему компилятору написать код:
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
ПРОСТО НЕ УКАЗАТЬ:
Я работаю с необработанными строками, которые я использовал для создания этих путей, но как поступить в случае, если пользователь создал привязки для путей, иТеперь я хочу присоединиться к ним.Например, предположим, что пользователь создал привязки:
/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
, но это не сработало.Я не могу найти помощь даже после долгих дней поиска.
Спасибо