| Refresh | Home EGTry.com

find and draw the bounding box of polygon shape


bounding bounding

bounding.ps

%!


%find bounding box of polygon


%find a bounding box of polygon
%arguments:  array of points
%return: array of [Xmin Ymin Xmax Ymax]
/FindBounding {
				10 dict begin
%store whole array
  /A exch store

%number of point
/NPoint A length 2 idiv store

%first point 
/Xmin A 0  get store
/Xmax Xmin store
/Ymin A 1  get store
/Ymax Ymin store

1 1 NPoint 1 sub {
				/Index exch 2 mul store
				 /X A Index get store
				 /Y A Index 1 add get store

				Xmin X gt {/Xmin X store} if
				Xmax X lt {/Xmax X store} if
				Ymin Y gt {/Ymin Y store} if
				Ymax Y lt {/Ymax Y store} if
} for
/Return [Xmin Ymin Xmax Ymax] store
Return
end
} def



%draw a polygon
%arguments:  array of points
/Polygon {
				10 dict begin
%store whole array
  /A exch store

%number of point
/NPoint A length 2 idiv store

%first point 
 A 0  get 
 A 1  get
 moveto

1 1 NPoint 1 sub {
				/Index exch 2 mul store
				  A Index get  % x
				  A Index 1 add get  %y
					lineto
} for
closepath
stroke
end
} def



%draw a square. 
%arg: [xmin ymin xmax ymax]
/Square {
newpath
dup dup 0 get exch 1 get moveto
dup dup 2 get exch 1 get lineto
dup dup 2 get exch 3 get lineto
dup dup 0 get exch 3 get lineto
dup dup 0 get exch 1 get lineto
closepath
stroke
} def

/Points [2 3  40 50  10 100  220 20   20 60   60 10] store

Points Polygon

Points FindBounding
Square


showpage