L1 5.3 KB

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