2014-10-08 43 views
1

我試圖在我的PostScript技能中超出一點點,並試圖用它們之間的角度寫出12個短語。如何在PostScript中以編程方式使用它們之間的常規角度編寫線條?

我真的不知道如何命名的問題,所以標題有點怪......

這裏就是我想出迄今:

%! 
/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. 它使用的,而不是一個迭代明確的步驟(雖然它的工作原理)
  2. 所有text覆蓋他人在中間

任何幫助嗎?

回答

2

正如KENS建議,所有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 2014-10-09 18:05:17

2

您可以使用for或循環,而不是顯式編碼每個步驟。

既然你是從同一個位置開始每一行文本,那麼是的,最初的字形會部分重疊。它要在這種情況下,發生了什麼不是很明顯對我來說,有兩種選擇,我可以馬上想到:

1)消除潛在的區域爲白色,然後寫的文字

2)在啓動文本一個偏移量,以便初始字形不重疊。

您可以使用charpath和pathbbox來確定文本邊界框的座標,然後將其轉換爲矩形並用白色填充。

你可以通過確定初始字形的高度來做2,再次charpath pathbbox是你的朋友,然後乘以'n'(其中n是迭代次數),以給出一個近似圓的圓周所有最初的字形都適合。然後使用簡單的幾何圖形計算該圓的半徑,在繪製文本之前使用0 moveto而不是0 0 moveto。

相關問題