@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
@@ -3,6 +3,41 @@ import { DRAGON_VARIANTS } from "../data/dragon.js";
3
3
  import { FALCON_9_VARIANTS } from "../data/falcon.js";
4
4
  import { STARSHIP_VARIANTS } from "../data/starship.js";
5
5
  import { capsule, centreCore, DRAGON_DRAWS, falconFairing, falconFirstStage, FALCON_DRAWS, falconSecondStage, grasshopper, merlin, sideBooster, trunk } from "./falcon.js";
6
+ import { FALCON_1_VARIANTS } from "../data/falcon1.js";
7
+ import { SATURN_V_VARIANTS } from "../data/saturn.js";
8
+ import { FALCON_1_BUILDS } from "./falcon1.js";
9
+ import { SATURN_V_BUILDS } from "./saturn.js";
10
+ import { SHUTTLE_VARIANTS } from "../data/shuttle.js";
11
+ import { SHUTTLE_BUILDS } from "./shuttle.js";
12
+ import { SLS_VARIANTS } from "../data/sls.js";
13
+ import { SLS_BUILDS } from "./sls.js";
14
+ import { NEW_GLENN_VARIANTS } from "../data/newglenn.js";
15
+ import { NEW_GLENN_BUILDS } from "./newglenn.js";
16
+ import { ELECTRON_VARIANTS } from "../data/electron.js";
17
+ import { ELECTRON_BUILDS } from "./electron.js";
18
+ import { SOYUZ_VARIANTS } from "../data/soyuz.js";
19
+ import { SOYUZ_BUILDS } from "./soyuz.js";
20
+ import { DRONESHIP_VARIANTS, LANDING_ZONE_VARIANTS } from "../data/landing.js";
21
+ import { DRONESHIP_BUILDS, LANDING_ZONE_BUILDS } from "./landing.js";
22
+ import { TOWER_VARIANTS } from "../data/tower.js";
23
+ import { TOWER_BUILDS } from "./tower.js";
24
+ import { LUNAR_MODULE_VARIANTS } from "../data/lunarmodule.js";
25
+ import { LUNAR_MODULE_BUILDS } from "./lunarmodule.js";
26
+ import { APOLLO_SOYUZ_VARIANTS } from "../data/apollosoyuz.js";
27
+ import { APOLLO_SOYUZ_BUILDS } from "./apollosoyuz.js";
28
+ import { GEMINI_VARIANTS } from "../data/gemini.js";
29
+ import { GEMINI_BUILDS } from "./gemini.js";
30
+ import { MERCURY_VARIANTS } from "../data/mercury.js";
31
+ import { MERCURY_BUILDS } from "./mercury.js";
32
+ import { JUPITER_C_VARIANTS } from "../data/jupiterc.js";
33
+ import { JUPITER_C_BUILDS } from "./jupiterc.js";
34
+ import { ISS_VARIANTS } from "../data/iss.js";
35
+ import { ISS_BUILDS } from "./iss.js";
36
+ import { HUBBLE_VARIANTS } from "../data/hubble.js";
37
+ import { HUBBLE_BUILDS } from "./hubble.js";
38
+ import { DRAGON_INSIDE_BUILDS } from "./dragoninside.js";
39
+ import { STARBASE_VARIANTS } from "../data/starbase.js";
40
+ import { STARBASE_BUILDS } from "./starbase.js";
6
41
  import { boosterPieces, flap, gridFin, raptor, shipPieces, STARSHIP_DRAWS } from "./starship.js";
7
42
  const blankFigure = { value: null, source: null, note: "No source gives this part's size: it is drawn from photographs." };
8
43
  const STAGE = "stage";
