(einstein) .dup .where (.pop .pop) (100 .dict .def) .ifelse .cvx .exec
einstein .begin

(#EI)
(.startpath
1	 	11		linepts
1	 	1		linepts
6.7 	1		linepts
7.3 	3		linepts
3 		3		linepts
3 		5		linepts
9 		5		linepts
9 		1		linepts
11	 	1		linepts
11 		11		linepts
9 		11		linepts
9 		7		linepts
3		7		linepts
3 		9		linepts
7.3		9		linepts
6.7		11		linepts
1 		11		linepts
linelast .drawarea) .cvx .def

(#N)
(.startpath
1		10.7	linepts
1		1		linepts
3		1		linepts
3		8		linepts
9		.7		linepts
11		1.3		linepts
11		11		linepts
9		11		linepts
9		4		linepts
3		11.3	linepts
1		10.7	linepts
linelast .drawarea) .cvx .def

(#S) 
(.startpath
1		10.7	.exch linepts
1		1		.exch linepts
3		1		.exch linepts
3		8		.exch linepts
9		.7		.exch linepts
11		1.3		.exch linepts
11		11		.exch linepts
9		11		.exch linepts
9		4		.exch linepts
3		11.3	.exch linepts
1		10.7	.exch linepts
linelast .drawarea) .cvx .def

(#T) 
(.startpath
12		1	 	.sub	11		.exch linepts
12		1	 	.sub	1		.exch linepts
12		6.7 	.sub	1		.exch linepts
12		7.3 	.sub	3		.exch linepts
12		3 		.sub	3		.exch linepts
12		3 		.sub	5		.exch linepts
12		9 		.sub	5		.exch linepts
12		9 		.sub	1		.exch linepts
12		11	 	.sub	1		.exch linepts
12		11 	.sub	11		.exch linepts
12		9 		.sub	11		.exch linepts
12		9 		.sub	7		.exch linepts
12		3		.sub	7		.exch linepts
12		3 		.sub	9		.exch linepts
12		7.3	.sub	9		.exch linepts
12		6.7	.sub	11		.exch linepts
12		1 		.sub	11		.exch linepts
linelast .drawarea) .cvx .def

(#EIX)
(.startpath
12		1	 	 .sub	11		linepts
12		1	 	 .sub	1		linepts
12		6.7 	 .sub	1		linepts
12		7.3 	 .sub	3		linepts
12		3 		 .sub	3		linepts
12		3 		 .sub	5		linepts
12		9 		 .sub	5		linepts
12		9 		 .sub	1		linepts
12		11	 	 .sub	1		linepts
12		11 	 .sub		11		linepts
12		9 		 .sub	11		linepts
12		9 		 .sub	7		linepts
12		3		 .sub	7		linepts
12		3 		 .sub	9		linepts
12		7.3	 .sub		9		linepts
12		6.7	 .sub		11		linepts
12		1 		 .sub	11		linepts
linelast .drawarea) .cvx .def

(#NX)
(.startpath
12		1		 .sub	10.7	linepts
12		1		 .sub	1		linepts
12		3		 .sub	1		linepts
12		3		 .sub	8		linepts
12		9		 .sub	.7		linepts
12		11		 .sub	1.3	linepts
12		11		 .sub	11		linepts
12		9		 .sub	11		linepts
12		9		 .sub	4		linepts
12		3		 .sub	11.3	linepts
12		1		 .sub	10.7	linepts
linelast .drawarea) .cvx .def

(#SX) 
(.startpath
1		12		10.7	.sub		.exch linepts
1		12		1		.sub		.exch linepts
3		12		1		.sub		.exch linepts
3		12		8		.sub		.exch linepts
9		12		.7		.sub		.exch linepts
11		12		1.3	.sub		.exch linepts
11		12		11		.sub		.exch linepts
9		12		11		.sub		.exch linepts
9		12		4		.sub		.exch linepts
3		12		11.3	.sub		.exch linepts
1		12		10.7	.sub		.exch linepts
linelast .drawarea) .cvx .def

(#TY) 
(.startpath
1	 	  	12		11		.sub .exch	linepts
1	 	  	12		1		.sub .exch	linepts
6.7 	  	12		1		.sub .exch	linepts
7.3 	  	12		3		.sub .exch	linepts
3 		  	12		3		.sub .exch	linepts
3 		  	12		5		.sub .exch	linepts
9 		  	12		5		.sub .exch	linepts
9 		  	12		1		.sub .exch	linepts
11	 	  	12		1		.sub .exch	linepts
11 	  	12		11		.sub .exch	linepts
9 		  	12		11		.sub .exch	linepts
9 		  	12		7		.sub .exch	linepts
3		  	12		7		.sub .exch	linepts
3 		  	12		9		.sub .exch	linepts
7.3	  	12		9		.sub .exch	linepts
6.7	  	12		11		.sub .exch	linepts
1 		  	12		11		.sub .exch	linepts
linelast .drawarea) .cvx .def

(#EINST)
(.pushdc
#T		0 11 .translate
#EIX		0 11 .translate
#NX		0 11 .translate
#SX		11 0 .translate
#NX		0 -11 .translate
#SX		0 -11 .translate
#TY		11 0 .translate
#S		11 0 .translate
#N		0 -11 .translate
#S		-11 0 .translate
#N		-11 0 .translate
#EI
.popdc) .cvx .def

(#x) (#EINST	44 0 .translate (x).print) .cvx .def
(#y) (#EINST	0 44 .translate (y).print ).cvx .def

(#EINSTEIN)
(4 3dxrotate -5 3dyrotate .pushdc
.pushdc #x #x #x #x #x #x .popdc	#y
.pushdc #x #x #x #x #x #x .popdc	#y
.pushdc #x #x #x #x #x #x .popdc	#y
.popdc) .cvx .def

(latitudinalextent) 264. .def
(longitudinalextent) 132. .def


(linepts)
(!flfrst 
((!flfy) .exch .def 
 (!flfx) .exch .def
 (!flnx) !flfx .def
 (!flny) !flfy .def (!flfrst) .false .def)
((!floy) !flny .def
 (!flox) !flnx .def
 (!flny) .exch .def
 (!flnx) .exch .def
 (!fldx) !flnx !flox .sub !flnc .div .def
 (!fldy) !flny !floy .sub !flnc .div .def
 !flox !floy !flnc .cvi ( 2 .copy transform .enterpoint !fldx !fldy v2add).cvx .rept .pop .pop)/ifelse).cvx .def

(linelast)
((!floy) !flny .def
 (!flox) !flnx .def
 (!fldx) !flfx !flox .sub !flnc .div .def
 (!fldy) !flfy !floy .sub !flnc .div .def
 !flox !floy !flnc .cvi ( 2 .copy transform .enterpoint !fldx !fldy v2add).cvx .rept .pop .pop (!flfrst) .true .def).cvx .def

(!flnc) 3. .def
(white)(0 0 255) .cvx .def
(black)(0 0 0) .cvx .def


(.translate)((!ty) .exch !ty .add .def (!tx) .exch !tx .add .def).cvx .def

(.pushdc)(!stk !ix .aget .dup 0 !tx .aput  1 !ty .aput (!ix) !ix 1 .add .def !stk !ix .aget .dup 0 !tx .aput  1 !ty .aput).cvx .def

(.popdc)( (!ix) !ix 1 .sub .def !stk !ix .aget .cvx .exec (!ty) .exch .def (!tx) .exch .def).cvx .def
 
(transform)((!yy) .exch !ty .add  .def (!xx) .exch !tx .add  .def 
!sr 
!xx !sclx .mul .sin 
!yy !scly .mul .cos .mul .mul
!sr 
!xx !sclx .mul  .cos 
!yy !scly  .mul 5. .add .cos .mul .mul
!sr 
!yy !scly .mul .sin .mul 3dtransform 3dPersp).cvx .def

(einsteininit)((!ix) 0 .def
(!hght) 300 3 .5 .exp .mul 100 .add .def
(!stk) .dup .where (.pop .pop) 
	( [
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		[ 0 0 ]
		]  .def) .ifelse .cvx .exec
(!sclx) 360 latitudinalextent .div .def
(!scly) 79 longitudinalextent .div .def
(!flfrst) .true .def
(!sr) 300 .def
(!tx) 0 .def
(!ty) 0 .def
).cvx .def
einsteininit
.end