%%Missile File : J.Ph Chancelier 1991
%%EndComments

/saved save def 
/$pictdict 100 dict def
$pictdict begin

/dogrey
{ /Arraybox exch def
	/Arraygrey exch def
	/nargs exch def 
	/func exch cvx def
	Arraybox 0 nargs getinterval Arraygrey 0 get func 
	1 1 Arraygrey length 1 sub 
	{/i exch def
	Arraybox i nargs mul nargs getinterval 
	Arraygrey i get func
	}for
} def
%--------------------------------------------
% [x y width height] nivgris drawbox 
% si niv gris > 1.0 alors on fait un stroke 
% sans closepath 
%--------------------------------------------
/drawbox 
	{/glev exch def /Ar exch def 
	/x Ar 0 get def /y Ar 1 get def 
	/w Ar 2 get def /h Ar 3 get def 
	newpath
	x y moveto
	x w add y lineto
	x w add y h add lineto
	x y h add lineto
	glev WhiteLev le {closepath glev Setgray eofill}
	{ 0 Setgray closepath stroke} ifelse 
} def 



%------------------------------------------------------
% trace de polygones rempli ou de polylignes 
%------------------------------------------------------
/absolu true def 
/closeflag false def 

/drawpoly
	{/glev exch def /Ar exch def
	newpath
	Ar 0 get Ar 1 get moveto 
	2 2 Ar length 1 sub 
	{/i exch def
	Ar i get Ar i 1 add get absolu {lineto} {rlineto} ifelse
	}for
	glev WhiteLev le 
	{ % polygone ferme et gris
	  closepath glev Setgray eofill}
	{ glev WhiteLev 2 add ge 
	   {%polygone ferme dont on efface l'interieur 
		%(peint avec un niveau de gris en blanc)
	    closepath WhiteLev 2 mul 2 add glev sub Setgray 
		  gsave eofill grestore 
	    0 Setgray stroke}
	   {%polygone simple eventuellement ferme
	    0 Setgray closeflag {closepath} if stroke} 
	ifelse }
	ifelse 
} def 


%------------------------------------------------------
% segments non connectes 
%------------------------------------------------------

/drawsegs
	{/glev exch def /Ar exch def
	newpath
	Ar 0 get Ar 1 get moveto Ar 2 get Ar 3 get lineto stroke 
	4 4 Ar length 3 sub 
	{/i exch def
	newpath 
	Ar i get Ar i 1 add get moveto
	Ar i 2 add get Ar i 3 add get lineto stroke 
	}for
} def 


%------------------------------------------------------
% unconected arrows
%-----------------------------------------------------

/drawarrows
	{/arsize10 exch def /Ar exch def
	Ar 0 get  Ar 1 get Ar 2 get Ar 3 get arsize10 drawarrow
	4 4 Ar length 3 sub 
	{/i exch def
	Ar i get Ar i 1 add get  Ar i 2 add get  Ar i 3 add get arsize10 
	drawarrow
	}for
} def 
		
/cos20 20 cos def
/sin20 20 sin def

/drawarrow                                
  { 
      /arsize exch 10 div def 
      /tipy exch def /tipx exch def       
      /taily exch def /tailx exch def
      /dx tipx tailx sub  def               
      /dy tipy taily sub  def               
      newpath tipx tipy moveto tailx taily lineto stroke   
      /norme dx dx mul dy dy mul add sqrt def 
      norme 1.e-8 ge 
	{
	 arsize dx mul norme div /dx1 exch def 
	 arsize dy mul norme div /dy1 exch def 
	 /depx tipx cos20 dx1 mul add def 
	/depy  tipy cos20 dy1 mul add def 
	newpath depx depy moveto 
	cos20 neg dx1 mul sin20 dy1 mul sub depx add
	sin20 dx1  mul cos20 dy1 mul sub depy add lineto 
	cos20 neg dx1 mul sin20 dy1 mul add  depx add
	sin20 neg dx1 mul cos20 dy1 mul sub depy add lineto closepath 
	0 setgray fill
	} {} ifelse 
  } def


