@johnmorrisdotca/uchusen-rockets 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (906) hide show
  1. package/CHANGELOG.md +55 -5
  2. package/LICENSES/ODbL-1.0.txt +540 -0
  3. package/NOTICE.md +56 -6
  4. package/README.md +288 -16
  5. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.painted.svg +1 -0
  6. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.svg +1 -0
  7. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.thick.svg +1 -0
  8. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.glb +0 -0
  9. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.painted.svg +1 -0
  10. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.svg +1 -0
  11. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.thick.svg +1 -0
  12. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.glb +0 -0
  13. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.painted.svg +1 -0
  14. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.svg +1 -0
  15. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.thick.svg +1 -0
  16. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.glb +0 -0
  17. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.painted.svg +1 -0
  18. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.svg +1 -0
  19. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.thick.svg +1 -0
  20. package/dist/assets/apollo-soyuz-apollo-soyuz.glb +0 -0
  21. package/dist/assets/apollo-soyuz-apollo-soyuz.painted.svg +1 -0
  22. package/dist/assets/apollo-soyuz-apollo-soyuz.svg +1 -0
  23. package/dist/assets/apollo-soyuz-apollo-soyuz.thick.svg +1 -0
  24. package/dist/assets/dragon-cargo-dragon-2-apart.painted.svg +1 -0
  25. package/dist/assets/dragon-cargo-dragon-2-apart.svg +1 -0
  26. package/dist/assets/dragon-cargo-dragon-2-apart.thick.svg +1 -0
  27. package/dist/assets/dragon-cargo-dragon-2-capsule.glb +0 -0
  28. package/dist/assets/dragon-cargo-dragon-2-capsule.painted.svg +1 -0
  29. package/dist/assets/dragon-cargo-dragon-2-capsule.svg +1 -0
  30. package/dist/assets/dragon-cargo-dragon-2-capsule.thick.svg +1 -0
  31. package/dist/assets/dragon-cargo-dragon-2-trunk.glb +0 -0
  32. package/dist/assets/dragon-cargo-dragon-2-trunk.painted.svg +1 -0
  33. package/dist/assets/dragon-cargo-dragon-2-trunk.svg +1 -0
  34. package/dist/assets/dragon-cargo-dragon-2-trunk.thick.svg +1 -0
  35. package/dist/assets/dragon-cargo-dragon-2.glb +0 -0
  36. package/dist/assets/dragon-cargo-dragon-2.painted.svg +1 -0
  37. package/dist/assets/dragon-cargo-dragon-2.svg +1 -0
  38. package/dist/assets/dragon-cargo-dragon-2.thick.svg +1 -0
  39. package/dist/assets/dragon-crew-dragon-inside.glb +0 -0
  40. package/dist/assets/dragon-crew-dragon-inside.painted.svg +1 -0
  41. package/dist/assets/dragon-crew-dragon-inside.svg +1 -0
  42. package/dist/assets/dragon-crew-dragon-inside.thick.svg +1 -0
  43. package/dist/assets/dragon-dragon-1-apart.painted.svg +1 -1
  44. package/dist/assets/dragon-dragon-1-apart.svg +1 -1
  45. package/dist/assets/dragon-dragon-1-apart.thick.svg +1 -1
  46. package/dist/assets/dragon-dragon-1-capsule.painted.svg +1 -1
  47. package/dist/assets/dragon-dragon-1-capsule.svg +1 -1
  48. package/dist/assets/dragon-dragon-1-capsule.thick.svg +1 -1
  49. package/dist/assets/dragon-dragon-1-trunk.painted.svg +1 -1
  50. package/dist/assets/dragon-dragon-1-trunk.svg +1 -1
  51. package/dist/assets/dragon-dragon-1-trunk.thick.svg +1 -1
  52. package/dist/assets/dragon-dragon-1.painted.svg +1 -1
  53. package/dist/assets/dragon-dragon-1.svg +1 -1
  54. package/dist/assets/dragon-dragon-1.thick.svg +1 -1
  55. package/dist/assets/dragon-dragon-2-apart.painted.svg +1 -1
  56. package/dist/assets/dragon-dragon-2-apart.svg +1 -1
  57. package/dist/assets/dragon-dragon-2-apart.thick.svg +1 -1
  58. package/dist/assets/dragon-dragon-2-capsule.painted.svg +1 -1
  59. package/dist/assets/dragon-dragon-2-capsule.svg +1 -1
  60. package/dist/assets/dragon-dragon-2-capsule.thick.svg +1 -1
  61. package/dist/assets/dragon-dragon-2-trunk.painted.svg +1 -1
  62. package/dist/assets/dragon-dragon-2-trunk.svg +1 -1
  63. package/dist/assets/dragon-dragon-2-trunk.thick.svg +1 -1
  64. package/dist/assets/dragon-dragon-2.painted.svg +1 -1
  65. package/dist/assets/dragon-dragon-2.svg +1 -1
  66. package/dist/assets/dragon-dragon-2.thick.svg +1 -1
  67. package/dist/assets/droneship-asog-apart.painted.svg +1 -0
  68. package/dist/assets/droneship-asog-apart.svg +1 -0
  69. package/dist/assets/droneship-asog-apart.thick.svg +1 -0
  70. package/dist/assets/droneship-asog-deck.glb +0 -0
  71. package/dist/assets/droneship-asog-deck.painted.svg +1 -0
  72. package/dist/assets/droneship-asog-deck.svg +1 -0
  73. package/dist/assets/droneship-asog-deck.thick.svg +1 -0
  74. package/dist/assets/droneship-asog-landed.glb +0 -0
  75. package/dist/assets/droneship-asog-landed.painted.svg +1 -0
  76. package/dist/assets/droneship-asog-landed.svg +1 -0
  77. package/dist/assets/droneship-asog-landed.thick.svg +1 -0
  78. package/dist/assets/droneship-asog.glb +0 -0
  79. package/dist/assets/droneship-asog.painted.svg +1 -0
  80. package/dist/assets/droneship-asog.svg +1 -0
  81. package/dist/assets/droneship-asog.thick.svg +1 -0
  82. package/dist/assets/droneship-jrti-apart.painted.svg +1 -0
  83. package/dist/assets/droneship-jrti-apart.svg +1 -0
  84. package/dist/assets/droneship-jrti-apart.thick.svg +1 -0
  85. package/dist/assets/droneship-jrti-deck.glb +0 -0
  86. package/dist/assets/droneship-jrti-deck.painted.svg +1 -0
  87. package/dist/assets/droneship-jrti-deck.svg +1 -0
  88. package/dist/assets/droneship-jrti-deck.thick.svg +1 -0
  89. package/dist/assets/droneship-jrti-landed.glb +0 -0
  90. package/dist/assets/droneship-jrti-landed.painted.svg +1 -0
  91. package/dist/assets/droneship-jrti-landed.svg +1 -0
  92. package/dist/assets/droneship-jrti-landed.thick.svg +1 -0
  93. package/dist/assets/droneship-jrti.glb +0 -0
  94. package/dist/assets/droneship-jrti.painted.svg +1 -0
  95. package/dist/assets/droneship-jrti.svg +1 -0
  96. package/dist/assets/droneship-jrti.thick.svg +1 -0
  97. package/dist/assets/droneship-ocisly-apart.painted.svg +1 -0
  98. package/dist/assets/droneship-ocisly-apart.svg +1 -0
  99. package/dist/assets/droneship-ocisly-apart.thick.svg +1 -0
  100. package/dist/assets/droneship-ocisly-deck.glb +0 -0
  101. package/dist/assets/droneship-ocisly-deck.painted.svg +1 -0
  102. package/dist/assets/droneship-ocisly-deck.svg +1 -0
  103. package/dist/assets/droneship-ocisly-deck.thick.svg +1 -0
  104. package/dist/assets/droneship-ocisly-landed.glb +0 -0
  105. package/dist/assets/droneship-ocisly-landed.painted.svg +1 -0
  106. package/dist/assets/droneship-ocisly-landed.svg +1 -0
  107. package/dist/assets/droneship-ocisly-landed.thick.svg +1 -0
  108. package/dist/assets/droneship-ocisly.glb +0 -0
  109. package/dist/assets/droneship-ocisly.painted.svg +1 -0
  110. package/dist/assets/droneship-ocisly.svg +1 -0
  111. package/dist/assets/droneship-ocisly.thick.svg +1 -0
  112. package/dist/assets/electron-electron-adapter.glb +0 -0
  113. package/dist/assets/electron-electron-adapter.painted.svg +1 -0
  114. package/dist/assets/electron-electron-adapter.svg +1 -0
  115. package/dist/assets/electron-electron-adapter.thick.svg +1 -0
  116. package/dist/assets/electron-electron-apart.painted.svg +1 -0
  117. package/dist/assets/electron-electron-apart.svg +1 -0
  118. package/dist/assets/electron-electron-apart.thick.svg +1 -0
  119. package/dist/assets/electron-electron-fairing.glb +0 -0
  120. package/dist/assets/electron-electron-fairing.painted.svg +1 -0
  121. package/dist/assets/electron-electron-fairing.svg +1 -0
  122. package/dist/assets/electron-electron-fairing.thick.svg +1 -0
  123. package/dist/assets/electron-electron-first-stage.glb +0 -0
  124. package/dist/assets/electron-electron-first-stage.painted.svg +1 -0
  125. package/dist/assets/electron-electron-first-stage.svg +1 -0
  126. package/dist/assets/electron-electron-first-stage.thick.svg +1 -0
  127. package/dist/assets/electron-electron-second-stage.glb +0 -0
  128. package/dist/assets/electron-electron-second-stage.painted.svg +1 -0
  129. package/dist/assets/electron-electron-second-stage.svg +1 -0
  130. package/dist/assets/electron-electron-second-stage.thick.svg +1 -0
  131. package/dist/assets/electron-electron.glb +0 -0
  132. package/dist/assets/electron-electron.painted.svg +1 -0
  133. package/dist/assets/electron-electron.svg +1 -0
  134. package/dist/assets/electron-electron.thick.svg +1 -0
  135. package/dist/assets/falcon-1-falcon-1-apart.painted.svg +1 -0
  136. package/dist/assets/falcon-1-falcon-1-apart.svg +1 -0
  137. package/dist/assets/falcon-1-falcon-1-apart.thick.svg +1 -0
  138. package/dist/assets/falcon-1-falcon-1-fairing.glb +0 -0
  139. package/dist/assets/falcon-1-falcon-1-fairing.painted.svg +1 -0
  140. package/dist/assets/falcon-1-falcon-1-fairing.svg +1 -0
  141. package/dist/assets/falcon-1-falcon-1-fairing.thick.svg +1 -0
  142. package/dist/assets/falcon-1-falcon-1-first-stage.glb +0 -0
  143. package/dist/assets/falcon-1-falcon-1-first-stage.painted.svg +1 -0
  144. package/dist/assets/falcon-1-falcon-1-first-stage.svg +1 -0
  145. package/dist/assets/falcon-1-falcon-1-first-stage.thick.svg +1 -0
  146. package/dist/assets/falcon-1-falcon-1-second-stage.glb +0 -0
  147. package/dist/assets/falcon-1-falcon-1-second-stage.painted.svg +1 -0
  148. package/dist/assets/falcon-1-falcon-1-second-stage.svg +1 -0
  149. package/dist/assets/falcon-1-falcon-1-second-stage.thick.svg +1 -0
  150. package/dist/assets/falcon-1-falcon-1.glb +0 -0
  151. package/dist/assets/falcon-1-falcon-1.painted.svg +1 -0
  152. package/dist/assets/falcon-1-falcon-1.svg +1 -0
  153. package/dist/assets/falcon-1-falcon-1.thick.svg +1 -0
  154. package/dist/assets/falcon-1-falcon-1e-apart.painted.svg +1 -0
  155. package/dist/assets/falcon-1-falcon-1e-apart.svg +1 -0
  156. package/dist/assets/falcon-1-falcon-1e-apart.thick.svg +1 -0
  157. package/dist/assets/falcon-1-falcon-1e-fairing.glb +0 -0
  158. package/dist/assets/falcon-1-falcon-1e-fairing.painted.svg +1 -0
  159. package/dist/assets/falcon-1-falcon-1e-fairing.svg +1 -0
  160. package/dist/assets/falcon-1-falcon-1e-fairing.thick.svg +1 -0
  161. package/dist/assets/falcon-1-falcon-1e-first-stage.glb +0 -0
  162. package/dist/assets/falcon-1-falcon-1e-first-stage.painted.svg +1 -0
  163. package/dist/assets/falcon-1-falcon-1e-first-stage.svg +1 -0
  164. package/dist/assets/falcon-1-falcon-1e-first-stage.thick.svg +1 -0
  165. package/dist/assets/falcon-1-falcon-1e-second-stage.glb +0 -0
  166. package/dist/assets/falcon-1-falcon-1e-second-stage.painted.svg +1 -0
  167. package/dist/assets/falcon-1-falcon-1e-second-stage.svg +1 -0
  168. package/dist/assets/falcon-1-falcon-1e-second-stage.thick.svg +1 -0
  169. package/dist/assets/falcon-1-falcon-1e.glb +0 -0
  170. package/dist/assets/falcon-1-falcon-1e.painted.svg +1 -0
  171. package/dist/assets/falcon-1-falcon-1e.svg +1 -0
  172. package/dist/assets/falcon-1-falcon-1e.thick.svg +1 -0
  173. package/dist/assets/falcon-9-block-5-apart.painted.svg +1 -1
  174. package/dist/assets/falcon-9-block-5-apart.svg +1 -1
  175. package/dist/assets/falcon-9-block-5-apart.thick.svg +1 -1
  176. package/dist/assets/falcon-9-block-5-dragon-2-apart.painted.svg +1 -1
  177. package/dist/assets/falcon-9-block-5-dragon-2-apart.svg +1 -1
  178. package/dist/assets/falcon-9-block-5-dragon-2-apart.thick.svg +1 -1
  179. package/dist/assets/falcon-9-block-5-dragon-2-capsule.painted.svg +1 -1
  180. package/dist/assets/falcon-9-block-5-dragon-2-capsule.svg +1 -1
  181. package/dist/assets/falcon-9-block-5-dragon-2-capsule.thick.svg +1 -1
  182. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.painted.svg +1 -1
  183. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.svg +1 -1
  184. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.thick.svg +1 -1
  185. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.painted.svg +1 -1
  186. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.svg +1 -1
  187. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.thick.svg +1 -1
  188. package/dist/assets/falcon-9-block-5-dragon-2-trunk.painted.svg +1 -1
  189. package/dist/assets/falcon-9-block-5-dragon-2-trunk.svg +1 -1
  190. package/dist/assets/falcon-9-block-5-dragon-2-trunk.thick.svg +1 -1
  191. package/dist/assets/falcon-9-block-5-dragon-2.painted.svg +1 -1
  192. package/dist/assets/falcon-9-block-5-dragon-2.svg +1 -1
  193. package/dist/assets/falcon-9-block-5-dragon-2.thick.svg +1 -1
  194. package/dist/assets/falcon-9-block-5-fairing.painted.svg +1 -1
  195. package/dist/assets/falcon-9-block-5-fairing.svg +1 -1
  196. package/dist/assets/falcon-9-block-5-fairing.thick.svg +1 -1
  197. package/dist/assets/falcon-9-block-5-first-stage.painted.svg +1 -1
  198. package/dist/assets/falcon-9-block-5-first-stage.svg +1 -1
  199. package/dist/assets/falcon-9-block-5-first-stage.thick.svg +1 -1
  200. package/dist/assets/falcon-9-block-5-second-stage.painted.svg +1 -1
  201. package/dist/assets/falcon-9-block-5-second-stage.svg +1 -1
  202. package/dist/assets/falcon-9-block-5-second-stage.thick.svg +1 -1
  203. package/dist/assets/falcon-9-block-5.painted.svg +1 -1
  204. package/dist/assets/falcon-9-block-5.svg +1 -1
  205. package/dist/assets/falcon-9-block-5.thick.svg +1 -1
  206. package/dist/assets/falcon-9-ft-apart.painted.svg +1 -1
  207. package/dist/assets/falcon-9-ft-apart.svg +1 -1
  208. package/dist/assets/falcon-9-ft-apart.thick.svg +1 -1
  209. package/dist/assets/falcon-9-ft-fairing.painted.svg +1 -1
  210. package/dist/assets/falcon-9-ft-fairing.svg +1 -1
  211. package/dist/assets/falcon-9-ft-fairing.thick.svg +1 -1
  212. package/dist/assets/falcon-9-ft-first-stage.painted.svg +1 -1
  213. package/dist/assets/falcon-9-ft-first-stage.svg +1 -1
  214. package/dist/assets/falcon-9-ft-first-stage.thick.svg +1 -1
  215. package/dist/assets/falcon-9-ft-second-stage.painted.svg +1 -1
  216. package/dist/assets/falcon-9-ft-second-stage.svg +1 -1
  217. package/dist/assets/falcon-9-ft-second-stage.thick.svg +1 -1
  218. package/dist/assets/falcon-9-ft.painted.svg +1 -1
  219. package/dist/assets/falcon-9-ft.svg +1 -1
  220. package/dist/assets/falcon-9-ft.thick.svg +1 -1
  221. package/dist/assets/falcon-9-v1.0-apart.painted.svg +1 -1
  222. package/dist/assets/falcon-9-v1.0-apart.svg +1 -1
  223. package/dist/assets/falcon-9-v1.0-apart.thick.svg +1 -1
  224. package/dist/assets/falcon-9-v1.0-fairing.painted.svg +1 -1
  225. package/dist/assets/falcon-9-v1.0-fairing.svg +1 -1
  226. package/dist/assets/falcon-9-v1.0-fairing.thick.svg +1 -1
  227. package/dist/assets/falcon-9-v1.0-first-stage.painted.svg +1 -1
  228. package/dist/assets/falcon-9-v1.0-first-stage.svg +1 -1
  229. package/dist/assets/falcon-9-v1.0-first-stage.thick.svg +1 -1
  230. package/dist/assets/falcon-9-v1.0-second-stage.painted.svg +1 -1
  231. package/dist/assets/falcon-9-v1.0-second-stage.svg +1 -1
  232. package/dist/assets/falcon-9-v1.0-second-stage.thick.svg +1 -1
  233. package/dist/assets/falcon-9-v1.0.painted.svg +1 -1
  234. package/dist/assets/falcon-9-v1.0.svg +1 -1
  235. package/dist/assets/falcon-9-v1.0.thick.svg +1 -1
  236. package/dist/assets/falcon-9-v1.1-apart.painted.svg +1 -1
  237. package/dist/assets/falcon-9-v1.1-apart.svg +1 -1
  238. package/dist/assets/falcon-9-v1.1-apart.thick.svg +1 -1
  239. package/dist/assets/falcon-9-v1.1-fairing.painted.svg +1 -1
  240. package/dist/assets/falcon-9-v1.1-fairing.svg +1 -1
  241. package/dist/assets/falcon-9-v1.1-fairing.thick.svg +1 -1
  242. package/dist/assets/falcon-9-v1.1-first-stage.painted.svg +1 -1
  243. package/dist/assets/falcon-9-v1.1-first-stage.svg +1 -1
  244. package/dist/assets/falcon-9-v1.1-first-stage.thick.svg +1 -1
  245. package/dist/assets/falcon-9-v1.1-second-stage.painted.svg +1 -1
  246. package/dist/assets/falcon-9-v1.1-second-stage.svg +1 -1
  247. package/dist/assets/falcon-9-v1.1-second-stage.thick.svg +1 -1
  248. package/dist/assets/falcon-9-v1.1.painted.svg +1 -1
  249. package/dist/assets/falcon-9-v1.1.svg +1 -1
  250. package/dist/assets/falcon-9-v1.1.thick.svg +1 -1
  251. package/dist/assets/falcon-heavy-falcon-heavy-apart.painted.svg +1 -1
  252. package/dist/assets/falcon-heavy-falcon-heavy-apart.svg +1 -1
  253. package/dist/assets/falcon-heavy-falcon-heavy-apart.thick.svg +1 -1
  254. package/dist/assets/falcon-heavy-falcon-heavy-centre.painted.svg +1 -1
  255. package/dist/assets/falcon-heavy-falcon-heavy-centre.svg +1 -1
  256. package/dist/assets/falcon-heavy-falcon-heavy-centre.thick.svg +1 -1
  257. package/dist/assets/falcon-heavy-falcon-heavy-side-left.painted.svg +1 -1
  258. package/dist/assets/falcon-heavy-falcon-heavy-side-left.svg +1 -1
  259. package/dist/assets/falcon-heavy-falcon-heavy-side-left.thick.svg +1 -1
  260. package/dist/assets/falcon-heavy-falcon-heavy-side-right.painted.svg +1 -1
  261. package/dist/assets/falcon-heavy-falcon-heavy-side-right.svg +1 -1
  262. package/dist/assets/falcon-heavy-falcon-heavy-side-right.thick.svg +1 -1
  263. package/dist/assets/falcon-heavy-falcon-heavy.painted.svg +1 -1
  264. package/dist/assets/falcon-heavy-falcon-heavy.svg +1 -1
  265. package/dist/assets/falcon-heavy-falcon-heavy.thick.svg +1 -1
  266. package/dist/assets/gemini-gemini-adapter.glb +0 -0
  267. package/dist/assets/gemini-gemini-adapter.painted.svg +1 -0
  268. package/dist/assets/gemini-gemini-adapter.svg +1 -0
  269. package/dist/assets/gemini-gemini-adapter.thick.svg +1 -0
  270. package/dist/assets/gemini-gemini-apart.painted.svg +1 -0
  271. package/dist/assets/gemini-gemini-apart.svg +1 -0
  272. package/dist/assets/gemini-gemini-apart.thick.svg +1 -0
  273. package/dist/assets/gemini-gemini-capsule.glb +0 -0
  274. package/dist/assets/gemini-gemini-capsule.painted.svg +1 -0
  275. package/dist/assets/gemini-gemini-capsule.svg +1 -0
  276. package/dist/assets/gemini-gemini-capsule.thick.svg +1 -0
  277. package/dist/assets/gemini-gemini.glb +0 -0
  278. package/dist/assets/gemini-gemini.painted.svg +1 -0
  279. package/dist/assets/gemini-gemini.svg +1 -0
  280. package/dist/assets/gemini-gemini.thick.svg +1 -0
  281. package/dist/assets/grasshopper-grasshopper.painted.svg +1 -1
  282. package/dist/assets/grasshopper-grasshopper.svg +1 -1
  283. package/dist/assets/grasshopper-grasshopper.thick.svg +1 -1
  284. package/dist/assets/hubble-hubble.glb +0 -0
  285. package/dist/assets/hubble-hubble.painted.svg +1 -0
  286. package/dist/assets/hubble-hubble.svg +1 -0
  287. package/dist/assets/hubble-hubble.thick.svg +1 -0
  288. package/dist/assets/iss-iss.glb +0 -0
  289. package/dist/assets/iss-iss.painted.svg +1 -0
  290. package/dist/assets/iss-iss.svg +1 -0
  291. package/dist/assets/iss-iss.thick.svg +1 -0
  292. package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
  293. package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -0
  294. package/dist/assets/jupiter-c-jupiter-c.svg +1 -0
  295. package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -0
  296. package/dist/assets/landing-zone-lz-1-apart.painted.svg +1 -0
  297. package/dist/assets/landing-zone-lz-1-apart.svg +1 -0
  298. package/dist/assets/landing-zone-lz-1-apart.thick.svg +1 -0
  299. package/dist/assets/landing-zone-lz-1-landed.glb +0 -0
  300. package/dist/assets/landing-zone-lz-1-landed.painted.svg +1 -0
  301. package/dist/assets/landing-zone-lz-1-landed.svg +1 -0
  302. package/dist/assets/landing-zone-lz-1-landed.thick.svg +1 -0
  303. package/dist/assets/landing-zone-lz-1-pad.glb +0 -0
  304. package/dist/assets/landing-zone-lz-1-pad.painted.svg +1 -0
  305. package/dist/assets/landing-zone-lz-1-pad.svg +1 -0
  306. package/dist/assets/landing-zone-lz-1-pad.thick.svg +1 -0
  307. package/dist/assets/landing-zone-lz-1.glb +0 -0
  308. package/dist/assets/landing-zone-lz-1.painted.svg +1 -0
  309. package/dist/assets/landing-zone-lz-1.svg +1 -0
  310. package/dist/assets/landing-zone-lz-1.thick.svg +1 -0
  311. package/dist/assets/landing-zone-lz-4-apart.painted.svg +1 -0
  312. package/dist/assets/landing-zone-lz-4-apart.svg +1 -0
  313. package/dist/assets/landing-zone-lz-4-apart.thick.svg +1 -0
  314. package/dist/assets/landing-zone-lz-4-landed.glb +0 -0
  315. package/dist/assets/landing-zone-lz-4-landed.painted.svg +1 -0
  316. package/dist/assets/landing-zone-lz-4-landed.svg +1 -0
  317. package/dist/assets/landing-zone-lz-4-landed.thick.svg +1 -0
  318. package/dist/assets/landing-zone-lz-4-pad.glb +0 -0
  319. package/dist/assets/landing-zone-lz-4-pad.painted.svg +1 -0
  320. package/dist/assets/landing-zone-lz-4-pad.svg +1 -0
  321. package/dist/assets/landing-zone-lz-4-pad.thick.svg +1 -0
  322. package/dist/assets/landing-zone-lz-4.glb +0 -0
  323. package/dist/assets/landing-zone-lz-4.painted.svg +1 -0
  324. package/dist/assets/landing-zone-lz-4.svg +1 -0
  325. package/dist/assets/landing-zone-lz-4.thick.svg +1 -0
  326. package/dist/assets/launch-tower-catch-apart.painted.svg +1 -0
  327. package/dist/assets/launch-tower-catch-apart.svg +1 -0
  328. package/dist/assets/launch-tower-catch-apart.thick.svg +1 -0
  329. package/dist/assets/launch-tower-catch-arms.glb +0 -0
  330. package/dist/assets/launch-tower-catch-arms.painted.svg +1 -0
  331. package/dist/assets/launch-tower-catch-arms.svg +1 -0
  332. package/dist/assets/launch-tower-catch-arms.thick.svg +1 -0
  333. package/dist/assets/launch-tower-catch-booster.glb +0 -0
  334. package/dist/assets/launch-tower-catch-booster.painted.svg +1 -0
  335. package/dist/assets/launch-tower-catch-booster.svg +1 -0
  336. package/dist/assets/launch-tower-catch-booster.thick.svg +1 -0
  337. package/dist/assets/launch-tower-catch-mount.glb +0 -0
  338. package/dist/assets/launch-tower-catch-mount.painted.svg +1 -0
  339. package/dist/assets/launch-tower-catch-mount.svg +1 -0
  340. package/dist/assets/launch-tower-catch-mount.thick.svg +1 -0
  341. package/dist/assets/launch-tower-catch-tower.glb +0 -0
  342. package/dist/assets/launch-tower-catch-tower.painted.svg +1 -0
  343. package/dist/assets/launch-tower-catch-tower.svg +1 -0
  344. package/dist/assets/launch-tower-catch-tower.thick.svg +1 -0
  345. package/dist/assets/launch-tower-catch.glb +0 -0
  346. package/dist/assets/launch-tower-catch.painted.svg +1 -0
  347. package/dist/assets/launch-tower-catch.svg +1 -0
  348. package/dist/assets/launch-tower-catch.thick.svg +1 -0
  349. package/dist/assets/launch-tower-stack-apart.painted.svg +1 -0
  350. package/dist/assets/launch-tower-stack-apart.svg +1 -0
  351. package/dist/assets/launch-tower-stack-apart.thick.svg +1 -0
  352. package/dist/assets/launch-tower-stack-arms.glb +0 -0
  353. package/dist/assets/launch-tower-stack-arms.painted.svg +1 -0
  354. package/dist/assets/launch-tower-stack-arms.svg +1 -0
  355. package/dist/assets/launch-tower-stack-arms.thick.svg +1 -0
  356. package/dist/assets/launch-tower-stack-booster.glb +0 -0
  357. package/dist/assets/launch-tower-stack-booster.painted.svg +1 -0
  358. package/dist/assets/launch-tower-stack-booster.svg +1 -0
  359. package/dist/assets/launch-tower-stack-booster.thick.svg +1 -0
  360. package/dist/assets/launch-tower-stack-mount.glb +0 -0
  361. package/dist/assets/launch-tower-stack-mount.painted.svg +1 -0
  362. package/dist/assets/launch-tower-stack-mount.svg +1 -0
  363. package/dist/assets/launch-tower-stack-mount.thick.svg +1 -0
  364. package/dist/assets/launch-tower-stack-ship.glb +0 -0
  365. package/dist/assets/launch-tower-stack-ship.painted.svg +1 -0
  366. package/dist/assets/launch-tower-stack-ship.svg +1 -0
  367. package/dist/assets/launch-tower-stack-ship.thick.svg +1 -0
  368. package/dist/assets/launch-tower-stack-tower.glb +0 -0
  369. package/dist/assets/launch-tower-stack-tower.painted.svg +1 -0
  370. package/dist/assets/launch-tower-stack-tower.svg +1 -0
  371. package/dist/assets/launch-tower-stack-tower.thick.svg +1 -0
  372. package/dist/assets/launch-tower-stack.glb +0 -0
  373. package/dist/assets/launch-tower-stack.painted.svg +1 -0
  374. package/dist/assets/launch-tower-stack.svg +1 -0
  375. package/dist/assets/launch-tower-stack.thick.svg +1 -0
  376. package/dist/assets/launch-tower-tower-apart.painted.svg +1 -0
  377. package/dist/assets/launch-tower-tower-apart.svg +1 -0
  378. package/dist/assets/launch-tower-tower-apart.thick.svg +1 -0
  379. package/dist/assets/launch-tower-tower-arms.glb +0 -0
  380. package/dist/assets/launch-tower-tower-arms.painted.svg +1 -0
  381. package/dist/assets/launch-tower-tower-arms.svg +1 -0
  382. package/dist/assets/launch-tower-tower-arms.thick.svg +1 -0
  383. package/dist/assets/launch-tower-tower-mount.glb +0 -0
  384. package/dist/assets/launch-tower-tower-mount.painted.svg +1 -0
  385. package/dist/assets/launch-tower-tower-mount.svg +1 -0
  386. package/dist/assets/launch-tower-tower-mount.thick.svg +1 -0
  387. package/dist/assets/launch-tower-tower-tower.glb +0 -0
  388. package/dist/assets/launch-tower-tower-tower.painted.svg +1 -0
  389. package/dist/assets/launch-tower-tower-tower.svg +1 -0
  390. package/dist/assets/launch-tower-tower-tower.thick.svg +1 -0
  391. package/dist/assets/launch-tower-tower.glb +0 -0
  392. package/dist/assets/launch-tower-tower.painted.svg +1 -0
  393. package/dist/assets/launch-tower-tower.svg +1 -0
  394. package/dist/assets/launch-tower-tower.thick.svg +1 -0
  395. package/dist/assets/lunar-module-lunar-module-apart.painted.svg +1 -0
  396. package/dist/assets/lunar-module-lunar-module-apart.svg +1 -0
  397. package/dist/assets/lunar-module-lunar-module-apart.thick.svg +1 -0
  398. package/dist/assets/lunar-module-lunar-module-ascent.glb +0 -0
  399. package/dist/assets/lunar-module-lunar-module-ascent.painted.svg +1 -0
  400. package/dist/assets/lunar-module-lunar-module-ascent.svg +1 -0
  401. package/dist/assets/lunar-module-lunar-module-ascent.thick.svg +1 -0
  402. package/dist/assets/lunar-module-lunar-module-descent.glb +0 -0
  403. package/dist/assets/lunar-module-lunar-module-descent.painted.svg +1 -0
  404. package/dist/assets/lunar-module-lunar-module-descent.svg +1 -0
  405. package/dist/assets/lunar-module-lunar-module-descent.thick.svg +1 -0
  406. package/dist/assets/lunar-module-lunar-module.glb +0 -0
  407. package/dist/assets/lunar-module-lunar-module.painted.svg +1 -0
  408. package/dist/assets/lunar-module-lunar-module.svg +1 -0
  409. package/dist/assets/lunar-module-lunar-module.thick.svg +1 -0
  410. package/dist/assets/mercury-friendship-7.glb +0 -0
  411. package/dist/assets/mercury-friendship-7.painted.svg +1 -0
  412. package/dist/assets/mercury-friendship-7.svg +1 -0
  413. package/dist/assets/mercury-friendship-7.thick.svg +1 -0
  414. package/dist/assets/models/apollo-soyuz-csm.glb +0 -0
  415. package/dist/assets/models/apollo-soyuz-docking-module.glb +0 -0
  416. package/dist/assets/models/apollo-soyuz-soyuz.glb +0 -0
  417. package/dist/assets/models/gemini-adapter.glb +0 -0
  418. package/dist/assets/models/gemini-capsule.glb +0 -0
  419. package/dist/assets/models/hubble-telescope.glb +0 -0
  420. package/dist/assets/models/iss-station.glb +0 -0
  421. package/dist/assets/models/jupiter-c-vehicle.glb +0 -0
  422. package/dist/assets/models/lunar-module-ascent.glb +0 -0
  423. package/dist/assets/models/lunar-module-descent.glb +0 -0
  424. package/dist/assets/models/mercury-capsule.glb +0 -0
  425. package/dist/assets/models/space-shuttle-discovery-orbiter.glb +0 -0
  426. package/dist/assets/models/space-shuttle-stack-external-tank.glb +0 -0
  427. package/dist/assets/models/space-shuttle-stack-orbiter.glb +0 -0
  428. package/dist/assets/models/space-shuttle-stack-srb.glb +0 -0
  429. package/dist/assets/new-glenn-7x2-apart.painted.svg +1 -0
  430. package/dist/assets/new-glenn-7x2-apart.svg +1 -0
  431. package/dist/assets/new-glenn-7x2-apart.thick.svg +1 -0
  432. package/dist/assets/new-glenn-7x2-fairing.glb +0 -0
  433. package/dist/assets/new-glenn-7x2-fairing.painted.svg +1 -0
  434. package/dist/assets/new-glenn-7x2-fairing.svg +1 -0
  435. package/dist/assets/new-glenn-7x2-fairing.thick.svg +1 -0
  436. package/dist/assets/new-glenn-7x2-first-stage.glb +0 -0
  437. package/dist/assets/new-glenn-7x2-first-stage.painted.svg +1 -0
  438. package/dist/assets/new-glenn-7x2-first-stage.svg +1 -0
  439. package/dist/assets/new-glenn-7x2-first-stage.thick.svg +1 -0
  440. package/dist/assets/new-glenn-7x2-second-stage.glb +0 -0
  441. package/dist/assets/new-glenn-7x2-second-stage.painted.svg +1 -0
  442. package/dist/assets/new-glenn-7x2-second-stage.svg +1 -0
  443. package/dist/assets/new-glenn-7x2-second-stage.thick.svg +1 -0
  444. package/dist/assets/new-glenn-7x2.glb +0 -0
  445. package/dist/assets/new-glenn-7x2.painted.svg +1 -0
  446. package/dist/assets/new-glenn-7x2.svg +1 -0
  447. package/dist/assets/new-glenn-7x2.thick.svg +1 -0
  448. package/dist/assets/parts/flap-aft.painted.svg +1 -1
  449. package/dist/assets/parts/flap-aft.svg +1 -1
  450. package/dist/assets/parts/flap-aft.thick.svg +1 -1
  451. package/dist/assets/parts/flap-forward.painted.svg +1 -1
  452. package/dist/assets/parts/flap-forward.svg +1 -1
  453. package/dist/assets/parts/flap-forward.thick.svg +1 -1
  454. package/dist/assets/parts/grid-fin-four.painted.svg +1 -1
  455. package/dist/assets/parts/grid-fin-four.svg +1 -1
  456. package/dist/assets/parts/grid-fin-four.thick.svg +1 -1
  457. package/dist/assets/parts/grid-fin-three.painted.svg +1 -1
  458. package/dist/assets/parts/grid-fin-three.svg +1 -1
  459. package/dist/assets/parts/grid-fin-three.thick.svg +1 -1
  460. package/dist/assets/parts/merlin-sea-level.painted.svg +1 -1
  461. package/dist/assets/parts/merlin-sea-level.svg +1 -1
  462. package/dist/assets/parts/merlin-sea-level.thick.svg +1 -1
  463. package/dist/assets/parts/raptor-sea-level.painted.svg +1 -1
  464. package/dist/assets/parts/raptor-sea-level.svg +1 -1
  465. package/dist/assets/parts/raptor-sea-level.thick.svg +1 -1
  466. package/dist/assets/parts/raptor-vacuum.painted.svg +1 -1
  467. package/dist/assets/parts/raptor-vacuum.svg +1 -1
  468. package/dist/assets/parts/raptor-vacuum.thick.svg +1 -1
  469. package/dist/assets/saturn-v-saturn-v-adapter.glb +0 -0
  470. package/dist/assets/saturn-v-saturn-v-adapter.painted.svg +1 -0
  471. package/dist/assets/saturn-v-saturn-v-adapter.svg +1 -0
  472. package/dist/assets/saturn-v-saturn-v-adapter.thick.svg +1 -0
  473. package/dist/assets/saturn-v-saturn-v-apart.painted.svg +1 -0
  474. package/dist/assets/saturn-v-saturn-v-apart.svg +1 -0
  475. package/dist/assets/saturn-v-saturn-v-apart.thick.svg +1 -0
  476. package/dist/assets/saturn-v-saturn-v-capsule.glb +0 -0
  477. package/dist/assets/saturn-v-saturn-v-capsule.painted.svg +1 -0
  478. package/dist/assets/saturn-v-saturn-v-capsule.svg +1 -0
  479. package/dist/assets/saturn-v-saturn-v-capsule.thick.svg +1 -0
  480. package/dist/assets/saturn-v-saturn-v-escape-tower.glb +0 -0
  481. package/dist/assets/saturn-v-saturn-v-escape-tower.painted.svg +1 -0
  482. package/dist/assets/saturn-v-saturn-v-escape-tower.svg +1 -0
  483. package/dist/assets/saturn-v-saturn-v-escape-tower.thick.svg +1 -0
  484. package/dist/assets/saturn-v-saturn-v-first-stage.glb +0 -0
  485. package/dist/assets/saturn-v-saturn-v-first-stage.painted.svg +1 -0
  486. package/dist/assets/saturn-v-saturn-v-first-stage.svg +1 -0
  487. package/dist/assets/saturn-v-saturn-v-first-stage.thick.svg +1 -0
  488. package/dist/assets/saturn-v-saturn-v-second-stage.glb +0 -0
  489. package/dist/assets/saturn-v-saturn-v-second-stage.painted.svg +1 -0
  490. package/dist/assets/saturn-v-saturn-v-second-stage.svg +1 -0
  491. package/dist/assets/saturn-v-saturn-v-second-stage.thick.svg +1 -0
  492. package/dist/assets/saturn-v-saturn-v-service-module.glb +0 -0
  493. package/dist/assets/saturn-v-saturn-v-service-module.painted.svg +1 -0
  494. package/dist/assets/saturn-v-saturn-v-service-module.svg +1 -0
  495. package/dist/assets/saturn-v-saturn-v-service-module.thick.svg +1 -0
  496. package/dist/assets/saturn-v-saturn-v-third-stage.glb +0 -0
  497. package/dist/assets/saturn-v-saturn-v-third-stage.painted.svg +1 -0
  498. package/dist/assets/saturn-v-saturn-v-third-stage.svg +1 -0
  499. package/dist/assets/saturn-v-saturn-v-third-stage.thick.svg +1 -0
  500. package/dist/assets/saturn-v-saturn-v.glb +0 -0
  501. package/dist/assets/saturn-v-saturn-v.painted.svg +1 -0
  502. package/dist/assets/saturn-v-saturn-v.svg +1 -0
  503. package/dist/assets/saturn-v-saturn-v.thick.svg +1 -0
  504. package/dist/assets/sls-block-1-apart.painted.svg +1 -0
  505. package/dist/assets/sls-block-1-apart.svg +1 -0
  506. package/dist/assets/sls-block-1-apart.thick.svg +1 -0
  507. package/dist/assets/sls-block-1-capsule.glb +0 -0
  508. package/dist/assets/sls-block-1-capsule.painted.svg +1 -0
  509. package/dist/assets/sls-block-1-capsule.svg +1 -0
  510. package/dist/assets/sls-block-1-capsule.thick.svg +1 -0
  511. package/dist/assets/sls-block-1-escape-tower.glb +0 -0
  512. package/dist/assets/sls-block-1-escape-tower.painted.svg +1 -0
  513. package/dist/assets/sls-block-1-escape-tower.svg +1 -0
  514. package/dist/assets/sls-block-1-escape-tower.thick.svg +1 -0
  515. package/dist/assets/sls-block-1-first-stage.glb +0 -0
  516. package/dist/assets/sls-block-1-first-stage.painted.svg +1 -0
  517. package/dist/assets/sls-block-1-first-stage.svg +1 -0
  518. package/dist/assets/sls-block-1-first-stage.thick.svg +1 -0
  519. package/dist/assets/sls-block-1-service-module.glb +0 -0
  520. package/dist/assets/sls-block-1-service-module.painted.svg +1 -0
  521. package/dist/assets/sls-block-1-service-module.svg +1 -0
  522. package/dist/assets/sls-block-1-service-module.thick.svg +1 -0
  523. package/dist/assets/sls-block-1-srb-left.glb +0 -0
  524. package/dist/assets/sls-block-1-srb-left.painted.svg +1 -0
  525. package/dist/assets/sls-block-1-srb-left.svg +1 -0
  526. package/dist/assets/sls-block-1-srb-left.thick.svg +1 -0
  527. package/dist/assets/sls-block-1-srb-right.glb +0 -0
  528. package/dist/assets/sls-block-1-srb-right.painted.svg +1 -0
  529. package/dist/assets/sls-block-1-srb-right.svg +1 -0
  530. package/dist/assets/sls-block-1-srb-right.thick.svg +1 -0
  531. package/dist/assets/sls-block-1-upper-stage.glb +0 -0
  532. package/dist/assets/sls-block-1-upper-stage.painted.svg +1 -0
  533. package/dist/assets/sls-block-1-upper-stage.svg +1 -0
  534. package/dist/assets/sls-block-1-upper-stage.thick.svg +1 -0
  535. package/dist/assets/sls-block-1.glb +0 -0
  536. package/dist/assets/sls-block-1.painted.svg +1 -0
  537. package/dist/assets/sls-block-1.svg +1 -0
  538. package/dist/assets/sls-block-1.thick.svg +1 -0
  539. package/dist/assets/soyuz-soyuz-2-apart.painted.svg +1 -0
  540. package/dist/assets/soyuz-soyuz-2-apart.svg +1 -0
  541. package/dist/assets/soyuz-soyuz-2-apart.thick.svg +1 -0
  542. package/dist/assets/soyuz-soyuz-2-booster-1.glb +0 -0
  543. package/dist/assets/soyuz-soyuz-2-booster-1.painted.svg +1 -0
  544. package/dist/assets/soyuz-soyuz-2-booster-1.svg +1 -0
  545. package/dist/assets/soyuz-soyuz-2-booster-1.thick.svg +1 -0
  546. package/dist/assets/soyuz-soyuz-2-booster-2.glb +0 -0
  547. package/dist/assets/soyuz-soyuz-2-booster-2.painted.svg +1 -0
  548. package/dist/assets/soyuz-soyuz-2-booster-2.svg +1 -0
  549. package/dist/assets/soyuz-soyuz-2-booster-2.thick.svg +1 -0
  550. package/dist/assets/soyuz-soyuz-2-booster-3.glb +0 -0
  551. package/dist/assets/soyuz-soyuz-2-booster-3.painted.svg +1 -0
  552. package/dist/assets/soyuz-soyuz-2-booster-3.svg +1 -0
  553. package/dist/assets/soyuz-soyuz-2-booster-3.thick.svg +1 -0
  554. package/dist/assets/soyuz-soyuz-2-booster-4.glb +0 -0
  555. package/dist/assets/soyuz-soyuz-2-booster-4.painted.svg +1 -0
  556. package/dist/assets/soyuz-soyuz-2-booster-4.svg +1 -0
  557. package/dist/assets/soyuz-soyuz-2-booster-4.thick.svg +1 -0
  558. package/dist/assets/soyuz-soyuz-2-fairing.glb +0 -0
  559. package/dist/assets/soyuz-soyuz-2-fairing.painted.svg +1 -0
  560. package/dist/assets/soyuz-soyuz-2-fairing.svg +1 -0
  561. package/dist/assets/soyuz-soyuz-2-fairing.thick.svg +1 -0
  562. package/dist/assets/soyuz-soyuz-2-first-stage.glb +0 -0
  563. package/dist/assets/soyuz-soyuz-2-first-stage.painted.svg +1 -0
  564. package/dist/assets/soyuz-soyuz-2-first-stage.svg +1 -0
  565. package/dist/assets/soyuz-soyuz-2-first-stage.thick.svg +1 -0
  566. package/dist/assets/soyuz-soyuz-2-third-stage.glb +0 -0
  567. package/dist/assets/soyuz-soyuz-2-third-stage.painted.svg +1 -0
  568. package/dist/assets/soyuz-soyuz-2-third-stage.svg +1 -0
  569. package/dist/assets/soyuz-soyuz-2-third-stage.thick.svg +1 -0
  570. package/dist/assets/soyuz-soyuz-2.glb +0 -0
  571. package/dist/assets/soyuz-soyuz-2.painted.svg +1 -0
  572. package/dist/assets/soyuz-soyuz-2.svg +1 -0
  573. package/dist/assets/soyuz-soyuz-2.thick.svg +1 -0
  574. package/dist/assets/space-shuttle-discovery.glb +0 -0
  575. package/dist/assets/space-shuttle-discovery.painted.svg +1 -0
  576. package/dist/assets/space-shuttle-discovery.svg +1 -0
  577. package/dist/assets/space-shuttle-discovery.thick.svg +1 -0
  578. package/dist/assets/space-shuttle-stack-apart.painted.svg +1 -0
  579. package/dist/assets/space-shuttle-stack-apart.svg +1 -0
  580. package/dist/assets/space-shuttle-stack-apart.thick.svg +1 -0
  581. package/dist/assets/space-shuttle-stack-external-tank.glb +0 -0
  582. package/dist/assets/space-shuttle-stack-external-tank.painted.svg +1 -0
  583. package/dist/assets/space-shuttle-stack-external-tank.svg +1 -0
  584. package/dist/assets/space-shuttle-stack-external-tank.thick.svg +1 -0
  585. package/dist/assets/space-shuttle-stack-orbiter.glb +0 -0
  586. package/dist/assets/space-shuttle-stack-orbiter.painted.svg +1 -0
  587. package/dist/assets/space-shuttle-stack-orbiter.svg +1 -0
  588. package/dist/assets/space-shuttle-stack-orbiter.thick.svg +1 -0
  589. package/dist/assets/space-shuttle-stack-srb-left.glb +0 -0
  590. package/dist/assets/space-shuttle-stack-srb-left.painted.svg +1 -0
  591. package/dist/assets/space-shuttle-stack-srb-left.svg +1 -0
  592. package/dist/assets/space-shuttle-stack-srb-left.thick.svg +1 -0
  593. package/dist/assets/space-shuttle-stack-srb-right.glb +0 -0
  594. package/dist/assets/space-shuttle-stack-srb-right.painted.svg +1 -0
  595. package/dist/assets/space-shuttle-stack-srb-right.svg +1 -0
  596. package/dist/assets/space-shuttle-stack-srb-right.thick.svg +1 -0
  597. package/dist/assets/space-shuttle-stack.glb +0 -0
  598. package/dist/assets/space-shuttle-stack.painted.svg +1 -0
  599. package/dist/assets/space-shuttle-stack.svg +1 -0
  600. package/dist/assets/space-shuttle-stack.thick.svg +1 -0
  601. package/dist/assets/starbase-build-site-apart.painted.svg +1 -0
  602. package/dist/assets/starbase-build-site-apart.svg +1 -0
  603. package/dist/assets/starbase-build-site-apart.thick.svg +1 -0
  604. package/dist/assets/starbase-build-site-garden.glb +0 -0
  605. package/dist/assets/starbase-build-site-garden.painted.svg +1 -0
  606. package/dist/assets/starbase-build-site-garden.svg +1 -0
  607. package/dist/assets/starbase-build-site-garden.thick.svg +1 -0
  608. package/dist/assets/starbase-build-site-ground.glb +0 -0
  609. package/dist/assets/starbase-build-site-ground.painted.svg +1 -0
  610. package/dist/assets/starbase-build-site-ground.svg +1 -0
  611. package/dist/assets/starbase-build-site-ground.thick.svg +1 -0
  612. package/dist/assets/starbase-build-site-mega-bays.glb +0 -0
  613. package/dist/assets/starbase-build-site-mega-bays.painted.svg +1 -0
  614. package/dist/assets/starbase-build-site-mega-bays.svg +1 -0
  615. package/dist/assets/starbase-build-site-mega-bays.thick.svg +1 -0
  616. package/dist/assets/starbase-build-site-sign.glb +0 -0
  617. package/dist/assets/starbase-build-site-sign.painted.svg +1 -0
  618. package/dist/assets/starbase-build-site-sign.svg +1 -0
  619. package/dist/assets/starbase-build-site-sign.thick.svg +1 -0
  620. package/dist/assets/starbase-build-site-starfactory.glb +0 -0
  621. package/dist/assets/starbase-build-site-starfactory.painted.svg +1 -0
  622. package/dist/assets/starbase-build-site-starfactory.svg +1 -0
  623. package/dist/assets/starbase-build-site-starfactory.thick.svg +1 -0
  624. package/dist/assets/starbase-build-site.glb +0 -0
  625. package/dist/assets/starbase-build-site.painted.svg +1 -0
  626. package/dist/assets/starbase-build-site.svg +1 -0
  627. package/dist/assets/starbase-build-site.thick.svg +1 -0
  628. package/dist/assets/starbase-city-apart.painted.svg +1 -0
  629. package/dist/assets/starbase-city-apart.svg +1 -0
  630. package/dist/assets/starbase-city-apart.thick.svg +1 -0
  631. package/dist/assets/starbase-city-garden.glb +0 -0
  632. package/dist/assets/starbase-city-garden.painted.svg +1 -0
  633. package/dist/assets/starbase-city-garden.svg +1 -0
  634. package/dist/assets/starbase-city-garden.thick.svg +1 -0
  635. package/dist/assets/starbase-city-ground.glb +0 -0
  636. package/dist/assets/starbase-city-ground.painted.svg +1 -0
  637. package/dist/assets/starbase-city-ground.svg +1 -0
  638. package/dist/assets/starbase-city-ground.thick.svg +1 -0
  639. package/dist/assets/starbase-city-mega-bays.glb +0 -0
  640. package/dist/assets/starbase-city-mega-bays.painted.svg +1 -0
  641. package/dist/assets/starbase-city-mega-bays.svg +1 -0
  642. package/dist/assets/starbase-city-mega-bays.thick.svg +1 -0
  643. package/dist/assets/starbase-city-on-pad.glb +0 -0
  644. package/dist/assets/starbase-city-on-pad.painted.svg +1 -0
  645. package/dist/assets/starbase-city-on-pad.svg +1 -0
  646. package/dist/assets/starbase-city-on-pad.thick.svg +1 -0
  647. package/dist/assets/starbase-city-pads.glb +0 -0
  648. package/dist/assets/starbase-city-pads.painted.svg +1 -0
  649. package/dist/assets/starbase-city-pads.svg +1 -0
  650. package/dist/assets/starbase-city-pads.thick.svg +1 -0
  651. package/dist/assets/starbase-city-sign.glb +0 -0
  652. package/dist/assets/starbase-city-sign.painted.svg +1 -0
  653. package/dist/assets/starbase-city-sign.svg +1 -0
  654. package/dist/assets/starbase-city-sign.thick.svg +1 -0
  655. package/dist/assets/starbase-city-starfactory.glb +0 -0
  656. package/dist/assets/starbase-city-starfactory.painted.svg +1 -0
  657. package/dist/assets/starbase-city-starfactory.svg +1 -0
  658. package/dist/assets/starbase-city-starfactory.thick.svg +1 -0
  659. package/dist/assets/starbase-city-tank-farm.glb +0 -0
  660. package/dist/assets/starbase-city-tank-farm.painted.svg +1 -0
  661. package/dist/assets/starbase-city-tank-farm.svg +1 -0
  662. package/dist/assets/starbase-city-tank-farm.thick.svg +1 -0
  663. package/dist/assets/starbase-city-village.glb +0 -0
  664. package/dist/assets/starbase-city-village.painted.svg +1 -0
  665. package/dist/assets/starbase-city-village.svg +1 -0
  666. package/dist/assets/starbase-city-village.thick.svg +1 -0
  667. package/dist/assets/starbase-city.glb +0 -0
  668. package/dist/assets/starbase-city.painted.svg +1 -0
  669. package/dist/assets/starbase-city.svg +1 -0
  670. package/dist/assets/starbase-city.thick.svg +1 -0
  671. package/dist/assets/starbase-launch-site-apart.painted.svg +1 -0
  672. package/dist/assets/starbase-launch-site-apart.svg +1 -0
  673. package/dist/assets/starbase-launch-site-apart.thick.svg +1 -0
  674. package/dist/assets/starbase-launch-site-ground.glb +0 -0
  675. package/dist/assets/starbase-launch-site-ground.painted.svg +1 -0
  676. package/dist/assets/starbase-launch-site-ground.svg +1 -0
  677. package/dist/assets/starbase-launch-site-ground.thick.svg +1 -0
  678. package/dist/assets/starbase-launch-site-on-pad.glb +0 -0
  679. package/dist/assets/starbase-launch-site-on-pad.painted.svg +1 -0
  680. package/dist/assets/starbase-launch-site-on-pad.svg +1 -0
  681. package/dist/assets/starbase-launch-site-on-pad.thick.svg +1 -0
  682. package/dist/assets/starbase-launch-site-pads.glb +0 -0
  683. package/dist/assets/starbase-launch-site-pads.painted.svg +1 -0
  684. package/dist/assets/starbase-launch-site-pads.svg +1 -0
  685. package/dist/assets/starbase-launch-site-pads.thick.svg +1 -0
  686. package/dist/assets/starbase-launch-site-tank-farm.glb +0 -0
  687. package/dist/assets/starbase-launch-site-tank-farm.painted.svg +1 -0
  688. package/dist/assets/starbase-launch-site-tank-farm.svg +1 -0
  689. package/dist/assets/starbase-launch-site-tank-farm.thick.svg +1 -0
  690. package/dist/assets/starbase-launch-site.glb +0 -0
  691. package/dist/assets/starbase-launch-site.painted.svg +1 -0
  692. package/dist/assets/starbase-launch-site.svg +1 -0
  693. package/dist/assets/starbase-launch-site.thick.svg +1 -0
  694. package/dist/assets/starship-2019.painted.svg +1 -1
  695. package/dist/assets/starship-2019.svg +1 -1
  696. package/dist/assets/starship-2019.thick.svg +1 -1
  697. package/dist/assets/starship-v1-apart.painted.svg +1 -1
  698. package/dist/assets/starship-v1-apart.svg +1 -1
  699. package/dist/assets/starship-v1-apart.thick.svg +1 -1
  700. package/dist/assets/starship-v1-booster.painted.svg +1 -1
  701. package/dist/assets/starship-v1-booster.svg +1 -1
  702. package/dist/assets/starship-v1-booster.thick.svg +1 -1
  703. package/dist/assets/starship-v1-flight1-apart.painted.svg +1 -1
  704. package/dist/assets/starship-v1-flight1-apart.svg +1 -1
  705. package/dist/assets/starship-v1-flight1-apart.thick.svg +1 -1
  706. package/dist/assets/starship-v1-flight1-booster.painted.svg +1 -1
  707. package/dist/assets/starship-v1-flight1-booster.svg +1 -1
  708. package/dist/assets/starship-v1-flight1-booster.thick.svg +1 -1
  709. package/dist/assets/starship-v1-flight1-ship.painted.svg +1 -1
  710. package/dist/assets/starship-v1-flight1-ship.svg +1 -1
  711. package/dist/assets/starship-v1-flight1-ship.thick.svg +1 -1
  712. package/dist/assets/starship-v1-flight1.painted.svg +1 -1
  713. package/dist/assets/starship-v1-flight1.svg +1 -1
  714. package/dist/assets/starship-v1-flight1.thick.svg +1 -1
  715. package/dist/assets/starship-v1-ship.painted.svg +1 -1
  716. package/dist/assets/starship-v1-ship.svg +1 -1
  717. package/dist/assets/starship-v1-ship.thick.svg +1 -1
  718. package/dist/assets/starship-v1.painted.svg +1 -1
  719. package/dist/assets/starship-v1.svg +1 -1
  720. package/dist/assets/starship-v1.thick.svg +1 -1
  721. package/dist/assets/starship-v2-apart.painted.svg +1 -1
  722. package/dist/assets/starship-v2-apart.svg +1 -1
  723. package/dist/assets/starship-v2-apart.thick.svg +1 -1
  724. package/dist/assets/starship-v2-booster.painted.svg +1 -1
  725. package/dist/assets/starship-v2-booster.svg +1 -1
  726. package/dist/assets/starship-v2-booster.thick.svg +1 -1
  727. package/dist/assets/starship-v2-ship.painted.svg +1 -1
  728. package/dist/assets/starship-v2-ship.svg +1 -1
  729. package/dist/assets/starship-v2-ship.thick.svg +1 -1
  730. package/dist/assets/starship-v2.painted.svg +1 -1
  731. package/dist/assets/starship-v2.svg +1 -1
  732. package/dist/assets/starship-v2.thick.svg +1 -1
  733. package/dist/assets/starship-v3-apart.painted.svg +1 -1
  734. package/dist/assets/starship-v3-apart.svg +1 -1
  735. package/dist/assets/starship-v3-apart.thick.svg +1 -1
  736. package/dist/assets/starship-v3-booster.painted.svg +1 -1
  737. package/dist/assets/starship-v3-booster.svg +1 -1
  738. package/dist/assets/starship-v3-booster.thick.svg +1 -1
  739. package/dist/assets/starship-v3-ship.painted.svg +1 -1
  740. package/dist/assets/starship-v3-ship.svg +1 -1
  741. package/dist/assets/starship-v3-ship.thick.svg +1 -1
  742. package/dist/assets/starship-v3.painted.svg +1 -1
  743. package/dist/assets/starship-v3.svg +1 -1
  744. package/dist/assets/starship-v3.thick.svg +1 -1
  745. package/dist/assets/starship-v4-apart.painted.svg +1 -1
  746. package/dist/assets/starship-v4-apart.svg +1 -1
  747. package/dist/assets/starship-v4-apart.thick.svg +1 -1
  748. package/dist/assets/starship-v4-booster.painted.svg +1 -1
  749. package/dist/assets/starship-v4-booster.svg +1 -1
  750. package/dist/assets/starship-v4-booster.thick.svg +1 -1
  751. package/dist/assets/starship-v4-ship.painted.svg +1 -1
  752. package/dist/assets/starship-v4-ship.svg +1 -1
  753. package/dist/assets/starship-v4-ship.thick.svg +1 -1
  754. package/dist/assets/starship-v4.painted.svg +1 -1
  755. package/dist/assets/starship-v4.svg +1 -1
  756. package/dist/assets/starship-v4.thick.svg +1 -1
  757. package/dist/attrs.d.ts +93 -0
  758. package/dist/attrs.js +86 -0
  759. package/dist/build/glb.d.ts +25 -0
  760. package/dist/build/glb.js +14 -0
  761. package/dist/build/index.d.ts +96 -6
  762. package/dist/build/index.js +83 -8
  763. package/dist/build/lineup.d.ts +56 -2
  764. package/dist/build/lineup.js +37 -6
  765. package/dist/builder.d.ts +68 -0
  766. package/dist/builder.js +116 -0
  767. package/dist/crossfade.d.ts +44 -2
  768. package/dist/crossfade.js +44 -2
  769. package/dist/data/apollosoyuz.d.ts +6 -0
  770. package/dist/data/apollosoyuz.js +28 -0
  771. package/dist/data/credits.d.ts +63 -2
  772. package/dist/data/credits.js +52 -2
  773. package/dist/data/dragon.js +35 -0
  774. package/dist/data/electron.d.ts +2 -0
  775. package/dist/data/electron.js +23 -0
  776. package/dist/data/falcon.js +2 -2
  777. package/dist/data/falcon1.d.ts +4 -0
  778. package/dist/data/falcon1.js +51 -0
  779. package/dist/data/flight-log.d.ts +50 -0
  780. package/dist/data/flight-log.js +44 -0
  781. package/dist/data/flights.d.ts +101 -0
  782. package/dist/data/flights.js +187 -0
  783. package/dist/data/gemini.d.ts +3 -0
  784. package/dist/data/gemini.js +22 -0
  785. package/dist/data/hubble.d.ts +3 -0
  786. package/dist/data/hubble.js +23 -0
  787. package/dist/data/iss.d.ts +5 -0
  788. package/dist/data/iss.js +25 -0
  789. package/dist/data/jupiterc.d.ts +3 -0
  790. package/dist/data/jupiterc.js +22 -0
  791. package/dist/data/landing.d.ts +3 -0
  792. package/dist/data/landing.js +51 -0
  793. package/dist/data/lunarmodule.d.ts +4 -0
  794. package/dist/data/lunarmodule.js +27 -0
  795. package/dist/data/makers.d.ts +37 -0
  796. package/dist/data/makers.js +39 -0
  797. package/dist/data/mercury.d.ts +3 -0
  798. package/dist/data/mercury.js +22 -0
  799. package/dist/data/newglenn.d.ts +2 -0
  800. package/dist/data/newglenn.js +23 -0
  801. package/dist/data/saturn.d.ts +2 -0
  802. package/dist/data/saturn.js +32 -0
  803. package/dist/data/shuttle.d.ts +5 -0
  804. package/dist/data/shuttle.js +52 -0
  805. package/dist/data/sls.d.ts +4 -0
  806. package/dist/data/sls.js +36 -0
  807. package/dist/data/sources.d.ts +380 -2
  808. package/dist/data/sources.js +55 -1
  809. package/dist/data/soyuz.d.ts +3 -0
  810. package/dist/data/soyuz.js +33 -0
  811. package/dist/data/starbase.d.ts +2 -0
  812. package/dist/data/starbase.js +30 -0
  813. package/dist/data/tower.d.ts +3 -0
  814. package/dist/data/tower.js +26 -0
  815. package/dist/data/types.d.ts +88 -2
  816. package/dist/data/types.js +26 -1
  817. package/dist/draw/plume.d.ts +8 -0
  818. package/dist/draw/plume.js +71 -0
  819. package/dist/draw/svg.d.ts +1 -1
  820. package/dist/draw/svg.js +3 -3
  821. package/dist/element/ground.d.ts +15 -0
  822. package/dist/element/ground.js +95 -0
  823. package/dist/element/plumes.d.ts +38 -0
  824. package/dist/element/plumes.js +208 -0
  825. package/dist/element/scene.d.ts +39 -5
  826. package/dist/element/scene.js +250 -7
  827. package/dist/element.d.ts +111 -4
  828. package/dist/element.js +251 -16
  829. package/dist/embed.d.ts +131 -0
  830. package/dist/embed.js +218 -0
  831. package/dist/engines.d.ts +126 -0
  832. package/dist/engines.js +150 -0
  833. package/dist/fit.d.ts +70 -0
  834. package/dist/fit.js +17 -3
  835. package/dist/flight.d.ts +192 -0
  836. package/dist/flight.js +237 -0
  837. package/dist/flightbar.d.ts +34 -0
  838. package/dist/flightbar.js +188 -0
  839. package/dist/framing.d.ts +182 -8
  840. package/dist/framing.js +127 -6
  841. package/dist/index.d.ts +17 -0
  842. package/dist/index.js +9 -0
  843. package/dist/layout.d.ts +65 -1
  844. package/dist/layout.js +44 -2
  845. package/dist/looks.d.ts +65 -2
  846. package/dist/looks.js +44 -1
  847. package/dist/model/apollosoyuz.d.ts +2 -0
  848. package/dist/model/apollosoyuz.js +46 -0
  849. package/dist/model/dragoninside.d.ts +2 -0
  850. package/dist/model/dragoninside.js +67 -0
  851. package/dist/model/electron.d.ts +2 -0
  852. package/dist/model/electron.js +35 -0
  853. package/dist/model/falcon.d.ts +2 -0
  854. package/dist/model/falcon.js +4 -0
  855. package/dist/model/falcon1.d.ts +2 -0
  856. package/dist/model/falcon1.js +53 -0
  857. package/dist/model/gemini.d.ts +2 -0
  858. package/dist/model/gemini.js +28 -0
  859. package/dist/model/hubble.d.ts +2 -0
  860. package/dist/model/hubble.js +28 -0
  861. package/dist/model/iss.d.ts +2 -0
  862. package/dist/model/iss.js +32 -0
  863. package/dist/model/jupiterc.d.ts +2 -0
  864. package/dist/model/jupiterc.js +24 -0
  865. package/dist/model/kit.d.ts +36 -0
  866. package/dist/model/kit.js +95 -0
  867. package/dist/model/landing.d.ts +3 -0
  868. package/dist/model/landing.js +81 -0
  869. package/dist/model/lunarmodule.d.ts +2 -0
  870. package/dist/model/lunarmodule.js +43 -0
  871. package/dist/model/materials.d.ts +74 -0
  872. package/dist/model/materials.js +17 -0
  873. package/dist/model/mercury.d.ts +2 -0
  874. package/dist/model/mercury.js +19 -0
  875. package/dist/model/newglenn.d.ts +2 -0
  876. package/dist/model/newglenn.js +43 -0
  877. package/dist/model/pieces.d.ts +2 -0
  878. package/dist/model/pieces.js +2 -2
  879. package/dist/model/registry.d.ts +22 -0
  880. package/dist/model/registry.js +85 -0
  881. package/dist/model/saturn.d.ts +2 -0
  882. package/dist/model/saturn.js +122 -0
  883. package/dist/model/shuttle.d.ts +2 -0
  884. package/dist/model/shuttle.js +111 -0
  885. package/dist/model/sls.d.ts +2 -0
  886. package/dist/model/sls.js +83 -0
  887. package/dist/model/soyuz.d.ts +2 -0
  888. package/dist/model/soyuz.js +75 -0
  889. package/dist/model/stacks.d.ts +39 -0
  890. package/dist/model/stacks.js +1 -0
  891. package/dist/model/starbase.d.ts +2 -0
  892. package/dist/model/starbase.js +108 -0
  893. package/dist/model/tower.d.ts +6 -0
  894. package/dist/model/tower.js +89 -0
  895. package/dist/parts.d.ts +36 -3
  896. package/dist/pixels.d.ts +44 -4
  897. package/dist/pixels.js +44 -4
  898. package/dist/react.d.ts +38 -6
  899. package/dist/react.js +13 -0
  900. package/dist/rockets.d.ts +96 -3
  901. package/dist/rockets.js +136 -9
  902. package/dist/spin.d.ts +66 -0
  903. package/dist/spin.js +44 -0
  904. package/dist/tilt.d.ts +48 -4
  905. package/dist/tilt.js +26 -4
  906. package/package.json +99 -19
