2016-03-27 92 views
2

我想讓我的模型具有很多顏色。我的意思是我希望我的DoLine使每個時間線具有相似但不相同的顏色。所以,我沒有通過遞歸在postscript中改變線條的顏色

/red 0.41 def 
/green 0.1 def 
/blue 0.21 def 
/incRed {/red red 0.01 add} def 
/incGreen {/green green 0.03 add} def 
/incBlue {/blue blue 0.05 add} def 

和我DoLine

/DoLine 
{ 
    incRed 
    incGreen 
    incBlue 
    red green blue setrgbcolor 
    rotation rotate 
    0 linelen rlineto 
    currentpoint stroke 
    translate 0 0 moveto 
} def 

但它的輸出我只有一種顏色的百通被設置爲

/red 0.41 def 
/green 0.1 def 
/blue 0.21 def 

有什麼我錯過了什麼?這是我所有的代碼,如果u需要它

%! 

/Helvetica findfont 8 scalefont setfont 
/ang1 -141 def 
/ang2 {-2 ang1 mul} def 
/linelen 36 def 
/depth 0 def 
/down {/depth depth 1 add def} def 
/up {/depth depth 1 sub def} def 
/red 0.41 def 
/green 0.1 def 
/blue 0.21 def 
/incRed {/red red 0.01 add} def 
/incGreen {/green green 0.03 add} def 
/incBlue {/blue blue 0.05 add} def 

/CrownPos 
{ 
    /x 300 def 
    /y 300 def 
    x y moveto 
} def 

/DoLine 
{ 
    incRed 
    incGreen 
    incBlue 
    red green blue setrgbcolor 
    rotation rotate 
    0 linelen rlineto 
    currentpoint stroke 
    translate 0 0 moveto 
} def 

/Print 
{ 
    gsave 
    .62 .62 scale 
    2 setlinewidth 
    down DoLine 
    depth 8 le 
    { 
     ang1 rotate Print 
      ang2 rotate Print 
    } if 
    up 
    grestore 
} def 

/Crown 
{ 
    /rotation 0 def 
    CrownPos Print 
    stroke 
    /rotation 270 def 
    CrownPos Print 
    stroke 
    /rotation 90 def 
    CrownPos Print 
    stroke 
} def 



    Crown 
600 600 translate 
180 rotate Crown 
    showpage 

回答

3

兩個問題,這些顏色增量程序:1)他們沒有設置新值回變量(即缺少def)和2),他們也增加很快,很快達到白色的方式。試試這些重新設計的版本,而不是:

/incRed { /red red 0.0001 add def } def 
/incGreen { /green green 0.0003 add def } def 
/incBlue { /blue blue 0.0005 add def } def 

enter image description here