%------------------------------------------------------
% cercle ou portions de cercle 
% attention argument (x y w h angl1*64 angl2*64 )
% devrait tracer une ellipse a modifier donc 
%------------------------------------------------------

/drawarc
	{/glev exch def /Ar exch def
	/cx Ar 0 get Ar 2 get 2 div add def 
	/cy Ar 1 get Ar 3 get 2 div add def 
	/hom Ar 3 get Ar 2 get div def 
	/Cmsave1 matrix def Cmsave1 currentmatrix 
	%-- on change de transformation pour faire homothetie en (x,y) 
	cx cy [1 0 0 hom 0 0 ] transform
	/t1 exch neg cy add def 
	/t2 exch neg cx add def 
	[1 0 0 hom t2 t1 ] concat 
	glev WhiteLev le
	{newpath
	cx cy moveto 
	cx cy Ar 2 get 2 div Ar 5 get 64 div neg
	 Ar 4 get 64 div neg  arc closepath
	glev Setgray eofill}
	{newpath
	cx cy Ar 2 get 2 div Ar 5 get 64 div neg Ar 4 get 64 div neg arc
	closepath 0 Setgray stroke} ifelse 
	Cmsave1 setmatrix clear} def 

%------------------------------------------------------
% centred hard mark 
%------------------------------------------------------

% x y str ShowCString 
% on fait un show mais string est centre autour du point (x,y) 

/ShowCString { /str exch def /y exch def /x exch def 
 newpath 
 x y moveto 
 str true charpath flattenpath pathbbox 
 /y2 exch def /x2 exch def /y1 exch def /x1 exch def 
 x 2 mul x2 x1 add 2 div sub 
 y 2 mul y2 y1 add 2 div sub moveto str show 
 } def 

/drawpolymark {/glev exch def /Ar exch def 
	Ar 0 get Ar 1 get HardMark ShowCString 
	2 2 Ar length 1 sub 
	{/i exch def
	Ar i get Ar i 1 add get HardMark ShowCString
	}for
} def 

%---------------------------------------------------
% chaines de caracteres 
%---------------------------------------------------
/FBox {/Ar exch def /rot exch def /str exch def /y exch def /x exch def 
 newpath Ar 0 get Ar 1 get moveto 
	/sina rot sin def /cosa rot cos def 
	/-sina sina neg def 
	[cosa -sina sina cosa 0 0 ] CtmModif
 Ar 2 get 0 rlineto 0 Ar 3 get neg rlineto Ar 2 get neg 0 rlineto 
 0 Ar 3 get  rlineto  stroke CtmRestore 
 x y str rot ShowRotate 
 } def 

% x y str ang Showrotate 
% inverse du sens trigo 

/ShowRotate { /ang exch def /str exch def 
	/y exch def /x exch def 
	x y moveto 
	/sina ang sin def /cosa ang cos def 
	/-sina 0 sina sub def 
	[cosa -sina sina cosa 0 0 ] CtmModif
	str show CtmRestore } def 

/HardMark (0) def 

%(Chaine de caracteres) x y flag angle [arfbox] Show

/Show { /Ar exch def 
	/rot exch def /flag exch def /y exch def /x exch def /str exch def 
	flag 1 eq 
	{x y str rot Ar FBox}
	{x y str rot ShowRotate } ifelse} def 

/L {/y2 exch def /x2 exch def /y1 exch def /x1 exch def 
    newpath x1 y1 moveto x2 y2 lineto stroke } def 

%---------------------------------------------------------
% drawing an axis 
% angle [nsep1,nsep2] ,[siz1,siz2,coeff] [x0,y0] drawaxis",
%---------------------------------------------------------

