2017-02-23 3 views
1

Linux에서 Ghostscript를 사용하고 있는데 여전히 초보자라고 느낍니다. 스택의 맨 위에 값을 저장하여 나중에 복잡한 스택 작업을 수행하지 않고 값을 불러올 수 있도록합니다. 값은 데이터 파일에서 읽은 위도가 될 것이므로 프로그램에 직접 통합 할 수는 없습니다. 확실한 해결책은 (위도 값을 저장), UserDict를의 키/값 쌍으로 같은 것을 값을 저장하기 위해 나에게 보인다Postscrip/Ghostscript 스택 상단을 사전 항목으로 저장하는 방법

2 dict coords 
coords lat [some code to get the value of the latitude on the stack] put 

누군가의 비트을하고를 포함하는 방법을 설명 할 수주십시오 괄호? 내가 틀린 모든 것을 가지고 있을지도 모른다. 어떤 경우에 나는 대신 무엇을해야 하는가?

배경 : 파일에서 위도와 경도 데이터를 사용하여 세계 지구를 만들기 위해 잘라내어 볼에 붙여 넣을 수있는 고어를 그릴 수있는 프로그램을 작성 중입니다. gauss에 올바른 y를 맞추기 위해 경도를 조정하는 데 필요한 수학이 꽤 많이 있습니다. 사용하고있는 데이터는 gnuplot 설치에 포함 된 world.dat의 1320 좌표 세트입니다.

답변

2

'coords'와 'lat'는 무엇인가?

피연산자 스택에 2 개의 항목 사전을 만들었습니다. 'coords'는이를 채우는 실행 가능한 절차입니까? 그렇다면 피연산자 스택에서 사전을 반환합니까?

'put'을 실행하면 현재 사전에 배열을 정의하고 오브젝트 유형이 'lat'인 키를 사용할 수 있습니다. 그런 다음 사전에서 개체를 검색하기 위해 다시 'lat'에 액세스해야합니다 (또는 사전에 forall을 사용하면 특정 값을 검색하기가 어려울 수 있습니다).

귀하의 질문에 대답하기 위해,이 현재 사전 피연산자 스택의 상단에있는 값을 정의합니다 :

이의 위에의 현재 사전에 하나를 무시되는
5  %% put an object on top of the dictionary stack, stack is now: 5 
/Saved %% create a name object on the operand stack, stack is now: 5 /Saved 
exch %% exchange the objects, stack is now: /Saved 5 
def  %% define the value on the stack in the current dictionary, using the 
     %% key also on the stack 

주 사전 스택 userdict에서 명시 적으로 정의하려면 do

5   %% put an object on the operand stack, stack is now: 5 
/Saved  %% put a name object on the operand stack, stack is now: 5 /Saved 
exch  %% exchange the objects, stack is now: /Saved 5 
userdict %% put a pointer to userdict on the operand stack, stack is now /Saved 5 <<userdict>> 
3 1 roll %% roll the stack, stack is now: <<userdict>> /Saved 5 
put  %% put the value from the operand stack, using the key from the operand stack, in the dictionary also on the operand stack 
+0

KenS. 내 질문에 대한 간단한 완벽한 대답. userdict에 대한 나의 gaffe를 유감스럽게 생각합니다. 나는 모든 소리를 필요 이상으로 복잡하게 만들었습니다. 나는이 질문을 편집하여 내가 더 완전하게하고있는 것을 설명합니다. –

관련 문제