@@ -82,9 +117,12 @@ for (const id of Object.keys(FALCON_DRAWS)) {
82
117
  const DRAGON_FROM = {
83
118
  "dragon-1": "This package's code for the two line looks, proportions taken from ProgressTH's model; ProgressTH's model for the painted look. It shows the original Dragon 1, with solar wings, not Cargo Dragon 2.",
84
119
  "dragon-2": "This package's code for the two line looks, proportions taken from KUBAHA's model; KUBAHA's model for the painted look. It shows Crew Dragon, with windows.",
120
+ "cargo-dragon-2": "This package's code in every look, on Dragon 2's sourced sizes, with no windows as its article says. No licensed model shows it.",
85
121
  };
86
122
  for (const variant of DRAGON_VARIANTS) {
87
123
  const d = DRAGON_DRAWS[variant.id];
124
+ if (!d)
125
+ continue;
88
126
  const trueTo = variant.id === "dragon-2" ? [variant.id, "block-5-dragon-2"] : [variant.id];
89
127
  const joint = 3.7;
90
128
  entries.push({ record: { id: `dragon-${variant.id}-trunk`, kind: "trunk", name: `Trunk, ${variant.name}`, rocket: "dragon", trueTo, height: d.trunk, diameter: d.trunkRadius * 2, sourced: { height: variant.facts.parts.trunk, diameter: blankFigure }, joints: { bottom: { kind: "stage", y: 0, diameter: joint }, top: { kind: "stage", y: d.trunk, diameter: joint } }, painted: PAINTED[`dragon-${variant.id}-trunk`] ?? null, drawnFrom: DRAGON_FROM[variant.id] }, pieces: () => trunk(d) }, { record: { id: `dragon-${variant.id}-capsule`, kind: "capsule", name: `Capsule, ${variant.name}`, rocket: "dragon", trueTo, height: d.capsule, diameter: d.baseRadius * 2, sourced: { height: variant.facts.parts.capsule, diameter: variant.facts.diameter }, joints: { bottom: { kind: "stage", y: d.nest, diameter: joint } }, painted: PAINTED[`dragon-${variant.id}-capsule`] ?? null, drawnFrom: DRAGON_FROM[variant.id] }, pieces: () => capsule(d) });
@@ -94,11 +132,58 @@ const FH_SIDE_HEIGHT = 45.6;
94
132
  const FH_OFFSET = 4.25;
95
133
  const figure = (value, source) => ({ value, source });
96
134
  entries.push({ record: { id: "falcon-heavy-falcon-heavy-centre", kind: "first-stage", name: "Falcon Heavy centre core, with its upper stage and fairing", rocket: "falcon-heavy", trueTo: ["falcon-heavy"], height: 70, diameter: 5.2, sourced: { height: figure(70, "wikipedia-falcon-heavy"), diameter: { ...blankFigure, note: "3.7 m the core; 5.2 m the fairing." } }, joints: {}, painted: PAINTED["falcon-heavy-falcon-heavy-centre"], drawnFrom: FH_FROM }, pieces: () => centreCore(70, 1.85) }, { record: { id: "falcon-heavy-falcon-heavy-side-left", kind: "first-stage", name: "Falcon Heavy side booster, left", rocket: "falcon-heavy", trueTo: ["falcon-heavy"], height: FH_SIDE_HEIGHT, diameter: 3.7, strapOn: { x: -FH_OFFSET, z: 0 }, sourced: { height: blankFigure, diameter: figure(3.7, "wikipedia-falcon-heavy") }, joints: {}, painted: PAINTED["falcon-heavy-falcon-heavy-side-left"], drawnFrom: FH_FROM }, pieces: () => sideBooster(FH_SIDE_HEIGHT, 1.85, -1) }, { record: { id: "falcon-heavy-falcon-heavy-side-right", kind: "first-stage", name: "Falcon Heavy side booster, right", rocket: "falcon-heavy", trueTo: ["falcon-heavy"], height: FH_SIDE_HEIGHT, diameter: 3.7, strapOn: { x: FH_OFFSET, z: 0 }, sourced: { height: blankFigure, diameter: figure(3.7, "wikipedia-falcon-heavy") }, joints: {}, painted: PAINTED["falcon-heavy-falcon-heavy-side-right"], drawnFrom: FH_FROM }, pieces: () => sideBooster(FH_SIDE_HEIGHT, 1.85, 1) }, { record: { id: "grasshopper-grasshopper-vehicle", kind: "test-vehicle", name: "Grasshopper, test vehicle", rocket: "grasshopper", trueTo: ["grasshopper"], height: 32, diameter: 3.2, sourced: { height: figure(32, "wikipedia-grasshopper"), diameter: blankFigure }, joints: {}, painted: PAINTED["grasshopper-grasshopper-vehicle"], drawnFrom: "This package's code for the two line looks, proportions taken from Echo_3's low-poly model at the sourced height; that model for the painted look." }, pieces: () => grasshopper(32) });
135
+ // ---------------------------------------------------------------------------------------------------------------------------------
136
+ // Rockets drawn wholly by this package's code, from their tables
137
+ const stackFacts = [...HUBBLE_VARIANTS, ...ISS_VARIANTS, ...JUPITER_C_VARIANTS, ...MERCURY_VARIANTS, ...GEMINI_VARIANTS, ...APOLLO_SOYUZ_VARIANTS, ...LUNAR_MODULE_VARIANTS, ...STARBASE_VARIANTS, ...DRAGON_VARIANTS, ...TOWER_VARIANTS, ...DRONESHIP_VARIANTS, ...LANDING_ZONE_VARIANTS, ...SOYUZ_VARIANTS, ...NEW_GLENN_VARIANTS, ...ELECTRON_VARIANTS, ...SLS_VARIANTS, ...FALCON_1_VARIANTS, ...SATURN_V_VARIANTS, ...SHUTTLE_VARIANTS];
138
+ const stacks = [...HUBBLE_BUILDS, ...ISS_BUILDS, ...JUPITER_C_BUILDS, ...MERCURY_BUILDS, ...GEMINI_BUILDS, ...APOLLO_SOYUZ_BUILDS, ...LUNAR_MODULE_BUILDS, ...STARBASE_BUILDS, ...DRAGON_INSIDE_BUILDS, ...TOWER_BUILDS, ...DRONESHIP_BUILDS, ...LANDING_ZONE_BUILDS, ...SOYUZ_BUILDS, ...NEW_GLENN_BUILDS, ...ELECTRON_BUILDS, ...SLS_BUILDS, ...FALCON_1_BUILDS, ...SATURN_V_BUILDS, ...SHUTTLE_BUILDS];
139
+ for (const build of stacks)
140
+ for (const part of build.parts) {
141
+ const { height, diameter } = facts(stackFacts, build.variant, part.slot);
142
+ entries.push({
143
+ record: {
144
+ id: `${build.rocket}-${build.variant}-${part.slot}`,
145
+ kind: part.kind,
146
+ name: part.name,
147
+ rocket: build.rocket,
148
+ trueTo: [build.variant, ...(part.alsoTrueTo ?? [])],
149
+ height: part.height,
150
+ diameter: part.diameter,
151
+ sourced: { height, diameter: part.sourcedDiameter ?? diameter },
152
+ joints: { ...(part.top ? { top: { kind: STAGE, y: part.top[0], diameter: part.top[1] } } : {}), ...(part.bottom ? { bottom: { kind: STAGE, y: part.bottom[0], diameter: part.bottom[1] } } : {}) },
153
+ ...(part.place ? { strapOn: part.place } : {}),
154
+ painted: part.painted ?? null,
155
+ drawnFrom: build.drawnFrom,
156
+ },
157
+ pieces: part.pieces,
158
+ });
159
+ }
97
160
  const RAPTOR_DIAMETER = { value: 1.3, source: "wikipedia-raptor", note: "The family's engine diameter." };
98
161
  const RAPTOR_LENGTH = { value: 3.1, source: "wikipedia-raptor", note: "The family's length." };
99
162
  const b3 = STARSHIP_DRAWS.v3;
100
163
  const b2 = STARSHIP_DRAWS.v2;
101
164
  entries.push(detail("raptor-sea-level", "engine", "Raptor, sea-level", 3.1, 1.24, { height: RAPTOR_LENGTH, diameter: RAPTOR_DIAMETER }, () => raptor([0, 0], 0, "sea")), detail("raptor-vacuum", "engine", "Raptor, vacuum", 4.4, 2.3, { height: blankFigure, diameter: blankFigure }, () => raptor([0, 0], 0, "vacuum")), detail("grid-fin-four", "fin", "Grid fin, Blocks 1 and 2", 0.9, 2.9, { height: blankFigure, diameter: blankFigure }, () => gridFin(90, 0, b2.radius, b2.fins.reach, b2.fins.width, b2.fins.thick, false)), detail("grid-fin-three", "fin", "Grid fin, Block 3", 0.9, 3.4, { height: blankFigure, diameter: blankFigure }, () => gridFin(90, 0, b3.radius, b3.fins.reach, b3.fins.width, b3.fins.thick, true)), detail("flap-aft", "flap", "Aft flap", 11.6, 3.8, { height: blankFigure, diameter: blankFigure }, () => [flap(b3.aft, 1)]), detail("flap-forward", "flap", "Forward flap, Blocks 2 and 3", 8.1, 4.7, { height: blankFigure, diameter: blankFigure }, () => [flap(b3.forward, 1)]), detail("merlin-sea-level", "engine", "Merlin, sea-level", 2, 0.92, { height: blankFigure, diameter: blankFigure }, () => merlin([0, 0], 0, 0.46, 2)));
165
+ /**
166
+ * Every part of every rocket, each with its record: its real size in metres, the joints it mates at, and where its shape came from.
167
+ *
168
+ * @example
169
+ * ```ts
170
+ * import { PART_ENTRIES } from "@johnmorrisdotca/uchusen-rockets";
171
+ *
172
+ * console.log(PART_ENTRIES.length, PART_ENTRIES[0]?.record.name);
173
+ * ```
174
+ */
102
175
  export const PART_ENTRIES = entries;
103
176
  const byId = new Map(entries.map((entry) => [entry.record.id, entry]));
177
+ /**
178
+ * Finds a part by its id.
179
+ *
180
+ * @param id A part's id.
181
+ * @returns The part's entry, or undefined for an id that is not a part.
182
+ * @example
183
+ * ```ts
184
+ * import { partEntry } from "@johnmorrisdotca/uchusen-rockets";
185
+ *
186
+ * console.log(partEntry("raptor-vacuum")?.record.height, partEntry("nonsense"));
187
+ * ```
188
+ */
104
189
  export const partEntry = (id) => byId.get(id);
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const SATURN_V_BUILDS: readonly StackBuild[];
@@ -0,0 +1,122 @@
1
+ // Saturn V from a table of numbers: the stages' lengths and widths are sourced, and so are the F-1's and J-2's lengths and widths. Where the paint runs and how the foot is arranged are judged from photographs.
2
+ import { blank } from "../data/types.js";
3
+ import { deg } from "../framing.js";
4
+ import { fins, floor, nose, pod, skirt, stripes, taper, tube } from "./kit.js";
5
+ import { merlin } from "./falcon.js";
6
+ const FT = 0.3048;
7
+ const R1 = 10.06 / 2;
8
+ const R3 = 6.6 / 2;
9
+ const RC = 3.91 / 2;
10
+ const NEST = 7.49 - 4.52;
11
+ const H1 = 42.06;
12
+ const H2 = 24.87;
13
+ const H3 = 17.86;
14
+ const HA = 9.45;
15
+ const HS = 4.52;
16
+ const HC = 3.48;
17
+ const WHOLE = 110.64;
18
+ const TOWER = WHOLE - (H1 + H2 + H3 + HA + HS + HC);
19
+ const COVER = HC * 0.92;
20
+ const F1_EXIT = (12.2 * FT) / 2;
21
+ const F1_LONG = 18.5 * FT;
22
+ const J2_EXIT = (6.8 * FT) / 2;
23
+ const J2_LONG = 11.1 * FT;
24
+ function firstStage() {
25
+ const foot = 5;
26
+ const outer = R1 * 0.63;
27
+ const out = [
28
+ tube("white", R1, foot, H1, { rings: [foot + 0.02, 18.5, 24, H1 - 3.4], welds: [11, 32] }),
29
+ floor(R1, foot),
30
+ // two wide stripes up the fuel tank, and the checks of the tank between
31
+ ...stripes("black", R1, foot, 18.5, [0, 180], 44),
32
+ ...stripes("black", R1, 18.5, 24, [90, 270], 44),
33
+ ...stripes("black", R1, H1 - 3.4, H1, [0, 90, 180, 270], 44),
34
+ ...merlin([0, 0], 0, F1_EXIT, F1_LONG),
35
+ ];
36
+ for (const az of [45, 135, 225, 315]) {
37
+ const at = [outer * Math.sin(deg(az)), outer * Math.cos(deg(az))];
38
+ out.push(...merlin(at, 0, F1_EXIT, F1_LONG));
39
+ // the fairing over each outer engine, and its fin
40
+ out.push(pod("white", [at[0] * 0.92, at[1] * 0.92], F1_EXIT * 1.08, foot * 0.72, F1_EXIT * 0.3, foot + 4, { outline: true }));
41
+ }
42
+ out.push(...fins("white", R1, [45, 135, 225, 315], [[0, foot - 1], [4.2, foot - 2.6], [4.2, foot - 1.2], [0, foot + 5]], 0.3));
43
+ return out;
44
+ }
45
+ function secondStage() {
46
+ const skirtTop = 5.5;
47
+ return [
48
+ ...skirt("white", R1, 0, skirtTop, { rings: [skirtTop - 0.02] }),
49
+ tube("white", R1, skirtTop, H2, { rings: [H2 - 0.02], welds: [11, 15, 19] }),
50
+ ...stripes("black", R1, skirtTop - 2.6, skirtTop, [0, 90, 180, 270], 44),
51
+ floor(R1, skirtTop),
52
+ ...merlin([0, 0], 2.1, J2_EXIT, J2_LONG),
53
+ ...[45, 135, 225, 315].flatMap((az) => merlin([R1 * 0.64 * Math.sin(deg(az)), R1 * 0.64 * Math.cos(deg(az))], 2.1, J2_EXIT, J2_LONG)),
54
+ ];
55
+ }
56
+ function thirdStage() {
57
+ const flare = 5.8;
58
+ return [
59
+ taper("white", R1, 0, R3, flare, { rings: [0.02, flare - 0.02], welds: [flare / 2] }),
60
+ { kind: "lathe", material: "soot", segs: 32, under: true, only: "mesh", profile: [[R3 * 0.97, flare], [R1 * 0.97, 0]] },
61
+ tube("white", R3, flare, H3, { rings: [H3 - 0.02], welds: [11, 14] }),
62
+ ...stripes("black", R3, flare, flare + 2.8, [0, 180], 60),
63
+ floor(R3, flare),
64
+ ...merlin([0, 0], flare - J2_LONG + 0.4, J2_EXIT, J2_LONG),
65
+ ];
66
+ }
67
+ function adapter() {
68
+ const iu = 36 * 0.0254;
69
+ return [
70
+ tube("white", R3, 0, iu, { rings: [iu - 0.02] }),
71
+ taper("white", R3, iu, RC, HA, { rings: [iu + 7 * FT], welds: [iu + 4.2 * FT] }),
72
+ floor(R3, 0),
73
+ ];
74
+ }
75
+ function serviceModule() {
76
+ return [
77
+ tube("steel", RC, NEST, NEST + HS, { rings: [NEST + 0.02, NEST + HS - 0.02], welds: [NEST + HS * 0.5] }),
78
+ floor(RC, NEST),
79
+ ...merlin([0, 0], 0, 1.1, NEST * 1.02),
80
+ ];
81
+ }
82
+ function capsule() {
83
+ return [
84
+ { kind: "lathe", material: "steel", segs: 40, body: true, outline: true, profile: [[RC, 0.3], [RC * 0.98, 0.5], [RC * 0.22, HC * 0.88], [0.25, HC * 0.94], [0.001, HC]], rings: [0.5] },
85
+ { kind: "lathe", material: "soot", segs: 30, under: true, profile: [[0, 0], [RC * 0.82, 0.08], [RC, 0.3]] },
86
+ ];
87
+ }
88
+ function escapeTower() {
89
+ const coverBase = 0.3;
90
+ const motorFrom = COVER + TOWER * 0.26;
91
+ const top = COVER + TOWER;
92
+ const out = [
93
+ { kind: "lathe", material: "white", segs: 40, body: true, outline: true, profile: [[RC + 0.03, coverBase], [RC * 0.24, COVER], [0.3, COVER + 0.3]], rings: [coverBase + 0.02] },
94
+ tube("white", 0.33, motorFrom, top - 2.6),
95
+ taper("white", 0.33, top - 2.6, 0.12, top - 1),
96
+ nose("red", 0.12, top - 1, top, 1.2),
97
+ ];
98
+ // the open frame between the cover and the motor
99
+ for (const az of [45, 135, 225, 315]) {
100
+ const a = deg(az);
101
+ const [x0, z0, x1, z1] = [0.3 * Math.sin(a), 0.3 * Math.cos(a), 0.62 * Math.sin(a), 0.62 * Math.cos(a)];
102
+ out.push({ kind: "lines", weight: "feature", only: "drawing", paths: [[[x1, COVER, z1], [x0, motorFrom, z0]]] });
103
+ out.push({ kind: "lathe", material: "red", at: [(x0 + x1) / 2, (z0 + z1) / 2], segs: 6, only: "mesh", profile: [[0.07, COVER + 0.2], [0.07, motorFrom]] });
104
+ }
105
+ return out;
106
+ }
107
+ export const SATURN_V_BUILDS = [
108
+ {
109
+ rocket: "saturn-v",
110
+ variant: "saturn-v",
111
+ drawnFrom: "This package's code, its lengths and widths from the sources; the paint and the foot judged from photographs. No licensed model shows it, and no flag or lettering is drawn.",
112
+ parts: [
113
+ { slot: "first-stage", kind: "first-stage", name: "S-IC, first stage, Saturn V", height: H1, diameter: R1 * 2, top: [H1, R1 * 2], sourcedDiameter: { value: 10.06, source: "wikipedia-saturn-v" }, pieces: firstStage },
114
+ { slot: "second-stage", kind: "second-stage", name: "S-II, second stage, Saturn V", height: H2, diameter: R1 * 2, bottom: [0, R1 * 2], top: [H2, R1 * 2], sourcedDiameter: { value: 10.06, source: "wikipedia-saturn-v" }, pieces: secondStage },
115
+ { slot: "third-stage", kind: "third-stage", name: "S-IVB, third stage, Saturn V", height: H3, diameter: R3 * 2, bottom: [0, R1 * 2], top: [H3, R3 * 2], sourcedDiameter: { value: 6.6, source: "wikipedia-saturn-v", note: "21 feet 8 inches. It flares to the second stage's width at its foot." }, pieces: thirdStage },
116
+ { slot: "adapter", kind: "adapter", name: "Instrument unit and spacecraft adapter, Saturn V", height: HA, diameter: R3 * 2, bottom: [0, R3 * 2], top: [HA, RC * 2], sourcedDiameter: { value: 6.6, source: "wikipedia-saturn-v" }, pieces: adapter },
117
+ { slot: "service-module", kind: "service-module", name: "Apollo service module", height: NEST + HS, diameter: RC * 2, bottom: [NEST, RC * 2], top: [NEST + HS, RC * 2], sourcedDiameter: { value: 3.91, source: "wikipedia-apollo-csm", note: "12 feet 10 inches." }, pieces: serviceModule },
118
+ { slot: "capsule", kind: "capsule", name: "Apollo command module", height: HC, diameter: RC * 2, bottom: [0, RC * 2], top: [HC, 0.5], sourcedDiameter: { value: 3.91, source: "wikipedia-apollo-csm", note: "12 feet 10 inches." }, pieces: capsule },
119
+ { slot: "escape-tower", kind: "tower", name: "Launch escape tower and its cover", height: COVER + TOWER, diameter: (RC + 0.03) * 2, bottom: [COVER, 0.5], sourcedDiameter: blank("No source read here gives it."), pieces: escapeTower },
120
+ ],
121
+ },
122
+ ];
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const SHUTTLE_BUILDS: readonly StackBuild[];
@@ -0,0 +1,111 @@
1
+ // The Space Shuttle from a table of numbers: the tank's, the boosters' and the orbiter's lengths and widths are sourced, as are the RS-25's. The orbiter's outline and how the parts stand are judged from photographs.
2
+ import { ORBITER_SPAN, SHUTTLE_SRB_DIAMETER, SHUTTLE_TANK_DIAMETER } from "../data/shuttle.js";
3
+ import { merlin } from "./falcon.js";
4
+ import { floor, nose, taper, tube } from "./kit.js";
5
+ import { strut } from "./pieces.js";
6
+ const WHOLE = 56;
7
+ const TANK = 46.88;
8
+ const TANK_R = 8.41 / 2;
9
+ const TANK_Y = WHOLE - TANK;
10
+ const SRB = 45.46;
11
+ const SRB_R = 3.71 / 2;
12
+ const SRB_X = TANK_R + SRB_R + 0.65;
13
+ const ORB = 37.24;
14
+ const ORB_R = 2.7;
15
+ const ORB_Y = 8.2;
16
+ const ORB_Z = -(TANK_R + 0.9 + 2.2);
17
+ // the engine's sourced length and exit, 168 and 90.7 inches
18
+ const RS25_LONG = 168 * 0.0254;
19
+ const RS25_EXIT = (90.7 * 0.0254) / 2;
20
+ function tank() {
21
+ const r = TANK_R;
22
+ const top = [];
23
+ const from = TANK - 19;
24
+ for (let i = 0; i <= 12; i++) {
25
+ const t = i / 12;
26
+ top.push([r * Math.sqrt(Math.max(0, 1 - t ** 2.4)), from + 19 * t]);
27
+ }
28
+ top[12] = [0.001, TANK];
29
+ const orbiterSide = [0, 0, -r];
30
+ const hold = (y, x) => strut("foam", [x, y, orbiterSide[2]], [x, y, orbiterSide[2] - 0.9], 0.4, 0.4);
31
+ return [
32
+ { kind: "lathe", material: "foam", segs: 48, body: true, outline: true, profile: [[0.001, 0], [r * 0.55, 0.45], [r * 0.85, 1.5], [r, 3.4], [r, from], ...top.slice(1)], rings: [from, from - 7], welds: [10, 19] },
33
+ // the pipe that runs down its side, and the rods that hold the orbiter
34
+ { kind: "plate", material: "foam", frame: { o: [0.9, 2, -r], u: [0, 1, 0], v: [-1, 0, 0], w: [0, 0, -1] }, outline: [[0, 0], [TANK - 6, 0], [TANK - 6, 0.5], [0, 0.5]], thickness: 0.5, plain: true },
35
+ hold(3, 1.6),
36
+ hold(3, -1.6),
37
+ hold(27, 0),
38
+ ];
39
+ }
40
+ function booster() {
41
+ const r = SRB_R;
42
+ const shoulder = SRB - 7.4;
43
+ return [
44
+ taper("white", r * 1.4, 1, r, 3.8, { rings: [1.02] }),
45
+ { kind: "lathe", material: "soot", segs: 30, under: true, profile: [[0, 1], [r * 1.4, 1]] },
46
+ tube("white", r, 3.8, shoulder, { rings: [3.82, 12, 20, 28, shoulder - 0.02], welds: [8, 16, 24, 32] }),
47
+ taper("white", r, shoulder, r * 0.5, SRB - 1.4, { rings: [SRB - 4.5] }),
48
+ nose("white", r * 0.5, SRB - 1.4, SRB, 1.2),
49
+ ...merlin([0, 0], 0, r * 1.02, 3.6),
50
+ ];
51
+ }
52
+ const FLAT = { o: [0, 0, 1.3], u: [1, 0, 0], v: [0, 1, 0], w: [0, 0, 1] };
53
+ function orbiter() {
54
+ const r = ORB_R;
55
+ const base = RS25_LONG * 0.8;
56
+ const span = (ORBITER_SPAN.value ?? 0) / 2;
57
+ const profile = [[r, base], [r, ORB - 12], [r * 0.98, ORB - 9], [r * 0.88, ORB - 6], [r * 0.66, ORB - 3], [r * 0.38, ORB - 1], [0.16, ORB - 0.2], [0.001, ORB]];
58
+ const belly = (y) => {
59
+ void y;
60
+ return [-Math.PI * 0.42, Math.PI * 0.42];
61
+ };
62
+ const out = [
63
+ { kind: "lathe", material: "white", segs: 40, body: true, outline: true, profile, rings: [ORB - 12], welds: [base + 10, base + 19] },
64
+ floor(r, base),
65
+ // the black belly and nose, in one shell just proud of the white
66
+ { kind: "lathe", material: "black", segs: 40, body: true, arc: belly, profile: profile.slice(0, 6).map(([a, b]) => [a * 1.012, b]) },
67
+ { kind: "lathe", material: "black", segs: 24, body: true, profile: [[r * 0.38 * 1.015, ORB - 1], [0.16 * 1.015, ORB - 0.2], [0.001, ORB + 0.01]] },
68
+ // the windscreen, the payload bay's doors, the tail and the two engine pods
69
+ { kind: "plate", material: "black", frame: { o: [0, ORB - 6.3, -r * 0.8], u: [1, 0, 0], v: [0, 0.94, -0.34], w: [0, -0.34, -0.94] }, outline: [[-1, 0], [1, 0], [0.8, 1.1], [-0.8, 1.1]], thickness: 0.08, plain: true },
70
+ { kind: "lines", weight: "feature", paths: [[[0, base + 3.6, -r - 0.01], [0, ORB - 11, -r - 0.01]], [[-1.95, base + 3.6, -1.9], [-1.95, ORB - 11, -1.9]], [[1.95, base + 3.6, -1.9], [1.95, ORB - 11, -1.9]]] },
71
+ { kind: "plate", material: "white", frame: { o: [0, 0, 0], u: [0, 0, -1], v: [0, 1, 0], w: [1, 0, 0] }, outline: [[r - 0.2, base], [r + 8, base + 0.2], [r + 8, base + 2.2], [r - 0.2, base + 9.2]], thickness: 0.34 },
72
+ { kind: "plate", material: "black", frame: { o: [0, 0, 0], u: [0, 0, -1], v: [0, 1, 0], w: [1, 0, 0] }, outline: [[r + 0.1, base + 8.7], [r + 8.02, base + 2.1], [r + 8.02, base + 2.4], [r + 0.1, base + 9.2]], thickness: 0.4, plain: true },
73
+ ...[1, -1].map((side) => ({ kind: "lathe", material: "white", at: [side * 2, -1.9], segs: 14, profile: [[1.05, base + 0.3], [1.05, base + 5.5], [0.82, base + 7.8], [0.3, base + 9.1], [0.001, base + 9.5]], rings: [base + 5.5] })),
74
+ ...merlin([0, -1.7], 0, RS25_EXIT, RS25_LONG),
75
+ ...merlin([-1.35, 0.7], 0, RS25_EXIT, RS25_LONG),
76
+ ...merlin([1.35, 0.7], 0, RS25_EXIT, RS25_LONG),
77
+ // the flap under the engines
78
+ { kind: "plate", material: "black", frame: FLAT, outline: [[-3.2, base - 1.6], [3.2, base - 1.6], [3.2, base + 0.1], [-3.2, base + 0.1]], thickness: 0.4, plain: true },
79
+ ];
80
+ // each wing: white above, black below, its leading edge black. Two plates, so each stays convex
81
+ for (const side of [1, -1]) {
82
+ const main = [[r - 0.3, base + 0.3], [span, base + 0.3], [span, base + 2], [5.1, base + 12], [r - 0.3, base + 12]];
83
+ const strake = [[r - 0.3, base + 12], [5.1, base + 12], [r - 0.3, base + 21]];
84
+ const mirrored = (points) => points.map(([u, v]) => [u * side, v]);
85
+ out.push({ kind: "plate", material: "white", top: "black", frame: FLAT, outline: mirrored(main), thickness: 0.6 });
86
+ out.push({ kind: "plate", material: "white", top: "black", frame: FLAT, outline: mirrored(strake), thickness: 0.5 });
87
+ const edge = (a, b) => strut("black", [a[0] * side, a[1], FLAT.o[2]], [b[0] * side, b[1], FLAT.o[2]], 0.5, 0.66);
88
+ out.push(edge([span - 0.3, base + 2.4], [5.1, base + 12]), edge([5.1, base + 12], [r - 0.3, base + 21]));
89
+ }
90
+ return out;
91
+ }
92
+ const FROM = "NASA's models for the painted look, their marks painted out. This package's code for the two line looks, from the sourced lengths and widths. The orbiter's outline and where the parts stand are judged from photographs. No name, flag or mark is drawn.";
93
+ export const SHUTTLE_BUILDS = [
94
+ {
95
+ rocket: "space-shuttle",
96
+ variant: "discovery",
97
+ drawnFrom: "The Smithsonian's scan for the painted look, its marks painted out; this package's own orbiter for the two line looks, from the same sourced sizes.",
98
+ parts: [{ slot: "orbiter", kind: "orbiter", name: "Discovery, OV-103", height: ORB, diameter: ORBITER_SPAN.value ?? 0, sourcedDiameter: ORBITER_SPAN, painted: { file: "space-shuttle-discovery-orbiter.glb", credit: "smithsonian-discovery" }, pieces: orbiter }],
99
+ },
100
+ {
101
+ rocket: "space-shuttle",
102
+ variant: "stack",
103
+ drawnFrom: FROM,
104
+ parts: [
105
+ { slot: "external-tank", kind: "tank", name: "External tank", height: TANK, diameter: TANK_R * 2, place: { x: 0, z: 0, y: TANK_Y }, sourcedDiameter: SHUTTLE_TANK_DIAMETER, painted: { file: "space-shuttle-stack-external-tank.glb", credit: "nasa-shuttle-parts" }, pieces: tank },
106
+ { slot: "srb-left", kind: "solid-booster", name: "Solid rocket booster, left", height: SRB, diameter: SRB_R * 2, place: { x: -SRB_X, z: 0 }, sourcedDiameter: SHUTTLE_SRB_DIAMETER, painted: { file: "space-shuttle-stack-srb.glb", credit: "nasa-shuttle-parts" }, pieces: booster },
107
+ { slot: "srb-right", kind: "solid-booster", name: "Solid rocket booster, right", height: SRB, diameter: SRB_R * 2, place: { x: SRB_X, z: 0 }, sourcedDiameter: SHUTTLE_SRB_DIAMETER, painted: { file: "space-shuttle-stack-srb.glb", credit: "nasa-shuttle-parts" }, pieces: booster },
108
+ { slot: "orbiter", kind: "orbiter", name: "Orbiter", height: ORB, diameter: (ORBITER_SPAN.value ?? 0), place: { x: 0, z: ORB_Z, y: ORB_Y }, sourcedDiameter: ORBITER_SPAN, painted: { file: "space-shuttle-stack-orbiter.glb", credit: "nasa-shuttle-hi-res" }, pieces: orbiter },
109
+ ],
110
+ },
111
+ ];
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const SLS_BUILDS: readonly StackBuild[];
@@ -0,0 +1,83 @@
1
+ // The Space Launch System from a table of numbers: the whole, the core, the boosters, the service module and the capsule are sourced. The rest is what the whole leaves, and where the boosters stand is judged from photographs.
2
+ import { ORION_DIAMETER, SLS_SRB_DIAMETER } from "../data/sls.js";
3
+ import { blank } from "../data/types.js";
4
+ import { merlin } from "./falcon.js";
5
+ import { floor, nose, stripes, taper, tube } from "./kit.js";
6
+ const WHOLE = 98.15;
7
+ const CORE = 64.6;
8
+ const CORE_R = 8.41 / 2;
9
+ const SRB = 53.95;
10
+ const SRB_R = 3.71 / 2;
11
+ const SRB_X = CORE_R + SRB_R + 0.8;
12
+ const SERVICE = 3.96;
13
+ const CREW = 3.3;
14
+ const ORION_R = 5.03 / 2;
15
+ const UPPER_R = 2.55;
16
+ const TOP = WHOLE - CORE - SERVICE - CREW;
17
+ // the upper stage and its adapters take 15 m of what is left, judged from photographs, and the tower the rest
18
+ const UPPER = 15.4;
19
+ const TOWER = TOP - UPPER;
20
+ const COVER = CREW * 0.9;
21
+ const RS25_LONG = 168 * 0.0254;
22
+ const RS25_EXIT = (90.7 * 0.0254) / 2;
23
+ function core() {
24
+ const foot = 3.2;
25
+ return [
26
+ tube("foam", CORE_R, foot, CORE, { rings: [foot + 0.02, 7.5, 44, 50.5, CORE - 0.02], welds: [20, 34, 57] }),
27
+ floor(CORE_R, foot),
28
+ ...stripes("black", CORE_R, foot, foot + 3, [0, 90, 180, 270], 30),
29
+ ...[45, 135, 225, 315].flatMap((az) => merlin([1.9 * Math.sin((az * Math.PI) / 180), 1.9 * Math.cos((az * Math.PI) / 180)], 0, RS25_EXIT, RS25_LONG)),
30
+ ];
31
+ }
32
+ function booster() {
33
+ const r = SRB_R;
34
+ const shoulder = SRB - 7.6;
35
+ return [
36
+ taper("white", r * 1.4, 1, r, 3.8, { rings: [1.02] }),
37
+ { kind: "lathe", material: "soot", segs: 30, under: true, profile: [[0, 1], [r * 1.4, 1]] },
38
+ tube("white", r, 3.8, shoulder, { rings: [3.82, 13, 22, 31, 40, shoulder - 0.02], welds: [8, 17, 26, 35] }),
39
+ taper("white", r, shoulder, r * 0.5, SRB - 1.4, { rings: [SRB - 4.6] }),
40
+ nose("white", r * 0.5, SRB - 1.4, SRB, 1.2),
41
+ ...merlin([0, 0], 0, r * 1.02, 3.6),
42
+ ];
43
+ }
44
+ function upperStage() {
45
+ return [
46
+ taper("white", CORE_R, 0, UPPER_R, 8.2, { rings: [0.02, 8.18], welds: [4] }),
47
+ floor(CORE_R, 0),
48
+ tube("white", UPPER_R, 8.2, 12.4, { rings: [12.38] }),
49
+ taper("white", UPPER_R, 12.4, ORION_R, UPPER, { rings: [UPPER - 0.02] }),
50
+ ];
51
+ }
52
+ const service = () => [tube("steel", ORION_R, 0, SERVICE, { rings: [0.02, SERVICE - 0.02] }), floor(ORION_R, 0)];
53
+ const crew = () => [
54
+ { kind: "lathe", material: "steel", segs: 40, body: true, outline: true, profile: [[ORION_R, 0.25], [ORION_R * 0.98, 0.45], [ORION_R * 0.42, CREW * 0.92], [0.5, CREW], [0.001, CREW]] },
55
+ { kind: "lathe", material: "soot", segs: 30, under: true, profile: [[0, 0], [ORION_R * 0.86, 0.08], [ORION_R, 0.25]] },
56
+ ];
57
+ function tower() {
58
+ const top = COVER + TOWER;
59
+ return [
60
+ { kind: "lathe", material: "white", segs: 40, body: true, outline: true, profile: [[ORION_R * 1.02, 0.25], [ORION_R * 0.46, COVER], [0.55, COVER + 0.25]], rings: [0.27] },
61
+ tube("white", 0.55, COVER + 0.25, top - 2.6, { welds: [COVER + 1.4] }),
62
+ taper("white", 0.55, top - 2.6, 0.2, top - 0.7),
63
+ nose("white", 0.2, top - 0.7, top, 1.2),
64
+ ];
65
+ }
66
+ const FROM = "This package's code, from the sourced sizes; the upper stage's and the abort tower's lengths are what the whole leaves, judged from photographs. No licensed model is used, and no name, flag or mark is drawn.";
67
+ const NONE = blank("No source read here gives it.");
68
+ export const SLS_BUILDS = [
69
+ {
70
+ rocket: "sls",
71
+ variant: "block-1",
72
+ drawnFrom: FROM,
73
+ parts: [
74
+ { slot: "first-stage", kind: "first-stage", name: "Core stage, Space Launch System", height: CORE, diameter: CORE_R * 2, top: [CORE, CORE_R * 2], pieces: core },
75
+ { slot: "srb-left", kind: "solid-booster", name: "Five-segment booster, left", height: SRB, diameter: SRB_R * 2, place: { x: -SRB_X, z: 0 }, sourcedDiameter: SLS_SRB_DIAMETER, pieces: booster },
76
+ { slot: "srb-right", kind: "solid-booster", name: "Five-segment booster, right", height: SRB, diameter: SRB_R * 2, place: { x: SRB_X, z: 0 }, sourcedDiameter: SLS_SRB_DIAMETER, pieces: booster },
77
+ { slot: "upper-stage", kind: "second-stage", name: "Upper stage and its adapters, Space Launch System", height: UPPER, diameter: CORE_R * 2, bottom: [0, CORE_R * 2], top: [UPPER, ORION_R * 2], sourcedDiameter: NONE, pieces: upperStage },
78
+ { slot: "service-module", kind: "service-module", name: "Orion's service module", height: SERVICE, diameter: ORION_R * 2, bottom: [0, ORION_R * 2], top: [SERVICE, ORION_R * 2], sourcedDiameter: ORION_DIAMETER, pieces: service },
79
+ { slot: "capsule", kind: "capsule", name: "Orion's crew module", height: CREW, diameter: ORION_R * 2, bottom: [0, ORION_R * 2], top: [CREW, 1.1], sourcedDiameter: ORION_DIAMETER, pieces: crew },
80
+ { slot: "escape-tower", kind: "tower", name: "Orion's abort tower and its cover", height: COVER + TOWER, diameter: ORION_R * 2.04, bottom: [COVER, 1.1], sourcedDiameter: NONE, pieces: tower },
81
+ ],
82
+ },
83
+ ];
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const SOYUZ_BUILDS: readonly StackBuild[];
@@ -0,0 +1,75 @@
1
+ // Soyuz-2 from a table of numbers: the whole, the core, the boosters, the third stage and the width over the fins are sourced. Its waist, how far the boosters lean and the paint are judged from photographs.
2
+ import { SOYUZ_BOOSTER_DIAMETER } from "../data/soyuz.js";
3
+ import { blank } from "../data/types.js";
4
+ import { deg } from "../framing.js";
5
+ import { merlin } from "./falcon.js";
6
+ import { fairingShell, floor, tube } from "./kit.js";
7
+ import { radial, strut } from "./pieces.js";
8
+ const WHOLE = 46.3;
9
+ const CORE = 27.1;
10
+ const CORE_R = 2.95 / 2;
11
+ const WAIST = 1.05;
12
+ const BOOST = 19.6;
13
+ const BOOST_R = 2.68 / 2;
14
+ const THIRD = 6.7;
15
+ const THIRD_R = 2.66 / 2;
16
+ const FAIRING = WHOLE - CORE - THIRD;
17
+ const FAIRING_R = 1.65;
18
+ const SPAN = 10.3 / 2;
19
+ const CHAMBER = 0.34;
20
+ /** Four chambers in a square, as one engine of this family has. */
21
+ const chambers = (at, y, spread) => [[1, 1], [1, -1], [-1, 1], [-1, -1]].flatMap(([a, b]) => merlin([at[0] + a * spread, at[1] + b * spread], y, CHAMBER, 1.5));
22
+ function core() {
23
+ const start = 1.3;
24
+ const shoulder = BOOST + 0.9;
25
+ return [
26
+ { kind: "lathe", material: "white", segs: 40, body: true, outline: true, profile: [[WAIST, start], [CORE_R * 0.86, shoulder * 0.55], [CORE_R, shoulder], [CORE_R, CORE - 3.6], [THIRD_R * 1.02, CORE - 2.4]], rings: [start + 0.02, shoulder, CORE - 3.6], welds: [11] },
27
+ floor(WAIST, start),
28
+ ...chambers([0, 0], 0, 0.42),
29
+ // the open frame between the core and the third stage
30
+ ...[45, 135, 225, 315].flatMap((az) => {
31
+ const a = deg(az);
32
+ const at = (r, y) => [r * Math.sin(a), y, r * Math.cos(a)];
33
+ return [strut("dark", at(THIRD_R * 0.96, CORE - 2.4), at(THIRD_R * 0.96, CORE), 0.12, 0.12)];
34
+ }),
35
+ { kind: "lathe", material: "dark", segs: 28, under: true, profile: [[0, CORE - 2.4], [THIRD_R, CORE - 2.4]] },
36
+ ];
37
+ }
38
+ /** A booster, leaning in to meet the core at its tip: short frusta, each a little nearer the core. `az` is where it stands, in degrees. */
39
+ function booster(az) {
40
+ const a = deg(az);
41
+ const inward = [-Math.sin(a), -Math.cos(a)];
42
+ const base = 1.3;
43
+ const reach = WAIST + BOOST_R - CORE_R * 0.92;
44
+ const slope = [(inward[0] * reach) / (BOOST - base), (inward[1] * reach) / (BOOST - base)];
45
+ const profile = [];
46
+ for (let i = 0; i <= 6; i++) {
47
+ const t = i / 6;
48
+ profile.push([BOOST_R * (1 - t) ** 0.9, base + (BOOST - base) * t]);
49
+ }
50
+ profile[6] = [0.001, BOOST];
51
+ const out = [{ kind: "lathe", material: "white", at: [-slope[0] * base, -slope[1] * base], lean: slope, segs: 24, body: true, outline: true, profile, rings: [base + 0.02] }];
52
+ out.push({ kind: "lathe", material: "soot", segs: 24, under: true, profile: [[0, base], [BOOST_R, base]] });
53
+ out.push(...chambers([0, 0], 0, 0.42));
54
+ // the square fin that sticks out of its foot, whose tip gives the sourced width over the fins
55
+ const out0 = SPAN - (WAIST + BOOST_R);
56
+ out.push({ kind: "plate", material: "white", frame: radial(a), outline: [[BOOST_R - 0.1, base], [out0, base], [out0, base + 1.4], [BOOST_R - 0.1, base + 1.8]], thickness: 0.1 });
57
+ return out;
58
+ }
59
+ const third = () => [tube("white", THIRD_R, 0, THIRD, { rings: [0.02, THIRD - 0.02], welds: [THIRD * 0.5] }), floor(THIRD_R, 0), ...merlin([0, 0], -0.0, 0.5, 1)];
60
+ const FROM = "This package's code, from the sourced whole, core, boosters, third stage and width over the fins; the waist, the boosters' lean, the fairing's length and the paint are judged from photographs. No licensed model is used, and no name or mark is drawn.";
61
+ const STAND = WAIST + BOOST_R;
62
+ const place = (az) => ({ x: STAND * Math.sin(deg(az)), z: STAND * Math.cos(deg(az)) });
63
+ export const SOYUZ_BUILDS = [
64
+ {
65
+ rocket: "soyuz",
66
+ variant: "soyuz-2",
67
+ drawnFrom: FROM,
68
+ parts: [
69
+ { slot: "first-stage", kind: "first-stage", name: "Block A, the core, Soyuz-2", height: CORE, diameter: CORE_R * 2, top: [CORE, THIRD_R * 2], sourcedDiameter: { value: 2.95, source: "wikipedia-soyuz-2" }, pieces: core },
70
+ ...[45, 135, 225, 315].map((az, i) => ({ slot: `booster-${i + 1}`, kind: "liquid-booster", name: `Booster ${i + 1}, Soyuz-2`, height: BOOST, diameter: BOOST_R * 2, place: place(az), sourcedDiameter: SOYUZ_BOOSTER_DIAMETER, pieces: () => booster(az) })),
71
+ { slot: "third-stage", kind: "third-stage", name: "Block I, third stage, Soyuz-2", height: THIRD, diameter: THIRD_R * 2, bottom: [0, THIRD_R * 2], top: [THIRD, THIRD_R * 2], sourcedDiameter: { value: 2.66, source: "wikipedia-soyuz-2" }, pieces: third },
72
+ { slot: "fairing", kind: "fairing", name: "Fairing, Soyuz-2", height: FAIRING, diameter: FAIRING_R * 2, bottom: [0, THIRD_R * 2], sourcedDiameter: blank("No source read here gives it."), pieces: () => fairingShell("white", FAIRING_R, FAIRING, FAIRING * 0.5, 1.35, THIRD_R) },
73
+ ],
74
+ },
75
+ ];
@@ -0,0 +1,39 @@
1
+ import type { CreditId } from "../data/credits.ts";
2
+ import type { PartKind } from "../parts.ts";
3
+ import type { Figure } from "../data/types.ts";
4
+ import type { Piece } from "./pieces.ts";
5
+ export interface StackPart {
6
+ slot: string;
7
+ kind: PartKind;
8
+ name: string;
9
+ /** Metres, as drawn. */
10
+ height: number;
11
+ /** Metres, the widest as drawn. */
12
+ diameter: number;
13
+ /** Where it mates: metres above its origin, and metres across there. */
14
+ top?: readonly [number, number];
15
+ bottom?: readonly [number, number];
16
+ /** It is placed rather than stacked: beside the core, or standing on what is below. */
17
+ place?: {
18
+ x: number;
19
+ z: number;
20
+ y?: number;
21
+ };
22
+ /** Its own diameter's source, when the variant's is not this part's. */
23
+ sourcedDiameter?: Figure;
24
+ /** The painted look's model, when a licensed one shows it. */
25
+ painted?: {
26
+ file: string;
27
+ credit: CreditId;
28
+ };
29
+ /** Other variants it is true for. */
30
+ alsoTrueTo?: readonly string[];
31
+ pieces: () => Piece[];
32
+ }
33
+ export interface StackBuild {
34
+ rocket: string;
35
+ variant: string;
36
+ /** What a reader should be told about where its shape came from. */
37
+ drawnFrom: string;
38
+ parts: readonly StackPart[];
39
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const STARBASE_BUILDS: readonly StackBuild[];