2014-10-08 11 views
1

필자는 포스트 스크립트 기술에서 조금 벗어나려고 노력 중이며, 30 개의 구와 12 개의 구를 쓰려고했습니다.포스트 스크립트에서 규칙적인 각도로 프로그래밍 방식으로 선을 작성하는 방법은 무엇입니까?

정말 문제 이름을하는 방법을 모른다, 그래서 제목은 조금 이상한입니다 ... 내가 지금까지 왔는지

다음

은 다음과 같습니다

%! 
/Times-Roman findfont 20 scalefont setfont 
/r 360 12/def 

306 396 translate 
0 0 moveto 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

0 0 moveto 
30 rotate 
(text) show 

showpage 

을하지만 몇 가지 문제가있다 이 코드 : (작동하지만) 대신 반복의 명시적인 단계를 사용

  1. 모든 text는 다른 사람을 덮어 씁니다 중간에

도움이 필요하십니까?

답변

2

, translateshowpage 사이의 모든 코드로 대체 할 수있다 : 당신이 중복을 피하려면

12 { 0 0 moveto (text) show 30 rotate } repeat

, 예를 들어이 사용

12 { 50 0 moveto (text) show 30 rotate } repeat

+1

니스, 그거 멋지게. 내가 정의한 배열의 일부 내용을 표시하려면 다음을 수행해야합니다. 'myArray {0 0 moveto show 30 rotate} forall'? 편집 : 예! 그거였다! 감사합니다 =] – EuAndreh

2

각 단계를 명시 적으로 코딩하는 대신 for 또는 for 루프를 사용할 수 있습니다.

동일한 위치에서 텍스트의 각 줄을 시작하고 예 (yes) 때문에 초기 글립 문자가 부분적으로 겹칩니다.

1) 다음 텍스트

2 쓰기 흰색을 기본 영역을 지우)에있는 텍스트를 시작 그것의 당신이 그 경우에 발생하는 것이 나에게 분명하지, 두 가지 옵션이 나는 즉시 생각할 수있다 초기 그래프가 오버랩하지 않게하는 오프셋 (offset)

charpath 및 pathbbox를 사용하여 텍스트 테두리 상자의 좌표를 결정한 다음이를 사각형으로 변환하고 흰색으로 채울 수 있습니다.

처음 glyph의 높이를 결정하여 2를 할 수 있습니다. 다시 charpath pathbbox는 친구이며, 'n'(n은 반복 횟수)을 곱하여 원의 근사값을 구합니다. 모든 초기 글리프가 맞을 것입니다. 그런 다음 간단한 지오메트리를 사용하여 원의 반경을 계산하고 텍스트를 그리기 전에 0 moveto 대신 0 moveto를 사용하십시오. KENS에 의해 제안