Adobe
Sign in My orders My Adobe

Adobe Magazine
PostScript Example One


The spirograph graphic to the left was created with the following PostScript Code, as described in the article, Rocking the Foundation.

%!PS-Adobe-3.0 EPSF-3.0

%%BoundingBox:0 0 288 288
%%ColorUsage: Color
%%DocumentProcessColors: Cyan Magenta Yellow Black
/ok_Ellipse
{
	ok_xOffset ok_yOffset moveto
	ok_x1 0 ok_xR ok_y1 ok_xR ok_yR rcurveto
	0 ok_y1 ok_x1 neg ok_yR ok_xR neg ok_yR rcurveto
	ok_x1 neg 0 ok_xR neg ok_y1 neg ok_xR neg ok_yR neg rcurveto
	0 ok_y1 neg ok_x1 ok_yR neg ok_xR ok_yR neg rcurveto
	closepath
} def
/ok_Ellipses
{
	%on stack:
	%xCenter yCenter xOffset yOffset width height weight howMany [color array]
	aload pop setcmykcolor
	/ok_HowMany exch def
	/ok_Weight exch def
	/ok_Height exch def
	/ok_Width exch def
	/ok_yOffset exch def
	/ok_xOffset exch def
	/ok_yCenter exch def
	/ok_xCenter exch def
	/ok_Angle 360 ok_HowMany div def
	/ok_xR ok_Width 2 div def
	/ok_yR ok_Height 2 div def
	/ok_x1 ok_xR ok_xR .552292 mul sub def
	/ok_y1 ok_yR ok_yR .552292 mul sub def
	ok_Weight setlinewidth
	gsave
	ok_xCenter ok_yCenter translate
	ok_HowMany
	{
		ok_Ellipse
		ok_Angle rotate
	} repeat
	stroke
	grestore
} def
%here's an example call to the "ok_Ellipses" routine
144 144 0 0 24 36 .5 24 [0 0 0 1] ok_Ellipses
144 144 0 76 18 60 3 6 [1 0 1 0] ok_Ellipses
144 144 0 76 12 48 2 12 [.8 0 .8 0] ok_Ellipses
144 144 0 78 11 44 2 12 [.6 0 .6 0] ok_Ellipses
144 144 0 80 10 40 2 12 [.4 0 .4 0] ok_Ellipses
144 144 0 82 9 36 2 12 [.2 0 .2 0] ok_Ellipses
144 144 0 86 6 28 .5 24 [0 0 0 1] ok_Ellipses
144 144 0 96 5 5 .5 12 [0 0 0 1] ok_Ellipses
144 144 48 0 24 48 3 12 [1 0 1 0] ok_Ellipses
144 144 48 0 22 46 3 12 [.9 0 .9 0] ok_Ellipses
144 144 48 0 20 44 3 12 [.8 0 .8 0] ok_Ellipses
144 144 48 0 18 42 3 12 [.7 0 .7 0] ok_Ellipses
144 144 48 0 16 40 3 12 [.6 0 .6 0] ok_Ellipses
144 144 48 0 14 38 3 12 [.5 0 .5 0] ok_Ellipses
144 144 48 0 12 36 3 12 [.4 0 .4 0] ok_Ellipses
144 144 48 0 10 34 3 12 [.3 0 .3 0] ok_Ellipses
144 144 48 0 8 32 3 12 [.2 0 .2 0] ok_Ellipses
144 144 48 0 8 30 3 12 [.1 0 .1 0] ok_Ellipses
% EOF