2016-03-27 2 views
2

Я хочу, чтобы мой отец был во многих цветах. Я имею в виду, что я хочу, чтобы мой DoLine выполнял каждую строчку с одинаковым, но не тем же цветом. Так что я сделализменить цвет линии по рекурсии в постскриптуме

/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 

Есть ли что-то я пропустил? Вот мой весь код, если и нужно

%! 

/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

Смежные вопросы