cosic.rescue
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

f8_14.ps
application/postscript

Download raw (12.5 KB)

%!PS-Adobe-3.0
%
% ********************************************************************************
%
% Figure 8.14 from the book: "The Theory of the Moire Phenomenon"
% by I. Amidror, published by Kluwer Academic Publishers, 1999.
%
%		* * *  Copyright (c) 1999 EPFL  * * *
%
% Author: I. Amidror
%
% Modified: June 9, 1999
%
% ********************************************************************************
%
% (a) ... (f): Superpositions of 2 or 3 dot-screens:
%
% The screen parameters for each superposition are as follows:
% 
% theta1, theta2, theta3 - the screen angles, in degrees.
% p1, p2, p3 - the respective screen periods (main direction), in deciinches.
% p1y, p2y, p3y - the respective screen periods (perpendicular direction), in 
%	deciinches.
% xshifti, yshifti - the respective period-shifts for the i-th screen, in terms
%	of period fractions.
% len - the length (and width) of each of the screens, in centiinches.
%
% ********************************************************************************
%


/inch {72 mul} def
/centiinch {0.72 mul} def
1 centiinch setlinewidth


1 setlinecap


/len 180 def		% screen length in centiinches
/len2 len 2 div def


/Helvetica findfont
10 scalefont setfont


gsave
1.65 inch 7 inch translate


% ********************************** Fig. (a):

/theta1 30 def		% angle of screen A
/theta2 -30 def		% angle of screen B

/rot 0 def		% general rotation to prevent printer artifacts

/p1 3 def		% period of screen A
/p2 3 def		% period of screen B

/p1y 3 def		% period of screen A (in the perpendicular direction)
/p2y 3 def		% period of screen B (in the perpendicular direction)

/xshift1 0 p1 mul def		% x period-shift of screen A (e.g. 0.5)
/yshift1 0 p1y mul def		% y period-shift of screen A (e.g. 0.5)
/xshift2 0 p2 mul def		% x period-shift of screen B
/yshift2 0 p2y mul def		% y period-shift of screen B


