%!PS-Adobe-3.0 %% -- squ_curv_6.ps by j.f.Pique (dans _ajf/_NEWG/ et _ajf/_litt/_jf/_ps/) %% page upper right : 595 x 842 %% Origin: down left /maxX 595 def /maxY 842 def /cm {28.3465 mul} def /idiv2 {2 idiv} def /AuteurDessin (dessin: Akiyoshi Kitaoka) def % au département de psychologie, Université de Ritsumeikan, Kyoto /AuteurProgramme (postscript: J.F.Pique) def /White 1 def /Black 0 def /BlackColor { /PenColor Black def Black setgray } def /InvertColor { /PenColor PenColor 1 xor def PenColor setgray } def %TotalSize = 540 = 15 rect * (36 = 2*2*3*3) pt /N 36 def /Nmoins 0 N sub def /N2 N N add def /Nidiv2 N 2 idiv def /Nidiv3 N 3 idiv def /Bord 2 def /Nsmall Nidiv3 Bord sub def /CentreDamier N idiv2 7 N mul add def /Square %% _ size Square => _ { dup 0 exch rlineto % o^ dup 0 rlineto % -> dup neg 0 exch rlineto % V closepath % o <- pop currentpoint fill % fill open a new path ! moveto % restauration point de départ } def /VertLeft2SmallSquares %% no parameters {gsave Bord Bord rmoveto Nsmall Square 0 Nsmall Nidiv3 add rmoveto % pour avoir Bord en marge sup Nsmall Square grestore } def /Diag2SmallSquares %% no parameters {gsave Bord Nidiv3 Nidiv3 add rmoveto Nsmall Square Nsmall Nidiv3 add dup neg rmoveto % (smallSize+N/3) -(smallSize+N/3) rmoveto Nsmall Square grestore } def /SeptCarresNB %% No parameters, le point courant est deplace d'autant { 7 { N Square % 1 carre noir N2 0 rmoveto % saut 1 carre noir + 1 carre blanc } repeat } def /Damier %% No parameters { 0 0 moveto 7 { % Répétition de 7 doubles lignes SeptCarresNB % Une ligne avec 1er N Square % et dernier carre noir N -14 mul 0 rmoveto % Repositionnement au debut de la ligne N N rmoveto % Une ligne avec 1er SeptCarresNB % et dernier carre blanc N -14 mul 0 rmoveto % Repositionnement au 1er carre noir Nmoins N rmoveto % Positionner au debut de la ligne au dessus } repeat SeptCarresNB % Une ligne avec 1er N Square % et dernier carre noir } def /HorizPetitsCarresQ1 { gsave 6 { VertLeft2SmallSquares % petits carrés bande horizontale 1er quadrant InvertColor N 0 rmoveto } repeat grestore } def /UneDiagPetitsCarres % _ n UneDiagPetitsCarres => _ { gsave { % le compte est sur la pile (index de for) Diag2SmallSquares N Nmoins rmoveto } repeat grestore } def %%----------------------------------- %%-- Debut des commandes de dessin -- %%----------------------------------- maxX idiv2 maxY idiv2 translate %% Origine au centre de la page CentreDamier neg dup translate %% Origine au coin gauche bas du damier BlackColor newpath % Fermé et rouvert par le 'fill' de 'Square' 0 0 moveto % Point gauche bas du damier Damier % Dessin du damier /Times-Roman findfont 12 scalefont setfont %%IncludeFont: Courier 0 -.7 cm moveto % Point gauche bas du damier moins 1 cm AuteurDessin show % Imprimer le nom de l'auteur 0 -1.4 cm moveto AuteurProgramme show CentreDamier dup translate %% Origine au centre du damier (milieu case noire centrale) 0 0 moveto 4 % Quatre quadrants { N idiv2 dup neg rmoveto % Coin bas droit carre central BlackColor HorizPetitsCarresQ1 0 N rmoveto % Angle haut droit du carre central 1 1 6 { % L'index est le nb de repeat de petits carrés diagonaux InvertColor UneDiagPetitsCarres 0 N rmoveto } for N2 N2 neg rmoveto % Ajout d'une diag White setgray % de 3 cases de petits carres blancs en diag 3 UneDiagPetitsCarres % en 4,2 (relativement coin droit carre central) 0 0 moveto 90 rotate %% Répéter pour les 4 quadrants... } repeat showpage %%EOF