/drawaxis {/XX exch def /Arsize exch def /Arsep exch def /ang exch def 
	/Cmsave1 matrix def Cmsave1 currentmatrix 
	/sina ang sin def /cosa ang cos def /-sina sina neg def 
	/x XX 0 get def /y XX 1 get def
	%-- on change de transformation pour tourner autour de (x,y) 
	x y [cosa sina -sina cosa 0 0 ] transform
	/t1 exch neg y add def 
	/t2 exch neg x add def 
	[cosa sina -sina cosa t2 t1 ] concat 
	newpath x y moveto 0 Arsize 1 get Arsize 2 get mul rlineto
	stroke 
	0 1 Arsep 1 get 1 sub
	{newpath 
	x y moveto 
	0 1 Arsep 0 get 1 sub
		{Arsize 0 get 0  rlineto
		 0 Arsize 1 get rlineto 
	 	0 Arsize 1 get  neg rlineto}
		for 
	currentpoint /y exch def /x exch def 
	stroke 
	newpath x y moveto 0 Arsize 1 get Arsize 2 get mul rlineto
	stroke }
	for 
	Cmsave1 setmatrix } def 



%---------------------------------------------------------
% change and restore CTM
%---------------------------------------------------------

/CtmModif {/arg exch def 
	/Cmsave matrix def 
	Cmsave currentmatrix 
	[1 0 0 -1 0 0 ] concat 
	arg concat } def 

/CtmRestore { Cmsave setmatrix } def 

/Thickness { 2 div /th exch def th 0 le {/th 0.1 def} if th setlinewidth} def 

/WhiteLev 15 def

/Setgray { WhiteLev div setgray} def 

/fillsolid { 0 setgray } def 

%--------------------------------------
% clip zones ( rectangle ) 
%-------------------------------------

/setclipzone {initclip 
	/h exch def /w exch def /y exch def /x exch def 
	newpath x y moveto w 0 rlineto 0 h rlineto w neg 0 rlineto 
	0 h neg rlineto closepath clip} def 

%------------------
% to change the position of a picture 
%------------------
/cm{28.346457 mul}def

/DesPosi { /YH exch def /XW exch def /YP exch def /XP exch def 
	XP cm YP cm neg translate 
	XW cm 6000 div YH cm 4240 div  scale } def 

0 setlinecap 
2 setlinejoin 
1 setlinewidth

%-- Color database 
/ColorR [0.000000 0.000000 0.000000 0.529412 0.498039 0.133333 0.000000 0.878431 0.000000 1.000000 1.000000 1.000000 0.933333 1.000000 1.000000 0.960784 1.000000 ] def
/ColorG [0.000000 0.000000 0.000000 0.807843 1.000000 0.545098 1.000000 1.000000 1.000000 0.647059 0.000000 0.000000 0.509804 1.000000 0.843137 0.960784 1.000000 ] def
/ColorB [0.000000 0.501961 1.000000 0.921569 0.831373 0.133333 0.000000 1.000000 1.000000 0.000000 0.000000 1.000000 0.933333 0.000000 0.000000 0.862745 1.000000 ] def

/Setcolor {/i exch def ColorR i get ColorG i get ColorB i get setrgbcolor } def 

%------ End Main Program ------%
% XP YP XW YW DesPosi in the following code 
% will output the picture in the rectangle defined by 
% upper left point (XP,YP) wide :XW Height: YW
% the coordinates are given in centimeter and 
% are the (0,0) point is the down-left point of the paper 


% Dessin en bas a gauche de taille 3000,2120
[0.5 10 div 0 0 0.5 10 div neg  0 2120 10 div] concat
0 Thickness
% 3 setalufunction
-1 -1 200000 200000 setclipzone
[] 0 setdash
/Times-Roman findfont 100 scalefont setfont
fillsolid
/WhiteLev 16 def
/localsave save def 
clear (drawbox) 4 [ 17]
[750 530 4500 3180 
] dogrey localsave restore
fillsolid
 0 [2 10] [225.000000 31.800000 2.000000] [750 3710] drawaxis