% Draw screen A:
gsave
1 inch 2.5 inch translate
theta1 rot add rotate
0 p1y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p1y div round p1y mul yshift1 sub centiinch sub def
	0 p1 len		% draw a row of dots
	{centiinch len2 p1 div round p1 mul xshift1 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(A) show
grestore


% Draw screen B:
gsave
1 inch 2.5 inch translate
theta2 rot add rotate
0 p2y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p2y div round p2y mul yshift2 sub centiinch sub def
	0 p2 len		% draw a row of dots
	{centiinch len2 p2 div round p2 mul xshift2 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(B) show
grestore




% ********************************** Fig. (b):

/theta1 30 def		% angle of screen A
/theta2 -30 def		% angle of screen B

/rot 0 def		% general rotation to prevent printer artifacts

/p1 3 def		% period of screen A
/p2 3 def		% period of screen B

/p1y 3 def		% period of screen A (in the perpendicular direction)
/p2y 3 def		% period of screen B (in the perpendicular direction)

/xshift1 0.5 p1 mul def		% x period-shift of screen A (e.g. 0.5)
/yshift1 0.5 p1y mul def	% y period-shift of screen A (e.g. 0.5)
/xshift2 0.5 p2 mul def		% x period-shift of screen B
/yshift2 0.5 p2y mul def	% y period-shift of screen B


% Draw screen A:
gsave
4 inch 2.5 inch translate
theta1 rot add rotate
0 p1y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p1y div round p1y mul yshift1 sub centiinch sub def
	0 p1 len		% draw a row of dots
	{centiinch len2 p1 div round p1 mul xshift1 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(A) show
grestore


% Draw screen B:
gsave
4 inch 2.5 inch translate
theta2 rot add rotate
0 p2y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p2y div round p2y mul yshift2 sub centiinch sub def
	0 p2 len		% draw a row of dots
	{centiinch len2 p2 div round p2 mul xshift2 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(B) show
grestore



grestore
gsave
1.65 inch 4.2 inch translate


% ********************************** Fig. (c):

/theta1 30 def		% angle of screen A
/theta2 -30 def		% angle of screen B
/theta3 0 def		% angle of screen C

/rot 0 def		% general rotation to prevent printer artifacts

/p1 3 def		% period of screen A
/p2 3 def		% period of screen B
/p3 3 def		% period of screen C

/p1y 3 def		% period of screen A (in the perpendicular direction)
/p2y 3 def		% period of screen B (in the perpendicular direction)
/p3y 3 def		% period of screen C (in the perpendicular direction)

/xshift1 0 p1 mul def		% x period-shift of screen A (e.g. 0.5)
/yshift1 0 p1y mul def		% y period-shift of screen A (e.g. 0.5)
/xshift2 0 p2 mul def		% x period-shift of screen B
/yshift2 0 p2y mul def		% y period-shift of screen B
/xshift3 0 p3 mul def		% x period-shift of screen C
/yshift3 0 p3y mul def		% y period-shift of screen C


% Draw screen A:
gsave
1 inch 2.5 inch translate
theta1 rot add rotate
0 p1y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p1y div round p1y mul yshift1 sub centiinch sub def
	0 p1 len		% draw a row of dots
	{centiinch len2 p1 div round p1 mul xshift1 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(A) show
grestore


% draw second dot lattice:
gsave
1 inch 2.5 inch translate
theta2 rot add rotate
0 p2y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p2y div round p2y mul yshift2 sub centiinch sub def
	0 p2 len		% draw a row of dots
	{centiinch len2 p2 div round p2 mul xshift2 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(B) show
grestore



% draw third dot lattice:
gsave
1 inch 2.5 inch translate
theta3 rot add rotate
0 p3y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p3y div round p3y mul yshift3 sub centiinch sub def
	0 p3 len		% draw a row of dots
	{centiinch len2 p3 div round p3 mul xshift3 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(C) show
grestore



% ********************************** Fig. (d):

/theta1 30 def		% angle of screen A
/theta2 -30 def		% angle of screen B
/theta3 0 def		% angle of screen C

/rot 0 def		% general rotation to prevent printer artifacts

/p1 3 def		% period of screen A
/p2 3 def		% period of screen B
/p3 3 def		% period of screen C

/p1y 3 def		% period of screen A (in the perpendicular direction)
/p2y 3 def		% period of screen B (in the perpendicular direction)
/p3y 3 def		% period of screen C (in the perpendicular direction)

/xshift1 0 p1 mul def		% x period-shift of screen A (e.g. 0.5)
/yshift1 0 p1y mul def		% y period-shift of screen A (e.g. 0.5)
/xshift2 0 p2 mul def		% x period-shift of screen B
/yshift2 0 p2y mul def		% y period-shift of screen B
/xshift3 0.5 p3 mul def		% x period-shift of screen C
/yshift3 0.5 p3y mul def	% y period-shift of screen C


% Draw screen A:
gsave
4 inch 2.5 inch translate
theta1 rot add rotate
0 p1y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p1y div round p1y mul yshift1 sub centiinch sub def
	0 p1 len		% draw a row of dots
	{centiinch len2 p1 div round p1 mul xshift1 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(A) show
grestore


% Draw screen B:
gsave
4 inch 2.5 inch translate
theta2 rot add rotate
0 p2y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p2y div round p2y mul yshift2 sub centiinch sub def
	0 p2 len		% draw a row of dots
	{centiinch len2 p2 div round p2 mul xshift2 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(B) show
grestore



% Draw screen C:
gsave
4 inch 2.5 inch translate
theta3 rot add rotate
0 p3y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p3y div round p3y mul yshift3 sub centiinch sub def
	0 p3 len		% draw a row of dots
	{centiinch len2 p3 div round p3 mul xshift3 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(C) show
grestore


grestore
gsave
1.65 inch 1.4 inch translate



% ********************************** Fig. (e):

/theta1 30 def		% angle of screen A
/theta2 -30 def		% angle of screen B
/theta3 0 def		% angle of screen C

/rot 0 def		% general rotation to prevent printer artifacts

/p1 3 def		% period of screen A
/p2 3 def		% period of screen B
/p3 3 def		% period of screen C

/p1y 3 def		% period of screen A (in the perpendicular direction)
/p2y 3 def		% period of screen B (in the perpendicular direction)
/p3y 3 def		% period of screen C (in the perpendicular direction)

/xshift1 0.5 p1 mul def		% x period-shift of screen A (e.g. 0.5)
/yshift1 0.5 p1y mul def	% y period-shift of screen A (e.g. 0.5)
/xshift2 0.5 p2 mul def		% x period-shift of screen B
/yshift2 0.5 p2y mul def	% y period-shift of screen B
/xshift3 0.5 p3 mul def		% x period-shift of screen C
/yshift3 0.5 p3y mul def	% y period-shift of screen C


% Draw screen A:
gsave
1 inch 2.5 inch translate
theta1 rot add rotate
0 p1y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p1y div round p1y mul yshift1 sub centiinch sub def
	0 p1 len		% draw a row of dots
	{centiinch len2 p1 div round p1 mul xshift1 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(A) show
grestore


% Draw screen B:
gsave
1 inch 2.5 inch translate
theta2 rot add rotate
0 p2y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p2y div round p2y mul yshift2 sub centiinch sub def
	0 p2 len		% draw a row of dots
	{centiinch len2 p2 div round p2 mul xshift2 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(B) show
grestore



% Draw screen C:
gsave
1 inch 2.5 inch translate
theta3 rot add rotate
0 p3y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p3y div round p3y mul yshift3 sub centiinch sub def
	0 p3 len		% draw a row of dots
	{centiinch len2 p3 div round p3 mul xshift3 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(C) show
grestore



% ********************************** Fig. (f):

/theta1 30 def		% angle of screen A
/theta2 -30 def		% angle of screen B
/theta3 0 def		% angle of screen C

/rot 0 def		% general rotation to prevent printer artifacts

/p1 3 def		% period of screen A
/p2 3 def		% period of screen B
/p3 3 def		% period of screen C

/p1y 3 def		% period of screen A (in the perpendicular direction)
/p2y 3 def		% period of screen B (in the perpendicular direction)
/p3y 3 def		% period of screen C (in the perpendicular direction)

/xshift1 0 p1 mul def		% x period-shift of screen A (e.g. 0.5)
/yshift1 0 p1y mul def		% y period-shift of screen A (e.g. 0.5)
/xshift2 0 p2 mul def		% x period-shift of screen B
/yshift2 0 p2y mul def		% y period-shift of screen B
/xshift3 0.5 p3 mul def		% x period-shift of screen C
/yshift3 0 p3y mul def		% y period-shift of screen C


% Draw screen A:
gsave
4 inch 2.5 inch translate
theta1 rot add rotate
0 p1y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p1y div round p1y mul yshift1 sub centiinch sub def
	0 p1 len		% draw a row of dots
	{centiinch len2 p1 div round p1 mul xshift1 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(A) show
grestore


% Draw screen B:
gsave
4 inch 2.5 inch translate
theta2 rot add rotate
0 p2y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p2y div round p2y mul yshift2 sub centiinch sub def
	0 p2 len		% draw a row of dots
	{centiinch len2 p2 div round p2 mul xshift2 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(B) show
grestore



% Draw screen C:
gsave
4 inch 2.5 inch translate
theta3 rot add rotate
0 p3y len		% draw rows of dots
{newpath
	/ysave exch centiinch len2 p3y div round p3y mul yshift3 sub centiinch sub def
	0 p3 len		% draw a row of dots
	{centiinch len2 p3 div round p3 mul xshift3 sub centiinch sub ysave moveto
	0 0 rlineto} for
	stroke
} for
-1.05 inch 0.8 inch moveto
(C) show
grestore

grestore



/Times-Roman findfont
12 scalefont setfont

0 0 translate
1.5 inch 8.3 inch moveto
((a)) show
4.5 inch 8.3 inch moveto
((b)) show
1.5 inch 5.5 inch moveto
((c)) show
4.5 inch 5.5 inch moveto
((d)) show
1.5 inch 2.7 inch moveto
((e)) show
4.5 inch 2.7 inch moveto
((f)) show



gsave
1.95 inch 1.7 inch translate
0 inch 0 inch moveto
/Times-Bold findfont
12 scalefont setfont
(Figure 8.14) show
/Times-Roman findfont
12 scalefont setfont
(  from the book:  ) show
/Times-Italic findfont
12 scalefont setfont
(The Theory of the Moire) show
-0.06 inch 0 inch rmoveto
(\302 Phenomenon) show
/Times-Roman findfont
12 scalefont setfont
0 inch -0.25 inch moveto
(    by I. Amidror, published by Kluwer Academic Publishers, 1999.) show
grestore


showpage