package/NOTICE.md CHANGED
@@ -1,16 +1,18 @@
1
1
  # Notice
2
2
 
3
- This package holds work under two licences.
3
+ This package holds work under three licences, and NASA's models, which are public domain.
4
4
 
5
- **The code, the code-made meshes and the drawings are under the MIT licence** (see [LICENSE](LICENSE) and [LICENSES/MIT.txt](LICENSES/MIT.txt)). Each is made by this package's own code from plain geometry and sourced sizes.
5
+ **The code, the code-made meshes and the drawings are under the MIT licence** (see [LICENSE](LICENSE) and [LICENSES/MIT.txt](LICENSES/MIT.txt)), except the map data below. Each is made by this package's own code from plain geometry and sourced sizes.
6
6
 
7
- **The painted models in `models/` (shipped as `dist/assets/models/`) are not.** Each stays under the Creative Commons Attribution 4.0 licence of its author (see [LICENSES/CC-BY-4.0.txt](LICENSES/CC-BY-4.0.txt) and https://creativecommons.org/licenses/by/4.0/). Using them means crediting them, as below. The credits are also data: `MODEL_CREDITS` and `creditLine`, and `check(description).credits` says which belong to a given rocket.
7
+ **The painted models in `models/` (shipped as `dist/assets/models/`) are not.** Each stays under the Creative Commons Attribution 4.0 licence of its author, except one under CC0 as its row says, and those of NASA, below (see [LICENSES/CC-BY-4.0.txt](LICENSES/CC-BY-4.0.txt) and https://creativecommons.org/licenses/by/4.0/). Using them means crediting them, as below. The credits are also data: `MODEL_CREDITS` and `creditLine`, and `check(description).credits` says which belong to a given rocket.
8
+
9
+ **The map data is under the Open Database License, not MIT.** The coordinates, outlines and map heights of Starbase, in `src/data/starbase.ts` and `src/model/starbase.ts`, and the tower's 13 m footprint, in `src/data/tower.ts` and `src/model/tower.ts`, and those figures wherever they are built into `dist/`, are © OpenStreetMap contributors, https://www.openstreetmap.org/copyright, under ODbL 1.0 (see [LICENSES/ODbL-1.0.txt](LICENSES/ODbL-1.0.txt)). Each such figure names this source in the data (`SOURCES.openstreetmap`). The plain shapes standing on those places, and the rest of the package, stay MIT.
8
10
 
9
11
  No mesh or drawing carries a logo, wordmark or flag. Those were removed from the models below, and no photograph is shipped or traced: photographs were looked at for where parts sit.
10
12
 
11
- All trademarks belong to their owners, and this project is not affiliated with or endorsed by SpaceX. "SpaceX", "Starship", "Super Heavy", "Raptor", "Falcon" and "Dragon" appear only as plain descriptive words.
13
+ All trademarks belong to their owners, and this project is not affiliated with or endorsed by SpaceX, NASA or any other maker or agency named here. "SpaceX", "Starship", "Super Heavy", "Raptor", "Falcon", "Dragon" and the names of other makers' rockets appear only as plain descriptive words.
12
14
 
13
- ## Painted models (CC BY 4.0)
15
+ ## Painted models (CC BY 4.0, and one CC0)
14
16
 
15
17
  | Files | Title | Creator | Source | What was changed |
16
18
  | --- | --- | --- | --- | --- |
@@ -24,10 +26,33 @@ All trademarks belong to their owners, and this project is not affiliated with o
24
26
  | `falcon-heavy-falcon-heavy-centre.glb`, `-side-left.glb`, `-side-right.glb` | SpaceX Falcon Heavy(Low Poly) | [Antonio_Adams](https://sketchfab.com/AAdams3112) | https://sketchfab.com/3d-models/spacex-falcon-heavylow-poly-0dc068a462e34258b3872085a7f592c8 | The wordmark and logos painted out of its colour, roughness and normal maps, which were also resized; rescaled to sourced sizes; separated into its centre core and two side boosters by its own connected pieces. |
25
27
  | `grasshopper-grasshopper-vehicle.glb` | SpaceX Grasshopper | [Echo_3](https://sketchfab.com/Echo_3) | https://sketchfab.com/3d-models/spacex-grasshopper-35c07a68cdb246c59bb425610b934bf8 | The wordmark and logo removed with the texture that carried them; rescaled to the sourced height; reduced from 55,455 triangles; materials merged and renamed. |
26
28
 
27
- Licence for all: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). The credit line the second model's author asks for: This work is based on "Spacex Starship Ship 24 & Booster 7 V4" (https://sketchfab.com/3d-models/spacex-starship-ship-24-booster-7-v4-97875d14b63e4b9ca9ed425ef4253306) by clarence365 (https://sketchfab.com/clarence365) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/).
29
+ | `space-shuttle-discovery-orbiter.glb` | Orbiter, Space Shuttle, OV-103, Discovery | Smithsonian Institution, National Air and Space Museum; support generously provided by Meredith Siegfried Madden and Dr. Peter Madden | https://3d.si.edu/object/3d/orbiter-space-shuttle-ov-103-discovery:d8c636ce-4ebc-11ea-b77f-2e728ce88125 | **Under CC0 1.0, not CC BY** (https://creativecommons.org/publicdomain/zero/1.0/). The agency mark, the flags, the country's name and the orbiter's name painted out of its picture; reduced from 150,000 triangles; its pictures shrunk; stood upright and scaled to the sourced length; materials renamed. This package's owner confirmed the CC0 licence from the Smithsonian's record, https://www.si.edu/object/nasm_A20120325000, on 2026-11-02. Its marks, flags and names stay painted out. |
30
+
31
+ Licence for all but the last: [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). The credit line the second model's author asks for: This work is based on "Spacex Starship Ship 24 & Booster 7 V4" (https://sketchfab.com/3d-models/spacex-starship-ship-24-booster-7-v4-97875d14b63e4b9ca9ed425ef4253306) by clarence365 (https://sketchfab.com/clarence365) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/).
28
32
 
29
33
  These models also informed the proportions of this package's own line drawings of the same vehicles: those measurements were taken after each was scaled to the sourced sizes. No model stands in for another version. A rocket's own parts are credited through `check(description).credits`, generated from which part came from where.
30
34
 
35
+ ## NASA's models
36
+
37
+ NASA's models are from its 3D Resources, listed as the "NASA 3D Models" datasets on data.nasa.gov. **Using them rests on this package's owner's decision of 2026-11-02: "The NASA 135 are all public domain. The logo is not."** That settles what those 135 datasets state, "License not specified", and it covers them alone. NASA's own guidelines, https://www.nasa.gov/nasa-brand-center/images-and-media/, say that NASA content "used in the rendition of 3-dimensional models, such as texture maps and polygon data in any format" is generally not subject to copyright in the United States, that NASA "should be acknowledged as the source of the material", and that "The use of the Insignia, Logotype and NASA identifiers is protected by law". So NASA is credited here as the source; that is a factual credit and no suggestion that NASA endorses this package or anything made with it.
38
+
39
+ **No NASA logo, insignia, flag or lettering is in any file here.** The worm, the meatball, the seal, a mission patch, a flag and a country's or vehicle's name were each looked for, in the pictures and from every side of the result, and removed. Whoever uses these files for something else must keep to NASA's guidelines themselves, and, for merchandise, to its Merchandise Guidelines.
40
+
41
+ The dataset addresses named below are the record of what each model is. Their download addresses now lead to https://science.nasa.gov/3d-resources/, which says its assets are mirrored on https://github.com/nasa/NASA-3D-Resources, and the files were read from there on 2026-11-02; where a dataset states a polygon count, the file's triangles match it or come within 4%.
42
+
43
+ | Files | Title | Dataset | What was changed |
44
+ | --- | --- | --- | --- |
45
+ | `space-shuttle-stack-orbiter.glb` | Shuttle (Hi-Res) | https://data.nasa.gov/dataset/nasa-3d-models-shuttle-hi-res | The agency mark, the flag, the country's name and the rest of the lettering painted out of its pictures; its open bay closed with its own doors and what was inside it left out; its engines put in place; reduced from 31,318 triangles, with its five engines 48,376, to 30,000; rescaled to the sourced length; stood upright; its materials made into one picture. |
46
+ | `space-shuttle-stack-external-tank.glb`, `space-shuttle-stack-srb.glb` | Shuttle Parts (Hi-Res) | https://data.nasa.gov/dataset/nasa-3d-models-shuttle-parts-hi-res | Its external tank and solid rocket booster only; rescaled to the sourced lengths; stood upright; its materials made into one picture; its pictures shrunk. |
47
+ | `lunar-module-descent.glb`, `lunar-module-ascent.glb` | Apollo Lunar Module | https://data.nasa.gov/dataset/nasa-3d-models-apollo-lunar-module | The flag and the country's name removed with the two plates that carried them; reduced from 97,588 triangles to 59,949; rescaled to the sourced height; separated into its two stages; its materials made into one picture. |
48
+ | `apollo-soyuz-csm.glb`, `apollo-soyuz-docking-module.glb`, `apollo-soyuz-soyuz.glb` | Apollo Soyuz | https://data.nasa.gov/dataset/nasa-3d-models-apollo-soyuz | The flags and the countries' names painted out of its pictures; reduced from 32,996 triangles to 29,314; rescaled to the sourced lengths and widths; stood on end; separated into its three craft; its materials made into one picture. |
49
+ | `gemini-adapter.glb`, `gemini-capsule.glb` | Gemini | https://data.nasa.gov/dataset/nasa-3d-models-gemini | The flag and the country's name painted out of its picture; reduced from 38,840 triangles to 27,007; rescaled to the sourced length; separated into adapter and capsule; its materials made into one picture. |
50
+ | `mercury-capsule.glb` | Friendship 7 | https://data.nasa.gov/dataset/nasa-3d-models-friendship-7 | Reduced from 164,622 triangles to 40,000; rescaled to the sourced length and width; its materials, which NASA's copy leaves all one grey, given plain colours judged from photographs. It carried no mark to remove. |
51
+ | `jupiter-c-vehicle.glb` | Jupiter-C | https://data.nasa.gov/dataset/nasa-3d-models-jupiter-c | The lettering removed with the two pictures that carried it, which are plain white here; its 8,933 triangles kept; rescaled to the sourced height; its materials made into one picture. |
52
+ | `iss-station.glb` | ISS | https://data.nasa.gov/dataset/nasa-3d-models-iss | Reduced from 174,440 triangles to 60,701; a ball of stray pieces far above it left out; rescaled to the sourced length; its materials, which NASA's copy leaves all one grey, given plain colours judged from photographs. It carried no mark to remove. |
53
+ | `hubble-telescope.glb` | Hubble Space Telescope | https://data.nasa.gov/dataset/nasa-3d-models-hubble-space-telescope | A lettered plate painted out of its picture; its 7,672 triangles kept; rescaled to the sourced length; its materials made into one picture. |
54
+ <!-- more NASA models -->
55
+
31
56
  ## Facts
32
57
 
33
58
  Sizes are plain facts, each with its source in `src/data/sources.ts` and on the demo page. A figure is blank where no source gives one. Where sources disagree, the data keeps the one chosen and names the others.
@@ -36,6 +61,15 @@ Sizes are plain facts, each with its source in `src/data/sources.ts` and on the
36
61
  | --- | --- |
37
62
  | Wikipedia: SpaceX Starship, SpaceX Super Heavy, SpaceX Starship (spacecraft), SpaceX Raptor, SpaceX Merlin, Starship flight test 1, List of Starship launches, Falcon 1, Falcon 9, Falcon 9 Block 5, Falcon Heavy, SpaceX Dragon 1, SpaceX Dragon 2, SpaceX Grasshopper (CC BY-SA 4.0, read 2026-10-31) | Heights, diameters (the vacuum Merlin's 3.3 m), engine counts, grid fin counts, flap changes, first flight dates in UTC. Facts only: no text is copied |
38
63
  | SpaceX's Starship page, https://new.spacex.com/vehicles/starship, as a search engine quoted it: the page itself would not load | Rounded heights, kept as a second opinion |
64
+ | SpaceX, Falcon 1 Launch Vehicle Payload User's Guide, Rev 7, 2008, read through the Internet Archive | Falcon 1's and Falcon 1e's heights and fairings. Facts only: no drawing is copied |
65
+ | Wikipedia: Saturn V, Apollo command and service module, Apollo (spacecraft), Saturn V instrument unit, Rocketdyne F-1, Rocketdyne J-2 (CC BY-SA 4.0, read 2026-11-02) | Saturn V's and the Apollo spacecraft's lengths and widths, and the engines' sizes. Facts only: no text is copied |
66
+ | Wikipedia: Space Shuttle, Space Shuttle orbiter, Space Shuttle external tank, Space Shuttle Solid Rocket Booster, RS-25 (CC BY-SA 4.0, read 2026-11-02) | The Shuttle's parts' lengths and widths, the wingspan and the engine's sizes. Facts only: no text is copied |
67
+ | Wikipedia: Space Launch System, Orion (spacecraft), European Service Module (CC BY-SA 4.0, read 2026-11-02) | Its sizes. Facts only: no text is copied |
68
+ | Wikipedia: New Glenn, Rocket Lab Electron (CC BY-SA 4.0, read 2026-11-02) | Their sizes. Facts only: no text is copied |
69
+ | Wikipedia: Soyuz-2 (CC BY-SA 4.0, read 2026-11-02); Vulcan Centaur and Ariane 6 for the planned list | Their sizes and first flights. Facts only: no text is copied |
70
+ | Wikipedia: Autonomous spaceport drone ship, Landing Zones 1 and 2, Vandenberg Space Launch Complex 4 (CC BY-SA 4.0, read 2026-11-02) | Deck and pad sizes and first dates. Facts only: no text is copied, and the marks on the real decks and pads are not drawn |
71
+ | Federal Aviation Administration, Final Programmatic Environmental Assessment for Starship/Super Heavy at Boca Chica, June 2022, and Wikipedia: SpaceX Starbase (CC BY-SA 4.0, read 2026-11-02) | The tower's height and lightning rod, its nine sections, and first dates. Facts only |
72
+ | © OpenStreetMap contributors, https://www.openstreetmap.org/copyright (ODbL 1.0), read 2026-11-02 through its Overpass API | Starbase's named places and outlines: two towers, tank farm, Megabunker, two Mega Bays, Starfactory, the Sanchez site, the sign, the village and City Hall, and the map's height tags, with the highway and coast near them. A handful of places, not a copy of the map |
39
73
  | SatNews, 2026-05-14 | Grid fins, four to three and about 50% larger; about 1.5 m taller |
40
74
  | Gunter's Space Page | Version names, first flights by serial number; one set of sizes per family, not used for sizes |
41
75
  | NASASpaceflight, 2025-05-30, and Ars Technica, 2024-04-08 | Known through Wikipedia's citations; not read directly |
@@ -53,6 +87,7 @@ The published package has no runtime dependency of its own. These are peer depen
53
87
  | Name | Version | Licence | Used for |
54
88
  | --- | --- | --- | --- |
55
89
  | three | 0.186.1 (peer, >=0.170.0) | MIT | The 3D view |
90
+ | @johnmorrisdotca/chikyu-earth | 0.5.0 | MIT | The demo's Earth, never in the package |
56
91
  | react | 19 (optional peer, >=18) | MIT | The React wrapper |
57
92
  | react-dom | 19 | MIT | Testing the wrapper |
58
93
  | typescript | 5.9 | Apache-2.0 | The build |
@@ -60,7 +95,22 @@ The published package has no runtime dependency of its own. These are peer depen
60
95
  | @playwright/test | 1.64.0 | Apache-2.0 | The browser tests |
61
96
  | eslint, @eslint/js, typescript-eslint | 9, 9, 8 | MIT | Lint |
62
97
  | @gltf-transform/core, extensions, functions | 4.5.1 | MIT | Reducing the models, by hand, never at build time |
98
+ | draco3dgltf | 1.5.7 | Apache-2.0 | Reading NASA's compressed files, by hand, never at build time |
63
99
  | meshoptimizer | 1.3.0 | MIT | Simplifying the models, by hand |
64
100
  | @types/node, @types/react, @types/react-dom, @types/three | 24, 19, 19, 0.186 | MIT | Types |
65
101
 
66
102
  The demo site bundles three and, on its check page, react and react-dom, each under the MIT licence.
103
+
104
+ ## The demo's Earth
105
+
106
+ The Earth behind the rocket on the demo site is not in the published package. The site bundles @johnmorrisdotca/chikyu-earth (MIT, a dev dependency here), with @johnmorrisdotca/chizu (MIT) and d3-geo (ISC, its licence in chikyu-earth's `LICENSES/d3-geo.txt`), and its shared renderer is @johnmorrisdotca/kazoku-ui (MIT).
107
+
108
+ The country outlines are [Natural Earth](https://www.naturalearthdata.com), public domain, through chizu.
109
+
110
+ The Painted look's pictures, copied beside the demo page from chikyu-earth's `dist/textures/`, are NASA's own images, resized and re-encoded by that package. NASA says its content "generally are not subject to copyright in the United States" and asks that "NASA should be acknowledged as the source of the material" (https://www.nasa.gov/nasa-brand-center/images-and-media/, as chikyu-earth's NOTICE quotes it, read there 2026-11-02). This project is not endorsed by NASA and uses none of NASA's insignia.
111
+
112
+ | Picture | Source | Credit |
113
+ | --- | --- | --- |
114
+ | `day-*.webp`, and `water-*.webp`, made from it | Blue Marble: Next Generation, September 2004 (Visible Earth 73801) | NASA Earth Observatory (Reto Stöckli, Blue Marble Next Generation) |
115
+ | `night-*.webp` | Earth at Night, Black Marble 2016 (Visible Earth 144898) | NASA Earth Observatory, Suomi NPP VIIRS data (Miguel Roman, NASA's Goddard Space Flight Center) |
116
+ | `clouds-*.webp` | Blue Marble clouds (Visible Earth 57747) | NASA Earth Observatory (Reto Stöckli) |
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ <p align="center"><a href="https://johnmorrisdotca.github.io/uchusen-rockets/"><picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/thumbnail-dark.png"><img src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/thumbnail.png" alt="Uchusen Rockets: Saturn V, Starship, the Space Shuttle, Falcon Heavy and SLS, painted in 3D, side by side." width="1200"></picture></a></p>
2
+
1
3
  <h1 align="center">Uchusen Rockets <sub>宇宙船</sub></h1>
2
4
 
3
5
  <p align="center"><strong>Rockets drawn from sourced sizes, that you drop into a page, take apart and turn round.</strong><br>
@@ -6,11 +8,11 @@ Uchūsen means "spaceship". Each rocket comes in every variant a source document
6
8
  <p align="center">
7
9
  <a href="https://github.com/johnmorrisdotca/uchusen-rockets/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/johnmorrisdotca/uchusen-rockets/actions/workflows/ci.yml/badge.svg"></a>
8
10
  <a href="https://www.npmjs.com/package/@johnmorrisdotca/uchusen-rockets"><img alt="npm" src="https://img.shields.io/npm/v/@johnmorrisdotca/uchusen-rockets?color=2f5d4a"></a>
9
- <a href="./LICENSE"><img alt="MIT licence, CC BY 4.0 models" src="https://img.shields.io/badge/licence-MIT%20%2B%20CC%20BY%204.0-2f5d4a"></a>
11
+ <a href="./NOTICE.md"><img alt="MIT licence, CC BY 4.0 models, ODbL map data" src="https://img.shields.io/badge/licence-MIT%20%2B%20CC%20BY%204.0%20%2B%20ODbL-2f5d4a"></a>
10
12
  <img alt="TypeScript" src="https://img.shields.io/badge/types-TypeScript-3178c6">
11
13
  </p>
12
14
 
13
- <p align="center"><a href="https://johnmorrisdotca.github.io/uchusen-rockets/"><strong>Open the demo →</strong></a> · <a href="./docs/variants.md">Variants and sizes</a> · <a href="./docs/parts.md">Build from parts</a> · <a href="./docs/element.md">The element</a> · <a href="./docs/assets.md">Assets</a></p>
15
+ <p align="center"><a href="https://johnmorrisdotca.github.io/uchusen-rockets/"><strong>Open the demo →</strong></a> · <a href="./docs/variants.md">Variants and sizes</a> · <a href="./docs/parts.md">Build from parts</a> · <a href="./docs/element.md">The element</a> · <a href="./docs/flight.md">Lit engines and flights</a> · <a href="./docs/embed.md">Use one on your site</a> · <a href="./docs/assets.md">Assets</a> · <a href="./docs/guides/getting-started.md">Guides</a> · <a href="https://johnmorrisdotca.github.io/uchusen-rockets/builder.html">Code builder</a> · <a href="https://johnmorrisdotca.github.io/uchusen-rockets/docs/">Docs site</a></p>
14
16
 
15
17
  <p align="center"><img alt="Block 3 of the rocket as a painted 3D view, stainless steel with black tiles, beside its controls and its sizes, each with a source." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/main-painted.jpg" width="820"></p>
16
18
 
@@ -23,7 +25,7 @@ Uchūsen means "spaceship". Each rocket comes in every variant a source document
23
25
 
24
26
  <p align="center"><img alt="Every rocket at one scale: Starship, Falcon 9, Falcon 9 with Dragon 2, Falcon Heavy, Grasshopper and Dragon 2, as line drawings beside a ruler, a building and a person." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/family.jpg" width="820"></p>
25
27
 
26
- ## One minute
28
+ ## In 30 seconds
27
29
 
28
30
  ```sh
29
31
  npm install @johnmorrisdotca/uchusen-rockets three
@@ -39,21 +41,96 @@ npm install @johnmorrisdotca/uchusen-rockets three
39
41
  <uchusen-rocket rocket="starship" variant="v2" show="booster" look="thick" view="below"></uchusen-rocket>
40
42
  ```
41
43
 
42
- That is all a page needs with a bundler. The drawing shows at once; when the element comes on screen and the browser can draw WebGL, the 3D view takes over without a jump. Drag to turn it, use the arrow keys, or leave it to its slow spin; or hand it to the family's shared view controls (angle, tilt, zoom, move) with `element.drive()`, see [the element](./docs/element.md#the-familys-view-controls). With no WebGL, under Save-Data, or on any failure, the drawing stays.
44
+ That is all a page needs with a bundler. The drawing shows at once; when the element comes on screen and the browser can draw WebGL, the 3D view takes over without a jump. Drag to turn it, use the arrow keys, or leave it to its slow spin. `engines="on"` lights each engine at full thrust, in the painted look and as a drawn flame in the line looks, and a reader who asked for reduced motion has them off. A flame's length and its shock diamonds are a picture, not a measurement. [A flight](docs/flight.md) plays each phase with the engines that burn in it, from published timelines. With no WebGL, under Save-Data, or on any failure, the drawing stays.
45
+
46
+ ## Who it is for
47
+
48
+ - **A developer who wants a rocket on a page** with one tag, no build step, and a drawing that is there before any 3D has loaded.
49
+ - **A writer or teacher** who needs a rocket to scale, beside a person and a building, with every size traceable to a source.
50
+ - **A maker of tools** who wants rockets as data: variants, sourced sizes, parts that carry their own joints, and a check that says whether a mix goes together.
51
+ - **Anyone who must credit what they show**: a painted rocket's licence travels with it, in every form it is copied.
52
+
53
+ ## Features
54
+
55
+ - Twenty-three kinds of thing, from Starship to the Hubble Space Telescope, each in every variant a source documents, with its own sizes.
56
+ - Three looks (`line`, `thick`, `painted`), five views, together, apart and each part alone, for every one of them.
57
+ - A drawing made by code, and a 3D view that takes over without a jump. With no WebGL, under Save-Data or on any failure, the drawing stays.
58
+ - Lit engines at full thrust, and flights played phase by phase from published timelines.
59
+ - `check` and `build`: a typed part record, a fit check, a `.glb` mesh and an SVG, in Node or a browser, with no three.js.
60
+ - `<uchusen-lineup>`: rockets at one scale with a ruler, a person and a building.
61
+ - Six ways to copy a rocket into your own page, with the credit written in.
62
+ - A strict content security policy is enough. No network request but the painted model you ask for.
63
+
64
+ ## Use it in your project
65
+
66
+ ```sh
67
+ npm install @johnmorrisdotca/uchusen-rockets three
68
+ ```
69
+
70
+ ```ts no-run
71
+ import "@johnmorrisdotca/uchusen-rockets/element";
72
+ ```
73
+
74
+ Import the element once, anywhere in your client code, and use the tag. `three` is an optional peer dependency, loaded only for a 3D view. Copy `node_modules/@johnmorrisdotca/uchusen-rockets/dist/assets` to a folder your site serves and call `setAssetBase("/that/folder/")` if you want painted models. [Getting started](docs/guides/getting-started.md) and [React and other frameworks](docs/guides/react-and-frameworks.md) go through it step by step.
75
+
76
+ ## Use it anywhere
77
+
78
+ A page with no bundler loads the element from a CDN, with an import map for three.js:
79
+
80
+ ```html
81
+ <script type="importmap">
82
+ { "imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.186.1/build/three.module.js" } }
83
+ </script>
84
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@johnmorrisdotca/uchusen-rockets@0/dist/element.js"></script>
85
+ <uchusen-rocket rocket="falcon-heavy" look="thick" view="below"></uchusen-rocket>
86
+ ```
87
+
88
+ A page that cannot run script uses an iframe of the embed page:
89
+
90
+ ```html
91
+ <iframe src="https://johnmorrisdotca.github.io/uchusen-rockets/embed.html?rocket=starship&variant=v3&look=line" title="Starship Block 3" style="width:100%;max-width:480px;aspect-ratio:3 / 4;border:0"></iframe>
92
+ ```
93
+
94
+ ## Put one on your own site
95
+
96
+ The drawings are there to be used. The demo copies the code for the rocket on the screen, in six ways: a CDN script and the element, an iframe of the embed page (for a site that cannot run script), a module, the SVG, a data address, and a link to the picture in the package. It saves an SVG or a PNG too. [docs/embed.md](docs/embed.md) has each one.
97
+
98
+ A painted rocket's CC BY credit is written into every one of those, from the parts that are showing. A line drawing does not carry it, and neither does a variant this package paints itself.
99
+
100
+ ```ts
101
+ import { attributesFromOptions, embedCode, optionsFromAttributes, rocketFromParams, rocketToParams } from "@johnmorrisdotca/uchusen-rockets";
102
+
103
+ const options = { rocket: "falcon-9", variant: "block-5", look: "thick", view: "below", show: "apart" };
104
+ const attributes = attributesFromOptions(options);
105
+ function read(name) {
106
+ return Object.hasOwn(attributes, name) ? attributes[name] : null;
107
+ }
108
+ const back = optionsFromAttributes(read);
109
+ back.rocket; // "falcon-9"
110
+ rocketToParams(options).get("show"); // "apart"
111
+ rocketFromParams(rocketToParams(options)).view; // "below"
112
+ embedCode(options, "iframe").includes("embed.html"); // true
113
+ embedCode({ rocket: "starship", variant: "v3", look: "painted" }, "element").includes("Clarence365"); // true
114
+ embedCode({ rocket: "starship", variant: "v3", look: "line" }, "element").includes("Clarence365"); // false
115
+ ```
43
116
 
44
117
  | Attribute | Values |
45
118
  | --- | --- |
46
- | `rocket` | `starship`, `falcon-9`, `falcon-heavy`, `dragon`, `grasshopper` |
47
- | `variant` | Starship: `v1-flight1`, `v1`, `v2`, `v3`, `v4`, `2019`. Falcon 9: `v1.0`, `v1.1`, `ft`, `block-5`, `block-5-dragon-2`. Dragon: `dragon-1`, `dragon-2` |
48
- | `show` | `together`, `apart`, or a part: `booster`, `ship`, `first-stage`, `second-stage`, `fairing`, `trunk`, `capsule`, `centre`, `side-left`, `side-right` |
119
+ | `rocket` | `starship`, `falcon-9`, `falcon-heavy`, `dragon`, `grasshopper`, `falcon-1`, `saturn-v`, `space-shuttle`, `sls`, `new-glenn`, `electron`, `soyuz`, `droneship`, `landing-zone`, `launch-tower`, `starbase`, `lunar-module`, `apollo-soyuz`, `gemini`, `mercury`, `jupiter-c`, `iss`, `hubble` |
120
+ | `variant` | Starship: `v1-flight1`, `v1`, `v2`, `v3`, `v4`, `2019`. Falcon 9: `v1.0`, `v1.1`, `ft`, `block-5`, `block-5-dragon-2`. Dragon: `dragon-1`, `dragon-2`, `cargo-dragon-2`, `crew-dragon-inside`. Falcon 1: `falcon-1`, `falcon-1e`. Saturn V: `saturn-v`. Space Shuttle: `stack`, `discovery`. Space Launch System: `block-1`. New Glenn: `7x2`. Electron: `electron`. Soyuz: `soyuz-2`. Drone ships: `ocisly`, `jrti`, `asog`. Landing zones: `lz-1`, `lz-4`. Launch tower: `tower`, `stack`, `catch`. Starbase: `launch-site`, `build-site`, `city`. Apollo lunar module: `lunar-module`. Apollo and Soyuz: `apollo-soyuz`. Gemini: `gemini`. Mercury: `friendship-7`. Jupiter-C: `jupiter-c`. International Space Station: `iss`. Hubble Space Telescope: `hubble` |
121
+ | `show` | `together`, `apart`, or a part: `booster`, `ship`, `first-stage`, `second-stage`, `fairing`, `trunk`, `capsule`, `centre`, `side-left`, `side-right`, and each rocket's own: `descent`, `ascent`, `csm`, `docking-module`, `soyuz`, `adapter`, `station`, `telescope` and the rest |
49
122
  | `look` | `line`, `thick`, `painted` |
50
123
  | `view` | `three-quarter`, `front`, `back`, `side`, `below` |
51
124
 
52
125
  Changing `look` keeps the angle. Changing `show` is an animated move, and a cut under reduced motion. Each part alone fills the frame and has its own listed size. Every look works for every variant and every choice of parts. Front is the windward, tiled side; back is the steel side.
53
126
 
127
+ <p align="center"><img alt="The code builder: a row of makers, rockets, variants, parts, looks and views beside the rocket, and the code to copy below." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/builder.jpg" width="820"></p>
128
+
129
+ <p align="center"><img alt="The demo on a phone, the rocket on a screen 390 pixels wide." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/phone.jpg" width="320"></p>
130
+
54
131
  ## The rockets
55
132
 
56
- Starship; Falcon 9 in v1.0, v1.1, Full Thrust and Block 5, with a fairing or with Dragon 2; Falcon Heavy; Dragon 1 and Dragon 2; and Grasshopper, the test vehicle. Falcon 1 is still to come.
133
+ Starship; Falcon 9 in v1.0, v1.1, Full Thrust and Block 5, with a fairing or with Dragon 2; Falcon Heavy; Dragon 1, Dragon 2 and Cargo Dragon 2, and Crew Dragon cut open to see inside; Grasshopper, the test vehicle; and Falcon 1, with the Falcon 1e that was announced and never flew. From other makers, to compare at one scale, each drawn by this package's code from its published sizes: Saturn V; the Space Shuttle, stacked with its tank and boosters, each part alone too, and Discovery, a real scan; the Space Launch System, Block 1 with Orion; New Glenn 7×2; Electron; and Soyuz-2. And where a booster lands: drone ships and landing zones. The Starbase integration tower too, with its mount and arms, a Block 3 stacked on it, or catching its booster. And Starbase, as a scene from the map: `launch-site`, `build-site` and `city`. The Apollo lunar module, painted by NASA's model. Apollo docked to Soyuz, painted by NASA's model, stood on end. The Gemini spacecraft, painted by NASA's model. The Mercury spacecraft, as Friendship 7, painted by NASA's model. Jupiter-C, painted by NASA's model. The International Space Station, painted by NASA's model, of the station as it was when that was made. And the Hubble Space Telescope, painted by NASA's model. <!-- more rockets -->
57
134
 
58
135
  ```html
59
136
  <uchusen-rocket rocket="falcon-9" variant="block-5" show="apart" look="painted"></uchusen-rocket>
@@ -121,9 +198,9 @@ rocket.svg({ look: "thick", view: "below", show: "booster" }).startsWith("<svg")
121
198
 
122
199
  | Entry | What | Needs |
123
200
  | --- | --- | --- |
124
- | `@johnmorrisdotca/uchusen-rockets` | The rockets and variants (`ROCKETS`, `variantOf`, `SOURCES`), the parts (`PART_ENTRIES`), the fit check (`check`), the camera rule, the looks, the credits (`MODEL_CREDITS`) | Nothing |
201
+ | `@johnmorrisdotca/uchusen-rockets` | The rockets and variants (`ROCKETS`, `variantOf`, `SOURCES`, `MAKERS`), the parts (`PART_ENTRIES`), the fit check (`check`), the builder's rows (`builderState`), flights (`flightOf`, `FLIGHTS`) and which engines burn (`pickBells`), the camera rule, the looks, the credits (`MODEL_CREDITS`), and `embedCode` | Nothing |
125
202
  | `.../build` | `build(description)`, `buildPart(id)`, `lineupSvg`: one mesh and one drawing, in Node or a browser | Nothing |
126
- | `.../element` | `<uchusen-rocket>` and `<uchusen-lineup>`: load `three` only when a 3D view is wanted, and a painted model only when the painted look is | `three` for 3D |
203
+ | `.../element` | `<uchusen-rocket>`, `<uchusen-lineup>` and `<uchusen-flight>`: load `three` only when a 3D view is wanted, and a painted model only when the painted look is | `three` for 3D |
127
204
  | `.../react` | A thin `<UchusenRocket>` wrapper | `react` |
128
205
  | `.../assets/*` | Ready files: `starship-v3.glb`, `starship-v3.svg`, `starship-v3-booster.thick.svg`, `parts/raptor-vacuum.glb`, `models/starship-v3-ship.glb` | Nothing |
129
206
 
@@ -145,7 +222,14 @@ import { UchusenRocket } from "@johnmorrisdotca/uchusen-rockets/react";
145
222
 
146
223
  ## Licences, credits and a word on trademarks
147
224
 
148
- The code, the code-made meshes and the drawings are under the MIT licence. **The painted models are not: they stay under Creative Commons Attribution 4.0, and using them means crediting them.** `check(description).credits` says which belong to a rocket.
225
+ The code, the code-made meshes and the drawings are under the MIT licence. **The painted models are not: they stay under Creative Commons Attribution 4.0, or public domain where the row says so, and using them means crediting them.** `check(description).credits` says which belong to a rocket.
226
+
227
+ ```ts
228
+ import { check } from "@johnmorrisdotca/uchusen-rockets";
229
+
230
+ check({ rocket: "starship", variant: "v3" }).credits[0].licence; // "CC BY 4.0"
231
+ ```
232
+ **Starbase's coordinates and outlines, its map heights and the tower's 13 m footprint are © OpenStreetMap contributors, under ODbL 1.0, not MIT** (https://www.openstreetmap.org/copyright).
149
233
 
150
234
  | Painted | Title | Creator | Source | Changed |
151
235
  | --- | --- | --- | --- | --- |
@@ -159,14 +243,202 @@ The code, the code-made meshes and the drawings are under the MIT licence. **The
159
243
  | Falcon Heavy | SpaceX Falcon Heavy(Low Poly) | [Antonio_Adams](https://sketchfab.com/AAdams3112) | [Sketchfab](https://sketchfab.com/3d-models/spacex-falcon-heavylow-poly-0dc068a462e34258b3872085a7f592c8) | Wordmark and logos painted out, rescaled to sourced sizes, side boosters separated |
160
244
  | Grasshopper | SpaceX Grasshopper | [Echo_3](https://sketchfab.com/Echo_3) | [Sketchfab](https://sketchfab.com/3d-models/spacex-grasshopper-35c07a68cdb246c59bb425610b934bf8) | Wordmark and logo removed, rescaled to the sourced height, reduced |
161
245
 
162
- All under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). Starship Blocks 1, 2 and 4 and the older Falcon 9s are painted by this package's own code: no model is stretched to stand in for another version.
246
+ | Discovery | Orbiter, Space Shuttle, OV-103, Discovery | [Smithsonian Institution, National Air and Space Museum](https://3d.si.edu/) | [Smithsonian 3D](https://3d.si.edu/object/3d/orbiter-space-shuttle-ov-103-discovery:d8c636ce-4ebc-11ea-b77f-2e728ce88125) | Marks painted out, reduced, stood upright, rescaled to the sourced length. Under CC0 |
247
+
248
+ | Space Shuttle, stacked | Shuttle (Hi-Res) and Shuttle Parts (Hi-Res) | [NASA](https://science.nasa.gov/3d-resources/) | [Orbiter](https://data.nasa.gov/dataset/nasa-3d-models-shuttle-hi-res), [tank and boosters](https://data.nasa.gov/dataset/nasa-3d-models-shuttle-parts-hi-res) | Marks painted out, bay shut, reduced, stood upright, rescaled to the sourced lengths. Public domain |
249
+ | Apollo lunar module | Apollo Lunar Module | [NASA](https://science.nasa.gov/3d-resources/) | [data.nasa.gov](https://data.nasa.gov/dataset/nasa-3d-models-apollo-lunar-module) | Flag and name removed, reduced, rescaled to the sourced height, its stages separated. Public domain |
250
+ | Apollo and Soyuz, docked | Apollo Soyuz | [NASA](https://science.nasa.gov/3d-resources/) | [data.nasa.gov](https://data.nasa.gov/dataset/nasa-3d-models-apollo-soyuz) | Flags and names painted out, reduced, rescaled to the sourced sizes, stood on end, its craft separated. Public domain |
251
+ | Gemini | Gemini | [NASA](https://science.nasa.gov/3d-resources/) | [data.nasa.gov](https://data.nasa.gov/dataset/nasa-3d-models-gemini) | Flag and name painted out, reduced, rescaled to the sourced length, its parts separated. Public domain |
252
+ | Mercury, Friendship 7 | Friendship 7 | [NASA](https://science.nasa.gov/3d-resources/) | [data.nasa.gov](https://data.nasa.gov/dataset/nasa-3d-models-friendship-7) | Reduced, rescaled to the sourced sizes, its colours judged from photographs. Public domain |
253
+ | Jupiter-C | Jupiter-C | [NASA](https://science.nasa.gov/3d-resources/) | [data.nasa.gov](https://data.nasa.gov/dataset/nasa-3d-models-jupiter-c) | Lettering removed, rescaled to the sourced height. Public domain |
254
+ | International Space Station | ISS | [NASA](https://science.nasa.gov/3d-resources/) | [data.nasa.gov](https://data.nasa.gov/dataset/nasa-3d-models-iss) | Reduced, stray pieces left out, rescaled to the sourced length, its colours judged from photographs. Public domain |
255
+ | Hubble Space Telescope | Hubble Space Telescope | [NASA](https://science.nasa.gov/3d-resources/) | [data.nasa.gov](https://data.nasa.gov/dataset/nasa-3d-models-hubble-space-telescope) | A lettered plate painted out, rescaled to the sourced length. Public domain |
256
+ <!-- more NASA models -->
257
+
258
+ All but Discovery and NASA's are under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). NASA is named as the source of its models, as its guidelines ask, with no suggestion that it endorses this package, and no NASA logo, insignia, flag or lettering is shipped: [NOTICE.md](NOTICE.md) says what that rests on. Starship Blocks 1, 2 and 4 and the older Falcon 9s are painted by this package's own code: no model is stretched to stand in for another version.
259
+
260
+ **No mesh or drawing carries a logo, a wordmark or a flag.** Rocket names appear only as plain descriptive words. All trademarks belong to their owners, and this project is not affiliated with or endorsed by SpaceX, NASA or any other maker or agency named here. [NOTICE.md](NOTICE.md) names each source and what was taken from it.
261
+
262
+ ## Examples
263
+
264
+ Every `ts` block in this README and in the guides runs against the built package (`pnpm test:readme`).
265
+
266
+ ```ts
267
+ import { check, variantOf } from "@johnmorrisdotca/uchusen-rockets";
268
+
269
+ const falcon = variantOf("falcon-9", "block-5");
270
+ falcon.facts.height.value; // 69.8
271
+ check({ rocket: "falcon-9", variant: "block-5" }).ok; // true
272
+ check({ rocket: "falcon-9", variant: "block-5" }).custom; // false
273
+ ```
274
+
275
+ ```ts
276
+ import { showsOf, variantOf } from "@johnmorrisdotca/uchusen-rockets";
277
+
278
+ showsOf(variantOf("falcon-9", "block-5").slots).includes("apart"); // true
279
+ ```
280
+
281
+ ```ts
282
+ import { lineupSvg } from "@johnmorrisdotca/uchusen-rockets/build";
283
+
284
+ const picture = lineupSvg({ items: ["starship:v3", "falcon-9:block-5", "person"], unit: 4, ruler: true, labels: true });
285
+ picture.items.length; // 3
286
+ picture.svg.startsWith("<svg"); // true
287
+ ```
288
+
289
+ ```ts
290
+ import { cleanLook, cleanView } from "@johnmorrisdotca/uchusen-rockets";
291
+
292
+ cleanLook("shiny"); // "line"
293
+ cleanView("below"); // "below"
294
+ ```
295
+
296
+ Anything from outside is treated as text: an attribute that is not in its list falls back to the default and nothing else.
163
297
 
164
- **No mesh or drawing carries a logo, a wordmark or a flag.** Rocket names appear only as plain descriptive words. All trademarks belong to their owners, and this project is not affiliated with or endorsed by SpaceX. [NOTICE.md](NOTICE.md) names each source and what was taken from it.
298
+ ## The code builder
165
299
 
166
- ## Still to come
300
+ [The code builder](https://johnmorrisdotca.github.io/uchusen-rockets/builder.html) is one screen: choose the maker, the rocket, the variant, the parts, the look, the view and the engines, see the rocket, and copy the code for any of the six ways. A painted rocket's credit is under the code. It is built from `ROCKETS`, `showsOf`, `embedCode` and `paintedCredit`, so it offers every rocket the package has, as it gains them.
301
+
302
+ ## Lit engines and flights
303
+
304
+ ```html
305
+ <uchusen-rocket id="rocket" rocket="falcon-9" variant="block-5" look="painted" engines="on"></uchusen-rocket>
306
+ <uchusen-flight for="rocket"></uchusen-flight>
307
+ ```
308
+
309
+ <p align="center"><img alt="Falcon 9 painted, seen from below with its engines lit." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/engines.jpg" width="360"></p>
310
+
311
+ <p align="center"><img alt="The flight bar: play, back, a slider and next, what happens at hot staging and a chart of the engines that burn." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/flight.jpg" width="720"></p>
312
+
313
+ `engines="on"` lights each engine that shows, and a flight lights only the engines that burn in each phase, from a published timeline. How the picture moves between phases, and a flame's length, is illustrative; the times and counts are sourced. [The guide](docs/guides/engines-and-flights.md) has the details.
314
+
315
+ ## NASA's models
316
+
317
+ The Apollo lunar module, Apollo docked to Soyuz, Gemini, Mercury, Jupiter-C, the Space Shuttle, the International Space Station and the Hubble Space Telescope are painted by NASA's own public-domain models, each with its marks removed and its sizes set from a source.
318
+
319
+ <p align="center">
320
+ <img alt="The Apollo lunar module painted from NASA's model." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/lunar-module.jpg" width="300">
321
+ <img alt="The Space Shuttle stacked for launch, painted from NASA's models." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/shuttle.jpg" width="300">
322
+ </p>
323
+
324
+ ## API
325
+
326
+ The reference is a site, made from the source's own doc comments: every export has a summary, its parameters, what it returns, and an example that runs when the site is built. [Open the reference](https://johnmorrisdotca.github.io/uchusen-rockets/docs/).
327
+
328
+ ```ts
329
+ import { ROCKETS, PART_ENTRIES, SOURCES, MODEL_CREDITS } from "@johnmorrisdotca/uchusen-rockets";
330
+
331
+ Object.keys(ROCKETS).length > 20; // true
332
+ PART_ENTRIES.length > 100; // true
333
+ Object.keys(SOURCES).length > 20; // true
334
+ Object.keys(MODEL_CREDITS).length > 10; // true
335
+ ```
336
+
337
+ <p align="center"><img alt="The documentation site: a search box, the entry points, the guides in sections, and every export with its example." src="https://raw.githubusercontent.com/johnmorrisdotca/uchusen-rockets/main/docs/images/docs-site.jpg" width="720"></p>
338
+
339
+ ## Guides
340
+
341
+ Each guide has a Japanese twin in [docs/guides/ja](docs/guides/ja).
342
+
343
+ | Guide | What it is for |
344
+ | --- | --- |
345
+ | [Getting started](docs/guides/getting-started.md) | A rocket on a page in ten minutes |
346
+ | [Looks, views and parts](docs/guides/looks-views-and-parts.md) | The three choices that change what you see |
347
+ | [Build a rocket from parts](docs/guides/build-from-parts.md) | Part records, the fit check, `build`, the builder |
348
+ | [Lit engines and flights](docs/guides/engines-and-flights.md) | Engines at full thrust, flights, what is sourced |
349
+ | [Rockets to scale](docs/guides/scale-lineups.md) | `<uchusen-lineup>` and `lineupSvg` |
350
+ | [Put a rocket on your own site](docs/guides/embed-on-your-site.md) | Six ways, and the credit |
351
+ | [React and other frameworks](docs/guides/react-and-frameworks.md) | React, Vue, Svelte, Angular |
352
+ | [Ready files and 3D models](docs/guides/assets-and-3d-files.md) | The `.glb` and `.svg` files |
353
+ | [Variants and sourced sizes](docs/guides/variants-and-sources.md) | Why a figure names its source |
354
+ | [Licences, credits and trademarks](docs/guides/licences-and-credits.md) | What is MIT, CC BY, public domain, ODbL |
355
+ | [Architecture](docs/guides/architecture.md) | How the layers fit |
356
+ | [Troubleshooting](docs/guides/troubleshooting.md) | Why the 3D view or the model is missing |
357
+ | [Upgrading](docs/guides/upgrading.md) | What to look for between versions |
358
+
359
+ ## Limits
360
+
361
+ - A rocket is only as good as its sources. A figure no source gives is blank, never estimated, and a blank is shown as one.
362
+ - A flame's length and its shock diamonds, how parts move between flight phases, smoke and the ground falling away are pictures, not measurements.
363
+ - A part with no licensed model is painted by this package's own code from photographs and sizes. It is a likeness, not a scan.
364
+ - A flight exists only for the variants a published timeline covers. A custom build has none.
365
+ - A painted model is up to 8 MB and is fetched only when asked for. Code-made meshes stay under 600 KB and drawings under 80 KB.
366
+ - There is no logo, wordmark or flag on anything, so a rocket is never "the real livery".
367
+
368
+ ```ts
369
+ import { variantOf } from "@johnmorrisdotca/uchusen-rockets";
370
+
371
+ variantOf("starship", "2019").facts.diameter.value; // null
372
+ ```
373
+
374
+ ## Accessibility
375
+
376
+ - The element has an accessible name from its `label` attribute, or from the fit report's label (such as "Block 3 (V3)") when there is none. The 3D view's canvas says how to turn it.
377
+ - A reader who asked for reduced motion gets no spin, no flames, no played flight and a cut instead of an animated move. The slider and charts still work.
378
+ - Turning works by drag, touch and the keyboard: the arrow keys turn it, `+` and `-` zoom, Home puts it back.
379
+ - The demo's controls are at least 44 pixels tall and work with a keyboard.
380
+
381
+ ```html
382
+ <uchusen-rocket rocket="starship" variant="v3" label="Starship Block 3, taken apart" show="apart"></uchusen-rocket>
383
+ ```
384
+
385
+ ## Browser and runtime support
386
+
387
+ - Using the package needs Node 22 or later. Working on it needs 22.18 or later.
388
+ - In a browser, any current one. The 3D view needs WebGL; without it the drawing stays.
389
+ - The test suite runs the demo in Chromium and WebKit at a phone's width and a desk's, and the packed package on Linux, macOS and Windows, on Node 22 and 24.
390
+ - `three` `>=0.170.0` and `react` `>=18` are optional peer dependencies.
391
+
392
+ ## Languages
393
+
394
+ The documentation is in English and Japanese: each guide in [docs/guides](docs/guides) has a twin in [docs/guides/ja](docs/guides/ja), and the documentation site switches between them. The rockets' own names are plain descriptive words and are the same in both.
395
+
396
+ ## Architecture
397
+
398
+ The data is typed once. A part is a table of numbers: its real size in metres and the joints it mates at. A mesh and a drawing come from the same pieces, so they cannot disagree with each other or with the data. The root and `build` entries import neither three.js nor the DOM; the element loads three.js only for a 3D view.
399
+
400
+ ```ts
401
+ import { build } from "@johnmorrisdotca/uchusen-rockets/build";
402
+
403
+ const a = build({ rocket: "falcon-9", variant: "block-5" }).glb().bytes;
404
+ const b = build({ rocket: "falcon-9", variant: "block-5" }).glb().bytes;
405
+ a.length === b.length; // true
406
+ ```
407
+
408
+ A mesh is a pure function of its description: the same description gives the same bytes. [Architecture](docs/guides/architecture.md) has the layers.
409
+
410
+ ## Development
411
+
412
+ ```sh
413
+ pnpm install
414
+ pnpm check # lint, types, tests, the build and the packed package
415
+ pnpm test:readme # run every example of the README, the docs and the guides
416
+ pnpm docs:check # the reference site's checks: every export documented, every example run
417
+ pnpm test:demo # the demo in a real browser
418
+ pnpm dev # the demo on http://127.0.0.1:7900/uchusen-rockets/
419
+ pnpm screenshots # the pictures in docs/images
420
+ ```
421
+
422
+ ## Contributing
423
+
424
+ Bug reports, ideas and pull requests are welcome: see [CONTRIBUTING.md](CONTRIBUTING.md). The rules that matter most: a figure names its source or is blank, no logos or marks, a mesh is a pure function of its description, and anything from outside is text.
425
+
426
+ ## Changes
427
+
428
+ [CHANGELOG.md](CHANGELOG.md) lists every release with its date.
429
+
430
+ ## Roadmap
431
+
432
+ `PLANNED_ROCKETS` lists rockets with sourced facts and no shape yet: Vulcan Centaur and Ariane 6.
433
+
434
+ ```ts
435
+ import { PLANNED_ROCKETS } from "@johnmorrisdotca/uchusen-rockets";
436
+
437
+ PLANNED_ROCKETS.map((rocket) => rocket.id).length > 0; // true
438
+ ```
167
439
 
168
- `PLANNED_ROCKETS` lists rockets with sourced facts and no shape yet: Falcon 1.
440
+ A rocket goes in only when a source documents it.
169
441
 
170
442
  ## The rest
171
443
 
172
- [CONTRIBUTING.md](CONTRIBUTING.md) · [SECURITY.md](SECURITY.md) · [CHANGELOG.md](CHANGELOG.md) · [NOTICE.md](NOTICE.md) · MIT licence, and CC BY 4.0 for the painted models
444
+ [CONTRIBUTING.md](CONTRIBUTING.md) · [SECURITY.md](SECURITY.md) · [CHANGELOG.md](CHANGELOG.md) · [NOTICE.md](NOTICE.md) · MIT licence, CC BY 4.0 for the painted models, and ODbL 1.0 for the map data
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 640" width="480" height="640" role="img" aria-label="Apollo and Soyuz, docked"><defs><linearGradient id="hull" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#7f858c"/><stop offset=".55" stop-color="#e6e9ec"/><stop offset="1" stop-color="#8d9399"/></linearGradient><linearGradient id="white" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#b9bab5"/><stop offset=".55" stop-color="#f4f4ef"/><stop offset="1" stop-color="#c2c3be"/></linearGradient><linearGradient id="tile" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0b0c0e"/><stop offset=".55" stop-color="#26282c"/><stop offset="1" stop-color="#0b0c0e"/></linearGradient><linearGradient id="metal" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#5a5f66"/><stop offset=".55" stop-color="#a9afb6"/><stop offset="1" stop-color="#5a5f66"/></linearGradient><linearGradient id="dark" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#111316"/><stop offset=".55" stop-color="#2a2d31"/><stop offset="1" stop-color="#111316"/></linearGradient><linearGradient id="bell" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#141518"/><stop offset=".55" stop-color="#3c3f44"/><stop offset="1" stop-color="#141518"/></linearGradient><linearGradient id="foam" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#6e3a1b"/><stop offset=".55" stop-color="#c8743a"/><stop offset="1" stop-color="#6e3a1b"/></linearGradient><pattern id="hex" width="9" height="15.6" patternUnits="userSpaceOnUse"><path d="M4.5 0L9 2.6V7.8L4.5 10.4L0 7.8V2.6ZM4.5 10.4V15.6M0 2.6V0M9 2.6V0" fill="none" stroke="#3a3d42" stroke-width=".35" opacity=".5"/></pattern></defs><path d="M322.6 308.8L322.7 293.2L323.1 293.2L360.2 296.3L360 312.1L359.7 312.2Z" fill="url(#dark)" stroke="#30343a" stroke-width="0.6"/><path d="M362.9 386.4L363 377.1L363.1 376.5L368.5 365.7L368.9 365.4L369.7 365L370.7 364.7L372.1 364.5L373.7 364.3L375.4 364.1L377.3 364.1L379.3 364L381.3 364.1L383.3 364.2L385.1 364.4L386.8 364.6L388.3 364.9L389.6 365.2L390.6 365.5L391.2 365.9L391.5 366.2L396.6 377.3L396.5 386.7L396.4 387.3L391.5 395.7L391.1 396.1L390.3 396.5L389.2 396.8L383.4 398.2L382.8 398.3L382.1 398.4L381.4 398.5L380.6 398.5L379.8 398.5L378.9 398.5L378.1 398.4L377.3 398.4L376.6 398.3L376 398.1L370.7 396.7L369.4 396.3L368.5 395.9L367.8 395.5L367.5 395.1Z" fill="url(#white)" stroke="#30343a" stroke-width="0.6"/><path d="M360.8 326.6L361 326L361.7 325.5L363 325L364.9 324.6L367.1 324.2L369.8 323.9L372.8 323.7L376.1 323.6L379.4 323.6L382.8 323.6L386.2 323.8L389.3 324L392.2 324.4L394.8 324.8L397 325.2L398.6 325.7L399.7 326.3L400.3 326.8L399.4 352.1L399.3 352.7L391.5 366.6L391.1 367L390.3 367.3L389.3 367.6L387.9 367.9L386.3 368.1L384.6 368.2L382.6 368.3L380.6 368.3L378.6 368.3L376.6 368.2L374.7 368L373 367.8L371.5 367.5L370.3 367.2L369.3 366.8L368.7 366.5L368.4 366.1L361 351.9Z" fill="url(#white)" stroke="#30343a" stroke-width="0.6"/><path d="M371.4 354.9L377.2 355.3L383.3 355.4L389.1 355.2L394 354.6L397.5 353.8L399.3 352.8M361.1 352.2L363 353.3L366.5 354.2L371.4 354.9" fill="none" stroke="#30343a" stroke-width="0.5"/><path d="M359.7 326.6L360.1 294.8L360.3 294.3L361.1 293.8L362.5 293.3L364.4 292.9L366.8 292.6L369.7 292.3L372.9 292.1L376.3 292L379.8 292L383.4 292.1L387 292.2L390.3 292.4L393.4 292.7L396.1 293.1L398.4 293.5L400.1 294L401.3 294.5L401.9 295L401.4 326.8L401.3 327.4L400.6 328L399.3 328.5L397.4 329L395 329.4L392.1 329.7L388.9 329.9L385.4 330L381.7 330.1L378.1 330L374.5 329.8L371.1 329.6L368 329.2L365.2 328.8L363 328.3L361.3 327.7L360.2 327.2Z" fill="url(#metal)" stroke="#30343a" stroke-width="0.6"/><path d="M371.1 329.2L377.3 329.7L384 329.8L390.2 329.5L395.5 329L399.3 328.2L401.2 327.2M360 326.6L361.9 327.6L365.7 328.5L371.1 329.2" fill="none" stroke="#30343a" stroke-width="0.5"/><path d="M359.2 280.7L359.4 280.2L360.2 279.7L361.7 279.3L363.7 278.9L366.3 278.6L369.3 278.3L372.6 278.1L376.2 278L380 278L383.8 278L387.5 278.2L391 278.4L394.3 278.7L397.1 279.1L399.5 279.5L401.4 279.9L402.6 280.4L403.2 280.9L401.9 295L401.8 295.5L401.1 296L399.8 296.4L397.9 296.8L395.5 297.2L392.6 297.5L389.4 297.7L385.9 297.8L382.2 297.8L378.5 297.8L374.9 297.6L371.5 297.4L368.4 297.1L365.7 296.7L363.4 296.3L361.7 295.8L360.6 295.3L360.1 294.8Z" fill="url(#white)" stroke="#30343a" stroke-width="0.6"/><path d="M401.8 316L402.1 299.9L402.4 299.8L441.9 303.1L441.6 319.4L441.3 319.5Z" fill="url(#dark)" stroke="#30343a" stroke-width="0.6"/><path d="M191.1 406.1L191.4 405.7L192.1 405.3L193 404.9L194.3 404.5L195.8 404.3L197.5 404L199.3 403.9L201.3 403.8L203.2 403.7L205.2 403.8L207.1 403.9L208.8 404.1L210.4 404.4L211.7 404.7L212.8 405L213.5 405.4L213.9 405.8L214 406.2L213.7 406.7L213.1 407.1L212.2 407.5L210.9 407.8L209.4 408.1L207.7 408.3L205.9 408.5L203.9 408.6L201.9 408.6L199.9 408.6L198 408.4L196.2 408.2L194.6 408L193.3 407.7L192.3 407.3L191.5 406.9L191.2 406.5Z" fill="url(#dark)"/><path d="M190.9 370.2L191.2 369.8L191.9 369.5L192.8 369.1L194.1 368.8L195.6 368.6L197.3 368.4L199.2 368.2L201.1 368.1L203.1 368.1L205.1 368.2L207 368.3L208.7 368.4L210.3 368.7L211.6 368.9L212.7 369.3L213.4 369.6L213.8 370L213.9 370.4L214 406.2L213.7 406.7L213.1 407.1L212.2 407.5L210.9 407.8L209.4 408.1L207.7 408.3L205.9 408.5L203.9 408.6L201.9 408.6L199.9 408.6L198 408.4L196.2 408.2L194.6 408L193.3 407.7L192.3 407.3L191.5 406.9L191.2 406.5L191.1 406.1Z" fill="url(#dark)" stroke="#30343a" stroke-width="0.6"/><path d="M196.2 405L199.5 405.3L203.1 405.4L206.6 405.2L209.7 404.8L212.2 404.2L213.6 403.5M191.1 403.1L191.8 403.9L193.5 404.5L196.2 405M196.1 376.2L199.4 376.5L203 376.5L206.5 376.4L209.7 376L212.1 375.5L213.6 374.8M190.9 374.5L191.6 375.1L193.4 375.7L196.1 376.2" fill="none" stroke="#30343a" stroke-width="0.5"/><path d="M34.6 372.7L35.1 371.6L36.5 370.6L38.9 369.5L42.2 368.6L46.1 367.7L50.7 367L55.8 366.4L61.2 366L66.8 365.8L72.4 365.7L77.9 365.9L83 366.2L87.8 366.7L91.9 367.3L95.4 368.1L98 368.9L99.7 369.9L100.5 371L100.3 372.1L99 373.1L96.9 374.2L93.7 375.2L89.8 376.1L85.2 376.8L80 377.5L74.4 377.9L68.6 378.2L62.7 378.2L57 378.1L51.6 377.7L46.8 377.2L42.6 376.6L39.2 375.7L36.7 374.8L35.2 373.8Z" fill="url(#dark)"/><path d="M48.2 415L60.1 372L60.1 371.8L60.5 371.5L61 371.3L61.7 371.1L62.6 370.9L63.7 370.7L64.9 370.6L66.1 370.5L67.5 370.4L68.8 370.4L70.1 370.4L71.3 370.5L72.4 370.6L73.3 370.8L74.1 371L74.7 371.2L75.1 371.4L75.2 371.6L88.6 413.7L88.4 414.5L87.6 415.3L86.3 416L84.4 416.7L81.9 417.3L79.1 417.8L75.9 418.3L72.5 418.6L69 418.7L65.4 418.8L62 418.7L58.7 418.5L55.8 418.1L53.2 417.6L51.1 417.1L49.6 416.4L48.6 415.7Z" fill="url(#metal)" stroke="#30343a" stroke-width="0.6"/><path d="M55.8 417.8L61.3 418.3L67.6 418.4L73.9 418.1L79.6 417.4L84.3 416.4L87.3 415.1L88.5 413.7M48.3 414.3L49 415.7L51.6 416.9L55.8 417.8" fill="none" stroke="#30343a" stroke-width="0.5"/><path d="M32.8 287.1L33.3 286.3L34.7 285.6L37.1 284.9L40.4 284.2L44.4 283.6L49 283.1L54.2 282.7L59.6 282.4L65.3 282.2L70.9 282.2L76.4 282.2L81.7 282.5L86.4 282.8L90.6 283.3L94.1 283.8L96.7 284.4L98.5 285.1L99.2 285.9L100.5 371L100.3 372.1L99 373.1L96.9 374.2L93.7 375.2L89.8 376.1L85.2 376.8L80 377.5L74.4 377.9L68.6 378.2L62.7 378.2L57 378.1L51.6 377.7L46.8 377.2L42.6 376.6L39.2 375.7L36.7 374.8L35.2 373.8L34.6 372.7Z" fill="url(#white)" stroke="#30343a" stroke-width="0.6"/><path d="M46.3 352L55.4 352.7L65.8 352.9L76.2 352.5L85.8 351.5L93.4 350.1L98.3 348.4L100.2 346.7M35.1 349.2L39.3 350.8L46.3 352" fill="none" stroke="#30343a" stroke-width="0.3" opacity=".6"/><path d="M46.8 376.9L55.9 377.7L66.2 377.9L76.7 377.4L86.2 376.4L93.7 374.9L98.7 373L100.5 371.1M35.7 373.9L39.8 375.6L46.8 376.9M45 290.7L54.2 291.2L64.6 291.4L75.2 291L84.8 290.3L92.4 289.2L97.4 287.9L99.3 286.5M33.8 288.5L38 289.7L45 290.7" fill="none" stroke="#30343a" stroke-width="0.5"/><path d="M32.8 287.1L59.9 231.2L60 231.1L60.2 231L60.6 230.9L61.1 230.9L61.7 230.8L62.4 230.7L63.2 230.7L64.1 230.6L65 230.6L65.9 230.6L66.7 230.6L67.5 230.7L68.3 230.7L68.9 230.8L69.5 230.8L69.9 230.9L70.1 231L70.2 231.1L99.2 285.9L99 286.7L97.8 287.4L95.5 288.2L92.4 288.9L88.4 289.5L83.8 290.1L78.5 290.5L72.9 290.8L67 291L61.1 291L55.3 290.9L49.9 290.7L45 290.3L40.8 289.9L37.4 289.3L34.9 288.6L33.3 287.9Z" fill="url(#hull)" stroke="#30343a" stroke-width="0.6"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 640" width="480" height="640" role="img" aria-label="Apollo and Soyuz, docked"><defs><linearGradient id="hull" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0c1422"/><stop offset=".55" stop-color="#2a3850"/><stop offset="1" stop-color="#0c1422"/></linearGradient><linearGradient id="white" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0e1626"/><stop offset=".55" stop-color="#33435f"/><stop offset="1" stop-color="#0e1626"/></linearGradient><linearGradient id="tile" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#05080e"/><stop offset=".55" stop-color="#101827"/><stop offset="1" stop-color="#05080e"/></linearGradient><linearGradient id="metal" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#16202f"/><stop offset=".55" stop-color="#3a475c"/><stop offset="1" stop-color="#16202f"/></linearGradient><linearGradient id="dark" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#070b12"/><stop offset=".55" stop-color="#121a28"/><stop offset="1" stop-color="#070b12"/></linearGradient><linearGradient id="bell" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0a0f18"/><stop offset=".55" stop-color="#242f42"/><stop offset="1" stop-color="#0a0f18"/></linearGradient><linearGradient id="foam" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#16202f"/><stop offset=".55" stop-color="#3a475c"/><stop offset="1" stop-color="#16202f"/></linearGradient><pattern id="hex" width="9" height="15.6" patternUnits="userSpaceOnUse"><path d="M4.5 0L9 2.6V7.8L4.5 10.4L0 7.8V2.6ZM4.5 10.4V15.6M0 2.6V0M9 2.6V0" fill="none" stroke="#8fa1b8" stroke-width=".35" opacity=".5"/></pattern><radialGradient id="halo" cx=".5" cy=".5" r=".5"><stop offset="0" stop-color="#6cd0ff" stop-opacity=".14"/><stop offset="1" stop-color="#6cd0ff" stop-opacity="0"/></radialGradient></defs><ellipse cx="240" cy="320" rx="240" ry="320" fill="url(#halo)"/><path d="M322.6 308.8L322.7 293.2L323.1 293.2L360.2 296.3L360 312.1L359.7 312.2Z" fill="url(#dark)" stroke="#8fa1b8" stroke-width="0.9"/><path d="M362.9 386.4L363 377.1L363.1 376.5L368.5 365.7L368.9 365.4L369.7 365L370.7 364.7L372.1 364.5L373.7 364.3L375.4 364.1L377.3 364.1L379.3 364L381.3 364.1L383.3 364.2L385.1 364.4L386.8 364.6L388.3 364.9L389.6 365.2L390.6 365.5L391.2 365.9L391.5 366.2L396.6 377.3L396.5 386.7L396.4 387.3L391.5 395.7L391.1 396.1L390.3 396.5L389.2 396.8L383.4 398.2L382.8 398.3L382.1 398.4L381.4 398.5L380.6 398.5L379.8 398.5L378.9 398.5L378.1 398.4L377.3 398.4L376.6 398.3L376 398.1L370.7 396.7L369.4 396.3L368.5 395.9L367.8 395.5L367.5 395.1Z" fill="url(#white)" stroke="#8fa1b8" stroke-width="1.2"/><path d="M360.8 326.6L361 326L361.7 325.5L363 325L364.9 324.6L367.1 324.2L369.8 323.9L372.8 323.7L376.1 323.6L379.4 323.6L382.8 323.6L386.2 323.8L389.3 324L392.2 324.4L394.8 324.8L397 325.2L398.6 325.7L399.7 326.3L400.3 326.8L399.4 352.1L399.3 352.7L391.5 366.6L391.1 367L390.3 367.3L389.3 367.6L387.9 367.9L386.3 368.1L384.6 368.2L382.6 368.3L380.6 368.3L378.6 368.3L376.6 368.2L374.7 368L373 367.8L371.5 367.5L370.3 367.2L369.3 366.8L368.7 366.5L368.4 366.1L361 351.9Z" fill="url(#white)" stroke="#8fa1b8" stroke-width="1.2"/><path d="M371.4 354.9L377.2 355.3L383.3 355.4L389.1 355.2L394 354.6L397.5 353.8L399.3 352.8M361.1 352.2L363 353.3L366.5 354.2L371.4 354.9" fill="none" stroke="#8fa1b8" stroke-width="0.8"/><path d="M359.7 326.6L360.1 294.8L360.3 294.3L361.1 293.8L362.5 293.3L364.4 292.9L366.8 292.6L369.7 292.3L372.9 292.1L376.3 292L379.8 292L383.4 292.1L387 292.2L390.3 292.4L393.4 292.7L396.1 293.1L398.4 293.5L400.1 294L401.3 294.5L401.9 295L401.4 326.8L401.3 327.4L400.6 328L399.3 328.5L397.4 329L395 329.4L392.1 329.7L388.9 329.9L385.4 330L381.7 330.1L378.1 330L374.5 329.8L371.1 329.6L368 329.2L365.2 328.8L363 328.3L361.3 327.7L360.2 327.2Z" fill="url(#metal)" stroke="#8fa1b8" stroke-width="1.2"/><path d="M371.1 329.2L377.3 329.7L384 329.8L390.2 329.5L395.5 329L399.3 328.2L401.2 327.2M360 326.6L361.9 327.6L365.7 328.5L371.1 329.2" fill="none" stroke="#8fa1b8" stroke-width="0.8"/><path d="M359.2 280.7L359.4 280.2L360.2 279.7L361.7 279.3L363.7 278.9L366.3 278.6L369.3 278.3L372.6 278.1L376.2 278L380 278L383.8 278L387.5 278.2L391 278.4L394.3 278.7L397.1 279.1L399.5 279.5L401.4 279.9L402.6 280.4L403.2 280.9L401.9 295L401.8 295.5L401.1 296L399.8 296.4L397.9 296.8L395.5 297.2L392.6 297.5L389.4 297.7L385.9 297.8L382.2 297.8L378.5 297.8L374.9 297.6L371.5 297.4L368.4 297.1L365.7 296.7L363.4 296.3L361.7 295.8L360.6 295.3L360.1 294.8Z" fill="url(#white)" stroke="#8fa1b8" stroke-width="1.2"/><path d="M401.8 316L402.1 299.9L402.4 299.8L441.9 303.1L441.6 319.4L441.3 319.5Z" fill="url(#dark)" stroke="#8fa1b8" stroke-width="0.9"/><path d="M191.1 406.1L191.4 405.7L192.1 405.3L193 404.9L194.3 404.5L195.8 404.3L197.5 404L199.3 403.9L201.3 403.8L203.2 403.7L205.2 403.8L207.1 403.9L208.8 404.1L210.4 404.4L211.7 404.7L212.8 405L213.5 405.4L213.9 405.8L214 406.2L213.7 406.7L213.1 407.1L212.2 407.5L210.9 407.8L209.4 408.1L207.7 408.3L205.9 408.5L203.9 408.6L201.9 408.6L199.9 408.6L198 408.4L196.2 408.2L194.6 408L193.3 407.7L192.3 407.3L191.5 406.9L191.2 406.5Z" fill="url(#dark)"/><path d="M190.9 370.2L191.2 369.8L191.9 369.5L192.8 369.1L194.1 368.8L195.6 368.6L197.3 368.4L199.2 368.2L201.1 368.1L203.1 368.1L205.1 368.2L207 368.3L208.7 368.4L210.3 368.7L211.6 368.9L212.7 369.3L213.4 369.6L213.8 370L213.9 370.4L214 406.2L213.7 406.7L213.1 407.1L212.2 407.5L210.9 407.8L209.4 408.1L207.7 408.3L205.9 408.5L203.9 408.6L201.9 408.6L199.9 408.6L198 408.4L196.2 408.2L194.6 408L193.3 407.7L192.3 407.3L191.5 406.9L191.2 406.5L191.1 406.1Z" fill="url(#dark)" stroke="#8fa1b8" stroke-width="1.2"/><path d="M196.2 405L199.5 405.3L203.1 405.4L206.6 405.2L209.7 404.8L212.2 404.2L213.6 403.5M191.1 403.1L191.8 403.9L193.5 404.5L196.2 405M196.1 376.2L199.4 376.5L203 376.5L206.5 376.4L209.7 376L212.1 375.5L213.6 374.8M190.9 374.5L191.6 375.1L193.4 375.7L196.1 376.2" fill="none" stroke="#8fa1b8" stroke-width="0.8"/><path d="M34.6 372.7L35.1 371.6L36.5 370.6L38.9 369.5L42.2 368.6L46.1 367.7L50.7 367L55.8 366.4L61.2 366L66.8 365.8L72.4 365.7L77.9 365.9L83 366.2L87.8 366.7L91.9 367.3L95.4 368.1L98 368.9L99.7 369.9L100.5 371L100.3 372.1L99 373.1L96.9 374.2L93.7 375.2L89.8 376.1L85.2 376.8L80 377.5L74.4 377.9L68.6 378.2L62.7 378.2L57 378.1L51.6 377.7L46.8 377.2L42.6 376.6L39.2 375.7L36.7 374.8L35.2 373.8Z" fill="url(#dark)"/><path d="M48.2 415L60.1 372L60.1 371.8L60.5 371.5L61 371.3L61.7 371.1L62.6 370.9L63.7 370.7L64.9 370.6L66.1 370.5L67.5 370.4L68.8 370.4L70.1 370.4L71.3 370.5L72.4 370.6L73.3 370.8L74.1 371L74.7 371.2L75.1 371.4L75.2 371.6L88.6 413.7L88.4 414.5L87.6 415.3L86.3 416L84.4 416.7L81.9 417.3L79.1 417.8L75.9 418.3L72.5 418.6L69 418.7L65.4 418.8L62 418.7L58.7 418.5L55.8 418.1L53.2 417.6L51.1 417.1L49.6 416.4L48.6 415.7Z" fill="url(#metal)" stroke="#8fa1b8" stroke-width="1.2"/><path d="M55.8 417.8L61.3 418.3L67.6 418.4L73.9 418.1L79.6 417.4L84.3 416.4L87.3 415.1L88.5 413.7M48.3 414.3L49 415.7L51.6 416.9L55.8 417.8" fill="none" stroke="#8fa1b8" stroke-width="0.8"/><path d="M32.8 287.1L33.3 286.3L34.7 285.6L37.1 284.9L40.4 284.2L44.4 283.6L49 283.1L54.2 282.7L59.6 282.4L65.3 282.2L70.9 282.2L76.4 282.2L81.7 282.5L86.4 282.8L90.6 283.3L94.1 283.8L96.7 284.4L98.5 285.1L99.2 285.9L100.5 371L100.3 372.1L99 373.1L96.9 374.2L93.7 375.2L89.8 376.1L85.2 376.8L80 377.5L74.4 377.9L68.6 378.2L62.7 378.2L57 378.1L51.6 377.7L46.8 377.2L42.6 376.6L39.2 375.7L36.7 374.8L35.2 373.8L34.6 372.7Z" fill="url(#white)" stroke="#8fa1b8" stroke-width="1.2"/><path d="M46.3 352L55.4 352.7L65.8 352.9L76.2 352.5L85.8 351.5L93.4 350.1L98.3 348.4L100.2 346.7M35.1 349.2L39.3 350.8L46.3 352" fill="none" stroke="#8fa1b8" stroke-width="0.5" opacity=".6"/><path d="M46.8 376.9L55.9 377.7L66.2 377.9L76.7 377.4L86.2 376.4L93.7 374.9L98.7 373L100.5 371.1M35.7 373.9L39.8 375.6L46.8 376.9M45 290.7L54.2 291.2L64.6 291.4L75.2 291L84.8 290.3L92.4 289.2L97.4 287.9L99.3 286.5M33.8 288.5L38 289.7L45 290.7" fill="none" stroke="#8fa1b8" stroke-width="0.8"/><path d="M32.8 287.1L59.9 231.2L60 231.1L60.2 231L60.6 230.9L61.1 230.9L61.7 230.8L62.4 230.7L63.2 230.7L64.1 230.6L65 230.6L65.9 230.6L66.7 230.6L67.5 230.7L68.3 230.7L68.9 230.8L69.5 230.8L69.9 230.9L70.1 231L70.2 231.1L99.2 285.9L99 286.7L97.8 287.4L95.5 288.2L92.4 288.9L88.4 289.5L83.8 290.1L78.5 290.5L72.9 290.8L67 291L61.1 291L55.3 290.9L49.9 290.7L45 290.3L40.8 289.9L37.4 289.3L34.9 288.6L33.3 287.9Z" fill="url(#hull)" stroke="#8fa1b8" stroke-width="1.2"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 640" width="480" height="640" role="img" aria-label="Apollo and Soyuz, docked"><defs><linearGradient id="hull" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0c1422"/><stop offset=".55" stop-color="#2a3850"/><stop offset="1" stop-color="#0c1422"/></linearGradient><linearGradient id="white" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0e1626"/><stop offset=".55" stop-color="#33435f"/><stop offset="1" stop-color="#0e1626"/></linearGradient><linearGradient id="tile" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#05080e"/><stop offset=".55" stop-color="#101827"/><stop offset="1" stop-color="#05080e"/></linearGradient><linearGradient id="metal" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#16202f"/><stop offset=".55" stop-color="#3a475c"/><stop offset="1" stop-color="#16202f"/></linearGradient><linearGradient id="dark" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#070b12"/><stop offset=".55" stop-color="#121a28"/><stop offset="1" stop-color="#070b12"/></linearGradient><linearGradient id="bell" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0a0f18"/><stop offset=".55" stop-color="#242f42"/><stop offset="1" stop-color="#0a0f18"/></linearGradient><linearGradient id="foam" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#16202f"/><stop offset=".55" stop-color="#3a475c"/><stop offset="1" stop-color="#16202f"/></linearGradient><pattern id="hex" width="9" height="15.6" patternUnits="userSpaceOnUse"><path d="M4.5 0L9 2.6V7.8L4.5 10.4L0 7.8V2.6ZM4.5 10.4V15.6M0 2.6V0M9 2.6V0" fill="none" stroke="#b4c2d4" stroke-width=".35" opacity=".5"/></pattern><radialGradient id="halo" cx=".5" cy=".5" r=".5"><stop offset="0" stop-color="#6cd0ff" stop-opacity=".14"/><stop offset="1" stop-color="#6cd0ff" stop-opacity="0"/></radialGradient></defs><ellipse cx="240" cy="320" rx="240" ry="320" fill="url(#halo)"/><path d="M322.6 308.8L322.7 293.2L323.1 293.2L360.2 296.3L360 312.1L359.7 312.2Z" fill="url(#dark)" stroke="#b4c2d4" stroke-width="1.9"/><path d="M362.9 386.4L363 377.1L363.1 376.5L368.5 365.7L368.9 365.4L369.7 365L370.7 364.7L372.1 364.5L373.7 364.3L375.4 364.1L377.3 364.1L379.3 364L381.3 364.1L383.3 364.2L385.1 364.4L386.8 364.6L388.3 364.9L389.6 365.2L390.6 365.5L391.2 365.9L391.5 366.2L396.6 377.3L396.5 386.7L396.4 387.3L391.5 395.7L391.1 396.1L390.3 396.5L389.2 396.8L383.4 398.2L382.8 398.3L382.1 398.4L381.4 398.5L380.6 398.5L379.8 398.5L378.9 398.5L378.1 398.4L377.3 398.4L376.6 398.3L376 398.1L370.7 396.7L369.4 396.3L368.5 395.9L367.8 395.5L367.5 395.1Z" fill="url(#white)" stroke="#b4c2d4" stroke-width="3.4"/><path d="M360.8 326.6L361 326L361.7 325.5L363 325L364.9 324.6L367.1 324.2L369.8 323.9L372.8 323.7L376.1 323.6L379.4 323.6L382.8 323.6L386.2 323.8L389.3 324L392.2 324.4L394.8 324.8L397 325.2L398.6 325.7L399.7 326.3L400.3 326.8L399.4 352.1L399.3 352.7L391.5 366.6L391.1 367L390.3 367.3L389.3 367.6L387.9 367.9L386.3 368.1L384.6 368.2L382.6 368.3L380.6 368.3L378.6 368.3L376.6 368.2L374.7 368L373 367.8L371.5 367.5L370.3 367.2L369.3 366.8L368.7 366.5L368.4 366.1L361 351.9Z" fill="url(#white)" stroke="#b4c2d4" stroke-width="3.4"/><path d="M371.4 354.9L377.2 355.3L383.3 355.4L389.1 355.2L394 354.6L397.5 353.8L399.3 352.8M361.1 352.2L363 353.3L366.5 354.2L371.4 354.9" fill="none" stroke="#b4c2d4" stroke-width="1.7"/><path d="M359.7 326.6L360.1 294.8L360.3 294.3L361.1 293.8L362.5 293.3L364.4 292.9L366.8 292.6L369.7 292.3L372.9 292.1L376.3 292L379.8 292L383.4 292.1L387 292.2L390.3 292.4L393.4 292.7L396.1 293.1L398.4 293.5L400.1 294L401.3 294.5L401.9 295L401.4 326.8L401.3 327.4L400.6 328L399.3 328.5L397.4 329L395 329.4L392.1 329.7L388.9 329.9L385.4 330L381.7 330.1L378.1 330L374.5 329.8L371.1 329.6L368 329.2L365.2 328.8L363 328.3L361.3 327.7L360.2 327.2Z" fill="url(#metal)" stroke="#b4c2d4" stroke-width="3.4"/><path d="M371.1 329.2L377.3 329.7L384 329.8L390.2 329.5L395.5 329L399.3 328.2L401.2 327.2M360 326.6L361.9 327.6L365.7 328.5L371.1 329.2" fill="none" stroke="#b4c2d4" stroke-width="1.7"/><path d="M359.2 280.7L359.4 280.2L360.2 279.7L361.7 279.3L363.7 278.9L366.3 278.6L369.3 278.3L372.6 278.1L376.2 278L380 278L383.8 278L387.5 278.2L391 278.4L394.3 278.7L397.1 279.1L399.5 279.5L401.4 279.9L402.6 280.4L403.2 280.9L401.9 295L401.8 295.5L401.1 296L399.8 296.4L397.9 296.8L395.5 297.2L392.6 297.5L389.4 297.7L385.9 297.8L382.2 297.8L378.5 297.8L374.9 297.6L371.5 297.4L368.4 297.1L365.7 296.7L363.4 296.3L361.7 295.8L360.6 295.3L360.1 294.8Z" fill="url(#white)" stroke="#b4c2d4" stroke-width="3.4"/><path d="M401.8 316L402.1 299.9L402.4 299.8L441.9 303.1L441.6 319.4L441.3 319.5Z" fill="url(#dark)" stroke="#b4c2d4" stroke-width="1.9"/><path d="M191.1 406.1L191.4 405.7L192.1 405.3L193 404.9L194.3 404.5L195.8 404.3L197.5 404L199.3 403.9L201.3 403.8L203.2 403.7L205.2 403.8L207.1 403.9L208.8 404.1L210.4 404.4L211.7 404.7L212.8 405L213.5 405.4L213.9 405.8L214 406.2L213.7 406.7L213.1 407.1L212.2 407.5L210.9 407.8L209.4 408.1L207.7 408.3L205.9 408.5L203.9 408.6L201.9 408.6L199.9 408.6L198 408.4L196.2 408.2L194.6 408L193.3 407.7L192.3 407.3L191.5 406.9L191.2 406.5Z" fill="url(#dark)"/><path d="M190.9 370.2L191.2 369.8L191.9 369.5L192.8 369.1L194.1 368.8L195.6 368.6L197.3 368.4L199.2 368.2L201.1 368.1L203.1 368.1L205.1 368.2L207 368.3L208.7 368.4L210.3 368.7L211.6 368.9L212.7 369.3L213.4 369.6L213.8 370L213.9 370.4L214 406.2L213.7 406.7L213.1 407.1L212.2 407.5L210.9 407.8L209.4 408.1L207.7 408.3L205.9 408.5L203.9 408.6L201.9 408.6L199.9 408.6L198 408.4L196.2 408.2L194.6 408L193.3 407.7L192.3 407.3L191.5 406.9L191.2 406.5L191.1 406.1Z" fill="url(#dark)" stroke="#b4c2d4" stroke-width="3.4"/><path d="M196.2 405L199.5 405.3L203.1 405.4L206.6 405.2L209.7 404.8L212.2 404.2L213.6 403.5M191.1 403.1L191.8 403.9L193.5 404.5L196.2 405M196.1 376.2L199.4 376.5L203 376.5L206.5 376.4L209.7 376L212.1 375.5L213.6 374.8M190.9 374.5L191.6 375.1L193.4 375.7L196.1 376.2" fill="none" stroke="#b4c2d4" stroke-width="1.7"/><path d="M34.6 372.7L35.1 371.6L36.5 370.6L38.9 369.5L42.2 368.6L46.1 367.7L50.7 367L55.8 366.4L61.2 366L66.8 365.8L72.4 365.7L77.9 365.9L83 366.2L87.8 366.7L91.9 367.3L95.4 368.1L98 368.9L99.7 369.9L100.5 371L100.3 372.1L99 373.1L96.9 374.2L93.7 375.2L89.8 376.1L85.2 376.8L80 377.5L74.4 377.9L68.6 378.2L62.7 378.2L57 378.1L51.6 377.7L46.8 377.2L42.6 376.6L39.2 375.7L36.7 374.8L35.2 373.8Z" fill="url(#dark)"/><path d="M48.2 415L60.1 372L60.1 371.8L60.5 371.5L61 371.3L61.7 371.1L62.6 370.9L63.7 370.7L64.9 370.6L66.1 370.5L67.5 370.4L68.8 370.4L70.1 370.4L71.3 370.5L72.4 370.6L73.3 370.8L74.1 371L74.7 371.2L75.1 371.4L75.2 371.6L88.6 413.7L88.4 414.5L87.6 415.3L86.3 416L84.4 416.7L81.9 417.3L79.1 417.8L75.9 418.3L72.5 418.6L69 418.7L65.4 418.8L62 418.7L58.7 418.5L55.8 418.1L53.2 417.6L51.1 417.1L49.6 416.4L48.6 415.7Z" fill="url(#metal)" stroke="#b4c2d4" stroke-width="3.4"/><path d="M55.8 417.8L61.3 418.3L67.6 418.4L73.9 418.1L79.6 417.4L84.3 416.4L87.3 415.1L88.5 413.7M48.3 414.3L49 415.7L51.6 416.9L55.8 417.8" fill="none" stroke="#b4c2d4" stroke-width="1.7"/><path d="M32.8 287.1L33.3 286.3L34.7 285.6L37.1 284.9L40.4 284.2L44.4 283.6L49 283.1L54.2 282.7L59.6 282.4L65.3 282.2L70.9 282.2L76.4 282.2L81.7 282.5L86.4 282.8L90.6 283.3L94.1 283.8L96.7 284.4L98.5 285.1L99.2 285.9L100.5 371L100.3 372.1L99 373.1L96.9 374.2L93.7 375.2L89.8 376.1L85.2 376.8L80 377.5L74.4 377.9L68.6 378.2L62.7 378.2L57 378.1L51.6 377.7L46.8 377.2L42.6 376.6L39.2 375.7L36.7 374.8L35.2 373.8L34.6 372.7Z" fill="url(#white)" stroke="#b4c2d4" stroke-width="3.4"/><path d="M46.3 352L55.4 352.7L65.8 352.9L76.2 352.5L85.8 351.5L93.4 350.1L98.3 348.4L100.2 346.7M35.1 349.2L39.3 350.8L46.3 352" fill="none" stroke="#b4c2d4" stroke-width="0.6" opacity=".6"/><path d="M46.8 376.9L55.9 377.7L66.2 377.9L76.7 377.4L86.2 376.4L93.7 374.9L98.7 373L100.5 371.1M35.7 373.9L39.8 375.6L46.8 376.9M45 290.7L54.2 291.2L64.6 291.4L75.2 291L84.8 290.3L92.4 289.2L97.4 287.9L99.3 286.5M33.8 288.5L38 289.7L45 290.7" fill="none" stroke="#b4c2d4" stroke-width="1.7"/><path d="M32.8 287.1L59.9 231.2L60 231.1L60.2 231L60.6 230.9L61.1 230.9L61.7 230.8L62.4 230.7L63.2 230.7L64.1 230.6L65 230.6L65.9 230.6L66.7 230.6L67.5 230.7L68.3 230.7L68.9 230.8L69.5 230.8L69.9 230.9L70.1 231L70.2 231.1L99.2 285.9L99 286.7L97.8 287.4L95.5 288.2L92.4 288.9L88.4 289.5L83.8 290.1L78.5 290.5L72.9 290.8L67 291L61.1 291L55.3 290.9L49.9 290.7L45 290.3L40.8 289.9L37.4 289.3L34.9 288.6L33.3 287.9Z" fill="url(#hull)" stroke="#b4c2d4" stroke-width="3.4"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 640" width="480" height="640" role="img" aria-label="Apollo and Soyuz, docked"><defs><linearGradient id="hull" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#7f858c"/><stop offset=".55" stop-color="#e6e9ec"/><stop offset="1" stop-color="#8d9399"/></linearGradient><linearGradient id="white" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#b9bab5"/><stop offset=".55" stop-color="#f4f4ef"/><stop offset="1" stop-color="#c2c3be"/></linearGradient><linearGradient id="tile" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#0b0c0e"/><stop offset=".55" stop-color="#26282c"/><stop offset="1" stop-color="#0b0c0e"/></linearGradient><linearGradient id="metal" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#5a5f66"/><stop offset=".55" stop-color="#a9afb6"/><stop offset="1" stop-color="#5a5f66"/></linearGradient><linearGradient id="dark" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#111316"/><stop offset=".55" stop-color="#2a2d31"/><stop offset="1" stop-color="#111316"/></linearGradient><linearGradient id="bell" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#141518"/><stop offset=".55" stop-color="#3c3f44"/><stop offset="1" stop-color="#141518"/></linearGradient><linearGradient id="foam" x1="0" y1="0" x2="1" y2="0"><stop offset="0" stop-color="#6e3a1b"/><stop offset=".55" stop-color="#c8743a"/><stop offset="1" stop-color="#6e3a1b"/></linearGradient><pattern id="hex" width="9" height="15.6" patternUnits="userSpaceOnUse"><path d="M4.5 0L9 2.6V7.8L4.5 10.4L0 7.8V2.6ZM4.5 10.4V15.6M0 2.6V0M9 2.6V0" fill="none" stroke="#3a3d42" stroke-width=".35" opacity=".5"/></pattern></defs><path d="M148.3 458.4L148.5 454.5L151.3 450.7L156.8 447L164.6 443.7L174.4 440.8L186.1 438.3L199.1 436.4L213.2 435L227.9 434.2L243 434.1L258 434.5L272.6 435.5L286.3 437.1L298.8 439.3L309.7 441.9L318.8 445L325.7 448.5L330.1 452.2L331.9 456.1L330.9 460L327.1 463.9L320.4 467.6L311.1 471L299.3 473.9L285.5 476.3L270.1 478L253.6 479L236.6 479.2L219.7 478.7L203.6 477.4L188.7 475.4L175.7 472.8L164.9 469.7L156.6 466.2L151.1 462.4Z" fill="url(#dark)"/><path d="M184.3 571.9L218.8 455.1L219.3 454.2L220.5 453.3L222.2 452.5L224.4 451.8L227.1 451.2L230.2 450.7L233.5 450.4L237.1 450.2L240.7 450.2L244.3 450.3L247.8 450.5L251.1 450.9L254 451.5L256.5 452.1L258.6 452.9L260.1 453.7L260.9 454.6L295 570L295.8 573.1L295 576.2L292.4 579.3L288.2 582.2L282.5 584.8L275.4 587.1L267.1 588.9L257.9 590.2L248.1 590.9L238 591.1L228 590.7L218.4 589.7L209.5 588.2L201.6 586.2L195 583.8L189.9 581.1L186.3 578.1L184.5 575Z" fill="url(#metal)" stroke="#30343a" stroke-width="0.6"/><path d="M209.6 587.2L226.1 589.5L244 590.1L261.5 588.7L276.7 585.7L288 581.2L294.3 575.9M184.5 572.8L187.8 578.4L196.5 583.3L209.6 587.2" fill="none" stroke="#30343a" stroke-width="0.5"/><path d="M146 215.3L146.1 213.9L149.1 212.5L154.7 211.1L162.7 209.9L172.8 208.9L184.7 208L198.1 207.3L212.5 206.8L227.7 206.5L243.1 206.4L258.5 206.6L273.4 207L287.4 207.5L300.2 208.3L311.5 209.3L320.8 210.4L327.9 211.7L332.4 213L334.3 214.4L331.9 456.1L330.9 460L327.1 463.9L320.4 467.6L311.1 471L299.3 473.9L285.5 476.3L270.1 478L253.6 479L236.6 479.2L219.7 478.7L203.6 477.4L188.7 475.4L175.7 472.8L164.9 469.7L156.6 466.2L151.1 462.4L148.3 458.4Z" fill="url(#white)" stroke="#30343a" stroke-width="0.6"/><path d="M188.3 402.5L216.2 405.1L246.9 405.6L276.7 404.2L302.3 400.9L321 396.1L331 390.6M147.4 387.3L152.3 393.1L166.3 398.4L188.3 402.5" fill="none" stroke="#30343a" stroke-width="0.3" opacity=".6"/><path d="M188.7 474.4L216.4 477.5L246.8 478.2L276.4 476.4L301.9 472.4L320.4 466.7L330.4 459.9M148 455.9L152.9 463L166.9 469.4L188.7 474.4M187.4 222.5L215.8 223.6L247 223.9L277.4 223.2L303.5 221.7L322.5 219.6L332.7 217.1M145.7 215.7L150.7 218.3L164.9 220.6L187.4 222.5" fill="none" stroke="#30343a" stroke-width="0.5"/><path d="M146 215.3L146.1 213.9L225.3 53.4L225.4 53.3L226 53.3L226.9 53.2L228.3 53.2L230.1 53.1L232.1 53.1L234.4 53.1L236.9 53.1L239.5 53.1L242.1 53.1L244.6 53.1L247 53.1L249.1 53.1L251 53.2L252.6 53.2L253.7 53.2L254.4 53.3L254.7 53.3L334.3 214.4L333.3 215.9L329.4 217.3L322.5 218.6L313 219.9L300.9 220.9L286.7 221.8L270.9 222.4L254 222.8L236.5 222.9L219.2 222.7L202.6 222.2L187.4 221.5L174 220.5L162.9 219.4L154.4 218.1L148.7 216.7Z" fill="url(#hull)" stroke="#30343a" stroke-width="0.6"/></svg>