(0.00) 636 3906 0  0.00 [636 3816 229 120] Show
(0.05) 1086 3906 0  0.00 [1086 3816 229 120] Show
(0.10) 1536 3906 0  0.00 [1536 3816 229 120] Show
(0.15) 1986 3906 0  0.00 [1986 3816 229 120] Show
(0.20) 2436 3906 0  0.00 [2436 3816 229 120] Show
(0.25) 2886 3906 0  0.00 [2886 3816 229 120] Show
(0.30) 3336 3906 0  0.00 [3336 3816 229 120] Show
(0.35) 3786 3906 0  0.00 [3786 3816 229 120] Show
(0.40) 4236 3906 0  0.00 [4236 3816 229 120] Show
(0.45) 4686 3906 0  0.00 [4686 3816 229 120] Show
(0.50) 5136 3906 0  0.00 [5136 3816 229 120] Show
 -90 [2 10] [159.000000 -30.000000 2.000000] [750 3710] drawaxis
(0.00) 449 3740 0  0.00 [449 3650 229 120] Show
(0.11) 449 3422 0  0.00 [449 3332 229 120] Show
(0.21) 449 3104 0  0.00 [449 3014 229 120] Show
(0.32) 449 2786 0  0.00 [449 2696 229 120] Show
(0.43) 449 2468 0  0.00 [449 2378 229 120] Show
(0.53) 449 2150 0  0.00 [449 2060 229 120] Show
(0.64) 449 1832 0  0.00 [449 1742 229 120] Show
(0.74) 449 1514 0  0.00 [449 1424 229 120] Show
(0.85) 449 1196 0  0.00 [449 1106 229 120] Show
(0.95) 449 878 0  0.00 [449 788 229 120] Show
(1.06) 449 560 0  0.00 [449 470 229 120] Show
750 530 4500 3180 setclipzone
[] 0 setdash
/closeflag false def
/localsave save def 
clear (drawpoly) 312 [ 17]
[750 3655 779 3650 808 3637 837 3617 866 3594 895 3570 924 3551 953 3539 982 3538 1011 3549 
1040 3573 1069 3610 1098 3656 1127 3708 1156 3674 1185 3624 1215 3582 1244 3552 1273 3538 1302 3540 
1331 3561 1360 3596 1389 3644 1418 3699 1447 3680 1476 3626 1505 3582 1534 3551 1563 3537 1592 3542 
1621 3564 1650 3603 1679 3653 1708 3710 1737 3668 1766 3615 1795 3573 1824 3546 1853 3537 1882 3546 
1911 3574 1940 3618 1969 3671 1998 3706 2027 3648 2056 3598 2085 3560 2115 3540 2144 3538 2173 3556 
2202 3592 2231 3641 2260 3699 2289 3677 2318 3621 2347 3576 2376 3547 2405 3536 2434 3547 2463 3577 
2492 3623 2521 3680 2550 3693 2579 3634 2608 3584 2637 3550 2666 3537 2695 3547 2724 3579 2753 3632 
2782 3697 2811 3669 2840 3604 2869 3556 2898 3536 2927 3554 2956 3618 2985 3704 3015 3537 3044 3319 
3073 3057 3102 2760 3131 2439 3160 2109 3189 1783 3218 1475 3247 1199 3276 965 3305 779 3334 646 
3363 564 3392 531 3421 539 3450 578 3479 638 3508 708 3537 776 3566 833 3595 873 3624 891 
3653 886 3682 859 3711 813 3740 756 3769 693 3798 633 3827 582 3856 547 3885 530 3915 534 
3944 558 3973 599 4002 652 4031 712 4060 772 4089 824 4118 865 4147 888 4176 892 4205 876 
4234 842 4263 794 4292 737 4321 677 4350 621 4379 575 4408 544 4437 530 4466 536 4495 560 
4524 601 4553 654 4582 712 4611 770 4640 822 4669 863 4698 887 4727 892 4756 878 4785 846 
4815 800 4844 745 4873 686 4902 629 4931 582 4960 548 4989 531 5018 533 5047 554 5076 592 
5105 642 5134 700 5163 758 5192 812 5221 855 5250 883 
] dogrey localsave restore
fillsolid
/absolu true def
[] 0 setdash
-1 -1 200000 200000 setclipzone
 showpage

 clear end saved restore 
