%!PS %%Creator: J.V. Romanovsky %%CreationDate: 1996? %%BoundingBox: -200 -200 200 200 %%EndProlog %%Page: 0 1% /rl{rlineto}def % to reduce the code /FS {gsave setgray fill grestore stroke}def % gsave ... grestore are used to save the graphic environment % it is necessary if you want to use the current path several % times, as here: to fill and to stroke /s3 0.75 sqrt def /unit 40 def % Two constants, 'unit' defines the size of construction /U { unit mul 0 exch rl} def % Verical line for several units /R { unit mul % Transfer the number of units to length dup % Copy it s3 mul % Calculate X-offset exch % Hide it 0.5 mul % Calculate Y-offset rl} def % Draw the line with the given offset pair /L { unit mul dup s3 mul neg % neg is the only modificaion exch 0.5 mul rl}def % Right and left lines for several lines /M{ s3 unit mul 0.5 unit mul translate -120 rotate} def % Rotation of the picture to scan the vertices of the central % triangle %200 400 translate /P1{ 0 0 moveto 2 R -1 L -2 U 4 R -1 U -9 R 4 U -1 L -2 U 3 R 4 U -4 R 3 U -1 L -2 U -1 L} def % Sorry, only copying the source Escher draft % and no own imagination % Three parts of the picture are made with the same procedure %mark origin %0 10 moveto %0 -10 lineto %10 0 moveto %-10 0 lineto %stroke P1 0.6 FS M P1 0.8 FS M P1 0.95 FS M showpage % End