1*3e12c5d1SDavid du Colombier/LOGO-dict-mm dup where not 2*3e12c5d1SDavid du Colombier{ dup 64 dict def currentdict } if 3*3e12c5d1SDavid du Colombierexch get 4*3e12c5d1SDavid du Colombierbegin 5*3e12c5d1SDavid du Colombier/globesetup { 6*3e12c5d1SDavid du Colombier/r exch def 7*3e12c5d1SDavid du Colombier/N exch def 8*3e12c5d1SDavid du Colombier/d 2 N r mul N 1 sub add div def 9*3e12c5d1SDavid du Colombier/h d r mul def 10*3e12c5d1SDavid du Colombier} def 11*3e12c5d1SDavid du Colombier/mkabs { 12*3e12c5d1SDavid du Colombier/yp exch def 13*3e12c5d1SDavid du Colombier/xl exch def 14*3e12c5d1SDavid du Colombierdup dup 0 get xl mul 0 exch put 15*3e12c5d1SDavid du Colombierdup dup 1 get h mul yp add 1 exch put 16*3e12c5d1SDavid du Colombierdup dup 2 get xl mul 2 exch put 17*3e12c5d1SDavid du Colombierdup dup 3 get h mul yp add 3 exch put 18*3e12c5d1SDavid du Colombierdup dup 4 get xl mul 4 exch put 19*3e12c5d1SDavid du Colombierdup dup 5 get h mul yp add 5 exch put 20*3e12c5d1SDavid du Colombier} def 21*3e12c5d1SDavid du Colombier/topsegment { 22*3e12c5d1SDavid du Colombier/n exch def 23*3e12c5d1SDavid du Colombier/y n r mul n .5 add add d mul def 24*3e12c5d1SDavid du Colombier/a y 1 y dup mul sub sqrt atan def 25*3e12c5d1SDavid du Colombier/x a cos def 26*3e12c5d1SDavid du Colombier/c2 exch x y mkabs def 27*3e12c5d1SDavid du Colombier/ly1 exch h mul y add def 28*3e12c5d1SDavid du Colombier/lx1 exch x abs mul def 29*3e12c5d1SDavid du Colombier/c1 exch x y mkabs def 30*3e12c5d1SDavid du Colombierx y /moveto load 31*3e12c5d1SDavid du Colombier0 0 1 a 180 a sub /arc load 32*3e12c5d1SDavid du Colombierc1 aload pop /curveto load 33*3e12c5d1SDavid du Colombierlx1 ly1 /lineto load 34*3e12c5d1SDavid du Colombierc2 aload pop /curveto load 35*3e12c5d1SDavid du Colombier/closepath load 36*3e12c5d1SDavid du Colombier} def 37*3e12c5d1SDavid du Colombier/botsegment { 38*3e12c5d1SDavid du Colombier/n exch 1 add def 39*3e12c5d1SDavid du Colombier/y n r mul n .5 sub add d mul def 40*3e12c5d1SDavid du Colombier/a y 1 y dup mul sub sqrt atan def 41*3e12c5d1SDavid du Colombier/x a cos def 42*3e12c5d1SDavid du Colombier/c2 exch x y mkabs def 43*3e12c5d1SDavid du Colombier/ly1 exch h mul y add def 44*3e12c5d1SDavid du Colombier/lx1 exch x abs mul def 45*3e12c5d1SDavid du Colombier/c1 exch x y mkabs def 46*3e12c5d1SDavid du Colombierx y /moveto load 47*3e12c5d1SDavid du Colombier0 0 1 a 540 a sub /arcn load 48*3e12c5d1SDavid du Colombierc1 aload pop /curveto load 49*3e12c5d1SDavid du Colombierlx1 ly1 /lineto load 50*3e12c5d1SDavid du Colombierc2 aload pop /curveto load 51*3e12c5d1SDavid du Colombier/closepath load 52*3e12c5d1SDavid du Colombier} def 53*3e12c5d1SDavid du Colombier/segment { 54*3e12c5d1SDavid du Colombier/n exch def 55*3e12c5d1SDavid du Colombier/dh exch 1 exch sub 2 div def 56*3e12c5d1SDavid du Colombier/ylb n r mul n 0.5 add add d mul def 57*3e12c5d1SDavid du Colombier/ylt ylb h add def 58*3e12c5d1SDavid du Colombier/yrb ylb h dh mul add def 59*3e12c5d1SDavid du Colombier/yrt ylt h dh mul sub def 60*3e12c5d1SDavid du Colombier/alb ylb 1 ylb dup mul sub sqrt atan def 61*3e12c5d1SDavid du Colombier/alt ylt 1 ylt dup mul sub sqrt atan def 62*3e12c5d1SDavid du Colombier/arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def 63*3e12c5d1SDavid du Colombier/art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def 64*3e12c5d1SDavid du Colombier/xlb alb cos def 65*3e12c5d1SDavid du Colombier/xlt alt cos def 66*3e12c5d1SDavid du Colombier/xrb arb cos def 67*3e12c5d1SDavid du Colombier/xrt art cos def 68*3e12c5d1SDavid du Colombier/c4 exch xrb abs ylb mkabs def 69*3e12c5d1SDavid du Colombier/ly2 exch h mul ylb add def 70*3e12c5d1SDavid du Colombier/lx2 exch xrb abs mul def 71*3e12c5d1SDavid du Colombier/c3 exch xrb abs ylb mkabs def 72*3e12c5d1SDavid du Colombier/c2 exch xrt abs ylt mkabs def 73*3e12c5d1SDavid du Colombier/ly1 exch h mul ylt add def 74*3e12c5d1SDavid du Colombier/lx1 exch xrt abs mul def 75*3e12c5d1SDavid du Colombier/c1 exch xrt abs ylt mkabs def 76*3e12c5d1SDavid du Colombierxlb ylb /moveto load 77*3e12c5d1SDavid du Colombier0 0 1 alb alt /arc load 78*3e12c5d1SDavid du Colombierc2 4 get c2 5 get /lineto load 79*3e12c5d1SDavid du Colombierc2 2 get c2 3 get 80*3e12c5d1SDavid du Colombierc2 0 get c2 1 get 81*3e12c5d1SDavid du Colombierlx1 ly1 /curveto load 82*3e12c5d1SDavid du Colombierc1 4 get c1 5 get /lineto load 83*3e12c5d1SDavid du Colombierc1 2 get c1 3 get 84*3e12c5d1SDavid du Colombierc1 0 get c1 1 get 85*3e12c5d1SDavid du Colombierxrt yrt /curveto load 86*3e12c5d1SDavid du Colombier0 0 1 art arb /arc load 87*3e12c5d1SDavid du Colombierc3 aload pop /curveto load 88*3e12c5d1SDavid du Colombierlx2 ly2 /lineto load 89*3e12c5d1SDavid du Colombierc4 aload pop /curveto load 90*3e12c5d1SDavid du Colombier/closepath load 91*3e12c5d1SDavid du Colombier} def 92*3e12c5d1SDavid du Colombier8 2.5 globesetup 93*3e12c5d1SDavid du Colombier/globe8 [ 94*3e12c5d1SDavid du Colombier/newpath load 95*3e12c5d1SDavid du Colombier[ -.9 .1 -.6 .2 -.5 .2 ] -.5 .2 [ -.4 .2 .0 .0 .4 .0 ] 3 topsegment 96*3e12c5d1SDavid du Colombier[ -.9 -.35 -.85 -.35 -.8 -.35 ] -.1 -.35 [ .1 -.35 .3 .0 .5 .0 ] 97*3e12c5d1SDavid du Colombier[ -.8 .35 -.75 .35 -.7 .35 ] -.1 .35 [ .1 .35 .4 .0 .55 .0 ] .55 2 segment 98*3e12c5d1SDavid du Colombier[ -.8 -.35 -.75 -.35 -.7 -.35 ] .05 -.35 [ .2 -.35 .4 .0 .55 .0 ] 99*3e12c5d1SDavid du Colombier[ -.8 .35 -.75 .35 -.7 .35 ] .05 .35 [ .2 .35 .45 .0 .6 .0 ] .7 1 segment 100*3e12c5d1SDavid du Colombier[ -.8 -.35 -.75 -.35 -.7 -.35 ] .0 -.35 [ .15 -.35 .4 .0 .6 .0 ] 101*3e12c5d1SDavid du Colombier[ -.8 .35 -.75 .35 -.7 .35 ] .0 .35 [ .15 .35 .4 .0 .6 .0 ] .7 0 segment 102*3e12c5d1SDavid du Colombier[ -.7 -.35 -.65 -.35 -.6 -.35 ] -.1 -.35 [ .05 -.35 .35 .0 .55 .0 ] 103*3e12c5d1SDavid du Colombier[ -.7 .35 -.65 .35 -.6 .35 ] -.1 .35 [ .05 .35 .25 .0 .4 .0 ] .8 -1 segment 104*3e12c5d1SDavid du Colombier[ -.65 -.2 -.55 -.2 -.45 -.2 ] -.3 -.2 [ -.2 -.2 .2 .0 .3 .0 ] 105*3e12c5d1SDavid du Colombier[ -.65 .1 -.55 .1 -.45 .1 ] -.45 .1 [ -.3 .1 -.1 .0 .0 .0 ] .96 -2 segment 106*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 107*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 1 -3 segment 108*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] -4 botsegment 109*3e12c5d1SDavid du Colombier] cvx def 110*3e12c5d1SDavid du Colombier12 3 globesetup 111*3e12c5d1SDavid du Colombier/globe12 [ 112*3e12c5d1SDavid du Colombier/newpath load 113*3e12c5d1SDavid du Colombier[ -.8 .2 -.7 .25 -.5 .25 ] -.4 .25 [ -.2 .25 .0 .0 .2 .0 ] 5 topsegment 114*3e12c5d1SDavid du Colombier[ -.7 -.35 -.7 -.35 -.6 -.35 ] -.3 -.35 [ -.1 -.35 .3 .0 .55 .0 ] 115*3e12c5d1SDavid du Colombier[ -.7 .35 -.7 .35 -.6 .35 ] -.25 .35 [ -.05 .35 .4 .0 .55 .0 ] .6 4 segment 116*3e12c5d1SDavid du Colombier[ -.8 -.35 -.7 -.35 -.6 -.35 ] -.1 -.35 [ .1 -.35 .4 .0 .5 .0 ] 117*3e12c5d1SDavid du Colombier[ -.8 .35 -.7 .35 -.6 .35 ] -.1 .35 [ .1 .35 .4 .0 .5 .0 ] .7 3 segment 118*3e12c5d1SDavid du Colombier[ -.8 -.35 -.7 -.35 -.6 -.35 ] .0 -.35 [ .1 -.35 .45 .0 .55 .0 ] 119*3e12c5d1SDavid du Colombier[ -.8 .35 -.7 .35 -.6 .35 ] .0 .35 [ .15 .35 .4 .0 .5 .0 ] .8 2 segment 120*3e12c5d1SDavid du Colombier[ -.75 -.35 -.7 -.35 -.6 -.35 ] .0 -.35 [ .2 -.35 .4 .0 .5 .0 ] 121*3e12c5d1SDavid du Colombier[ -.75 .35 -.7 .35 -.6 .35 ] .0 .35 [ .2 .35 .45 .0 .55 .0 ] .9 1 segment 122*3e12c5d1SDavid du Colombier[ -.7 -.35 -.6 -.35 -.55 -.35 ] .0 -.35 [ .1 -.35 .45 .0 .55 .0 ] 123*3e12c5d1SDavid du Colombier[ -.7 .35 -.6 .35 -.55 .35 ] .0 .35 [ .1 .35 .5 .0 .6 .0 ] .9 0 segment 124*3e12c5d1SDavid du Colombier] cvx 125*3e12c5d1SDavid du Colombier[ 126*3e12c5d1SDavid du Colombier[ -.7 -.35 -.6 -.35 -.5 -.35 ] -.15 -.35 [ .0 -.35 .4 .0 .5 .0 ] 127*3e12c5d1SDavid du Colombier[ -.65 .35 -.55 .35 -.45 .35 ] -.15 .35 [ .0 .35 .35 .0 .45 .0 ] .9 -1 segment 128*3e12c5d1SDavid du Colombier[ -.8 -.1 -.5 -.3 -.4 -.3 ] -.2 -.3 [ .0 -.3 .3 .0 .4 .0 ] 129*3e12c5d1SDavid du Colombier[ -.8 .1 -.5 .3 -.4 .3 ] -.2 .3 [ .0 .3 .2 .0 .3 .0 ] 1 -2 segment 130*3e12c5d1SDavid du Colombier[ -.7 -.1 -.5 -.15 -.4 -.15 ] -.3 -.15 [ -.2 -.15 .0 .0 .2 .0 ] 131*3e12c5d1SDavid du Colombier[ -.7 .05 -.5 .1 -.4 .1 ] -.4 .1 [ -.3 .1 .0 .0 .2 .0 ] 1 -3 segment 132*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 133*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 1 -4 segment 134*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 135*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 1 -5 segment 136*3e12c5d1SDavid du Colombier[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] -6 botsegment 137*3e12c5d1SDavid du Colombier] cvx 138*3e12c5d1SDavid du Colombier4 array cvx 139*3e12c5d1SDavid du Colombierdup 0 5 -1 roll put 140*3e12c5d1SDavid du Colombierdup 1 /exec load put 141*3e12c5d1SDavid du Colombierdup 2 4 -1 roll put 142*3e12c5d1SDavid du Colombierdup 3 /exec load put 143*3e12c5d1SDavid du Colombierdef 144*3e12c5d1SDavid du Colombierend 145*3e12c5d1SDavid du Colombier/build_L1 { 146*3e12c5d1SDavid du Colombierpop 147*3e12c5d1SDavid du ColombierLOGO-dict-mm begin 148*3e12c5d1SDavid du Colombierptsize 29 lt 149*3e12c5d1SDavid du Colombier{ /globe /globe8 load def } 150*3e12c5d1SDavid du Colombier{ /globe /globe12 load def } ifelse 151*3e12c5d1SDavid du Colombiergsave 152*3e12c5d1SDavid du Colombiercurrentpoint translate 153*3e12c5d1SDavid du Colombiersize 2 div dup scale 154*3e12c5d1SDavid du Colombier1.02 1 transform round exch round exch itransform 155*3e12c5d1SDavid du Colombiertranslate 156*3e12c5d1SDavid du Colombierglobe fill 157*3e12c5d1SDavid du Colombiergrestore 158*3e12c5d1SDavid du Colombierend 159*3e12c5d1SDavid du Colombier} def 160