2016-03-27 50 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