PostScript嵌套循环问题:矩形框内圆形栅格仅显单列求解决方案
问题分析与修复方案
你的代码只显示一列圆形的原因很明确:内层循环执行完毕后,y的值已经达到24,后续外层循环每次递增x后,进入内层循环第一行就会触发y 23 gt { exit } if,直接退出内层循环,不会再绘制其他列的圆形。
修复方法很简单,每次外层循环开始时,把y重置为0即可:
% raster and mms defined higher up newpath 0 0 raster 24 mul raster 16 mul rectstroke /x 0 def { x 15 gt { exit } if /y 0 def % 每次外层循环开始时重置y为0 { y 23 gt { exit } if x 0.5 add raster mul y 0.5 add raster mul 2.5 mms 0 359 arc stroke /y y 1 add def } loop /x x 1 add def } loop
另外可以优化代码结构,用for循环替代loop,逻辑会更清晰,避免手动维护计数器和退出条件:
% raster and mms defined higher up newpath 0 0 raster 24 mul raster 16 mul rectstroke 0 1 14 { % x从0到14,步长1 /x exch def 0 1 23 { % y从0到23,步长1 /y exch def x 0.5 add raster mul y 0.5 add raster mul 2.5 mms 0 359 arc stroke } for } for
内容的提问来源于stack exchange,提问作者Karel Adams
相关产品推荐
相关产品推荐

