@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
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const JUPITER_C_BUILDS: readonly StackBuild[];
@@ -0,0 +1,24 @@
1
+ // Jupiter-C in plain shapes, for the line looks: its height and width are sourced, and its outline is measured from NASA's model at that scale. The painted look is NASA's model.
2
+ import { JUPITER_C_WIDE } from "../data/jupiterc.js";
3
+ import { fins, floor, stripes, taper, tube } from "./kit.js";
4
+ const H = 21.3;
5
+ const R = (JUPITER_C_WIDE.value ?? 0) / 2;
6
+ const vehicle = () => [
7
+ tube("white", R, 0.42, 3.1, { rings: [0.44, 3.08] }),
8
+ ...stripes("black", R, 0.42, 3.1, [0, 180], 60),
9
+ floor(R, 0.42),
10
+ ...fins("engine-pale", R, [45, 135, 225, 315], [[0, 0.9], [0.5, 0.1], [0.55, 0.9], [0, 2.9]], 0.06),
11
+ tube("steel", R, 3.1, 14.6, { rings: [9.2], welds: [6, 12] }),
12
+ taper("steel", R, 14.6, 0.47, 18.2, { rings: [14.62] }),
13
+ taper("steel", 0.47, 18.2, 0.17, 19.4),
14
+ tube("engine-pale", 0.17, 19.4, H - 0.4),
15
+ taper("engine-pale", 0.17, H - 0.4, 0.02, H),
16
+ ];
17
+ export const JUPITER_C_BUILDS = [
18
+ {
19
+ rocket: "jupiter-c",
20
+ variant: "jupiter-c",
21
+ drawnFrom: "NASA's model for the painted look, its lettering removed. This package's plain shapes for the two line looks, from the sourced height and width. No lettering is drawn.",
22
+ parts: [{ slot: "vehicle", kind: "first-stage", name: "Jupiter-C", height: H, diameter: R * 2, sourcedDiameter: JUPITER_C_WIDE, painted: { file: "jupiter-c-vehicle.glb", credit: "nasa-jupiter-c" }, pieces: vehicle }],
23
+ },
24
+ ];
@@ -0,0 +1,36 @@
1
+ import type { MaterialName } from "./materials.ts";
2
+ import { type Lathe, type Piece, type Plate } from "./pieces.ts";
3
+ type Extra = Partial<Omit<Lathe, "kind" | "material" | "profile">>;
4
+ /** A straight tube from y0 to y1. */
5
+ export declare const tube: (material: MaterialName, r: number, y0: number, y1: number, extra?: Extra) => Lathe;
6
+ /** A cone or a step between two radii. */
7
+ export declare const taper: (material: MaterialName, r0: number, y0: number, r1: number, y1: number, extra?: Extra) => Lathe;
8
+ /** A rounded nose from a radius at y0 to a point at y1. `blunt` above 1 is fuller at the shoulder, below 1 is sharper. */
9
+ export declare function nose(material: MaterialName, r: number, y0: number, y1: number, blunt?: number, extra?: Extra): Lathe;
10
+ /** A flat dark floor closing a tube from below. */
11
+ export declare const floor: (r: number, y: number, material?: MaterialName) => Lathe;
12
+ /** Stripes down a hull: `width` degrees wide, each centred on one of `azimuths`, just proud of it. */
13
+ export declare const stripes: (material: MaterialName, r: number, y0: number, y1: number, azimuths: readonly number[], width: number) => Lathe[];
14
+ /** Engines in a ring, the first at `start` degrees. */
15
+ export declare function engineRing(count: number, ringRadius: number, y: number, exit: number, length: number, start?: number): Piece[];
16
+ /** A long box up the side of a hull at `az` degrees: a raceway or a cable tunnel. */
17
+ export declare const raceway: (material: MaterialName, r: number, y0: number, y1: number, az: number, width?: number, depth?: number) => Plate;
18
+ /** Fins on a hull, each a flat outline given as [out from the hull, y] points. */
19
+ export declare const fins: (material: MaterialName, r: number, azimuths: readonly number[], outline: readonly (readonly [number, number])[], thickness?: number) => Plate[];
20
+ /** A straight strut between two points given in cylinder terms: [radius, y, azimuth in degrees]. */
21
+ export declare function brace(material: MaterialName, a: readonly [number, number, number], b: readonly [number, number, number], width?: number): Plate;
22
+ /** An open skirt: a tube seen from outside and from inside, so an engine under it shows from below. */
23
+ export declare const skirt: (material: MaterialName, r: number, y0: number, y1: number, extra?: Extra) => Piece[];
24
+ /** A cone over an engine, off the axis: a fairing at the foot of a stage. */
25
+ export declare const pod: (material: MaterialName, at: readonly [number, number], r0: number, y0: number, r1: number, y1: number, extra?: Extra) => Lathe;
26
+ /** A fairing: straight from the joint, then a rounded nose, with the seam where its halves meet. */
27
+ export declare function fairingShell(material: MaterialName, r: number, height: number, straight: number, blunt?: number, jointRadius?: number): Piece[];
28
+ /** Legs folded against a hull, as dark ribs from the foot up. */
29
+ export declare const foldedLegs: (material: MaterialName, r: number, azimuths: readonly number[], foot: number, top: number, width: number) => Plate[];
30
+ /** Pieces turned round the Y axis by `turn` degrees, then moved along the ground. For putting a whole structure in its place on a map. A lathe's arc and lean are left as they are, so they are for pieces with neither. */
31
+ export declare function moved(pieces: readonly Piece[], x: number, z: number, turn?: number): Piece[];
32
+ /** A box on the ground, `wide` by `deep` and turned `turn` degrees, from y0 to y1. */
33
+ export declare function slab(material: MaterialName, x: number, z: number, wide: number, deep: number, turn: number, y0: number, y1: number, plain?: boolean): Plate;
34
+ /** A road on the ground, from point to point. */
35
+ export declare const road: (material: MaterialName, points: readonly (readonly [number, number])[], width: number, y: number) => Plate[];
36
+ export {};
@@ -0,0 +1,95 @@
1
+ // The small shapes a rocket is put together from, so a new rocket is a table of numbers. Each returns plain pieces: the mesh and the drawing are made from them as for any other part. Pure.
2
+ import { deg } from "../framing.js";
3
+ import { merlin } from "./falcon.js";
4
+ import { pointOf, radial, strut } from "./pieces.js";
5
+ /** A straight tube from y0 to y1. */
6
+ export const tube = (material, r, y0, y1, extra = {}) => ({ kind: "lathe", material, segs: 40, body: true, outline: true, profile: [[r, y0], [r, y1]], ...extra });
7
+ /** A cone or a step between two radii. */
8
+ export const taper = (material, r0, y0, r1, y1, extra = {}) => ({ kind: "lathe", material, segs: 40, body: true, outline: true, profile: [[r0, y0], [r1, y1]], ...extra });
9
+ /** A rounded nose from a radius at y0 to a point at y1. `blunt` above 1 is fuller at the shoulder, below 1 is sharper. */
10
+ export function nose(material, r, y0, y1, blunt = 1.7, extra = {}) {
11
+ const steps = 10;
12
+ const profile = [];
13
+ for (let i = 0; i <= steps; i++) {
14
+ const t = i / steps;
15
+ profile.push([r * Math.sqrt(Math.max(0, 1 - t ** (2 * blunt))), y0 + (y1 - y0) * t]);
16
+ }
17
+ profile[steps] = [0.001, y1];
18
+ return { kind: "lathe", material, segs: 40, body: true, outline: true, profile, ...extra };
19
+ }
20
+ /** A flat dark floor closing a tube from below. */
21
+ export const floor = (r, y, material = "soot") => ({ kind: "lathe", material, segs: 32, under: true, profile: [[0, y], [r, y]] });
22
+ /** Stripes down a hull: `width` degrees wide, each centred on one of `azimuths`, just proud of it. */
23
+ export const stripes = (material, r, y0, y1, azimuths, width) => azimuths.map((az) => ({ kind: "lathe", material, segs: 72, body: true, profile: [[r * 1.012, y0], [r * 1.012, y1]], arc: () => [deg(az - width / 2), deg(az + width / 2)] }));
24
+ /** Engines in a ring, the first at `start` degrees. */
25
+ export function engineRing(count, ringRadius, y, exit, length, start = 0) {
26
+ const out = [];
27
+ for (let i = 0; i < count; i++) {
28
+ const a = deg(start + (i * 360) / count);
29
+ out.push(...merlin([ringRadius * Math.sin(a), ringRadius * Math.cos(a)], y, exit, length));
30
+ }
31
+ return out;
32
+ }
33
+ /** A long box up the side of a hull at `az` degrees: a raceway or a cable tunnel. */
34
+ export const raceway = (material, r, y0, y1, az, width = 0.2, depth = 0.1) => {
35
+ const f = radial(deg(az));
36
+ return strut(material, pointOf(f, r + depth / 2, y0), pointOf(f, r + depth / 2, y1), width, depth, { plain: false });
37
+ };
38
+ /** Fins on a hull, each a flat outline given as [out from the hull, y] points. */
39
+ export const fins = (material, r, azimuths, outline, thickness = 0.1) => azimuths.map((az) => ({ kind: "plate", material, frame: radial(deg(az)), outline: outline.map(([out, y]) => [r + out, y]), thickness }));
40
+ /** A straight strut between two points given in cylinder terms: [radius, y, azimuth in degrees]. */
41
+ export function brace(material, a, b, width = 0.1) {
42
+ const at = ([r, y, az]) => [r * Math.sin(deg(az)), y, r * Math.cos(deg(az))];
43
+ return strut(material, at(a), at(b), width, width);
44
+ }
45
+ /** An open skirt: a tube seen from outside and from inside, so an engine under it shows from below. */
46
+ export const skirt = (material, r, y0, y1, extra = {}) => [tube(material, r, y0, y1, extra), { kind: "lathe", material: "soot", segs: 32, under: true, only: "mesh", profile: [[r * 0.97, y1], [r * 0.97, y0]] }];
47
+ /** A cone over an engine, off the axis: a fairing at the foot of a stage. */
48
+ export const pod = (material, at, r0, y0, r1, y1, extra = {}) => ({ kind: "lathe", material, at, segs: 14, profile: [[r0, y0], [r1, y1]], ...extra });
49
+ /** A fairing: straight from the joint, then a rounded nose, with the seam where its halves meet. */
50
+ export function fairingShell(material, r, height, straight, blunt = 1.4, jointRadius = r) {
51
+ const shell = nose(material, r, straight, height, blunt);
52
+ const seam = (a) => shell.profile.map(([x, y]) => [(x * 1.005) * Math.sin(a), y, (x * 1.005) * Math.cos(a)]);
53
+ return [
54
+ { ...shell, profile: [[jointRadius, 0], ...shell.profile], rings: [straight] },
55
+ floor(jointRadius, 0),
56
+ { kind: "lines", weight: "feature", paths: [seam(deg(90)), seam(deg(-90))] },
57
+ ];
58
+ }
59
+ /** Legs folded against a hull, as dark ribs from the foot up. */
60
+ export const foldedLegs = (material, r, azimuths, foot, top, width) => azimuths.map((az) => {
61
+ const f = radial(deg(az));
62
+ return strut(material, pointOf(f, r + 0.1, foot), pointOf(f, r + 0.1, top), width, 0.3, { plain: false });
63
+ });
64
+ /** Pieces turned round the Y axis by `turn` degrees, then moved along the ground. For putting a whole structure in its place on a map. A lathe's arc and lean are left as they are, so they are for pieces with neither. */
65
+ export function moved(pieces, x, z, turn = 0) {
66
+ const c = Math.cos(deg(turn));
67
+ const s = Math.sin(deg(turn));
68
+ const spin = ([a, b, d]) => [a * c + d * s, b, -a * s + d * c];
69
+ const at = (p) => {
70
+ const [a, b, d] = spin(p);
71
+ return [a + x, b, d + z];
72
+ };
73
+ return pieces.map((piece) => {
74
+ if (piece.kind === "plate")
75
+ return { ...piece, frame: { o: at(piece.frame.o), u: spin(piece.frame.u), v: spin(piece.frame.v), w: spin(piece.frame.w) } };
76
+ if (piece.kind === "lines")
77
+ return { ...piece, paths: piece.paths.map((path) => path.map(at)) };
78
+ const [a0, d0] = piece.at ?? [0, 0];
79
+ const [a, , d] = at([a0, 0, d0]);
80
+ return { ...piece, at: [a, d] };
81
+ });
82
+ }
83
+ /** A box on the ground, `wide` by `deep` and turned `turn` degrees, from y0 to y1. */
84
+ export function slab(material, x, z, wide, deep, turn, y0, y1, plain = true) {
85
+ const c = Math.cos(deg(turn));
86
+ const s = Math.sin(deg(turn));
87
+ return { kind: "plate", material, frame: { o: [x, (y0 + y1) / 2, z], u: [c, 0, s], v: [-s, 0, c], w: [0, 1, 0] }, outline: [[-wide / 2, -deep / 2], [wide / 2, -deep / 2], [wide / 2, deep / 2], [-wide / 2, deep / 2]], thickness: y1 - y0, plain };
88
+ }
89
+ /** A road on the ground, from point to point. */
90
+ export const road = (material, points, width, y) => points.slice(1).map((b, i) => {
91
+ const a = points[i];
92
+ const dx = b[0] - a[0];
93
+ const dz = b[1] - a[1];
94
+ return slab(material, (a[0] + b[0]) / 2, (a[1] + b[1]) / 2, Math.hypot(dx, dz) + width, width, (Math.atan2(dz, dx) * 180) / Math.PI, y, y + 0.2);
95
+ });
@@ -0,0 +1,3 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const DRONESHIP_BUILDS: readonly StackBuild[];
3
+ export declare const LANDING_ZONE_BUILDS: readonly StackBuild[];
@@ -0,0 +1,81 @@
1
+ // A drone ship's deck, a landing pad, and a Falcon 9 first stage standing on them with its legs out. The deck's and the pad's sizes are sourced where the data says so; hull, equipment and legs are judged from photographs.
2
+ import { blank } from "../data/types.js";
3
+ import { deg } from "../framing.js";
4
+ import { falconFirstStageBare, FALCON_DRAWS } from "./falcon.js";
5
+ import { brace } from "./kit.js";
6
+ const DECK_L = 91.44;
7
+ const DECK_W = 51.82;
8
+ const HULL_L = DECK_L * 1.18;
9
+ const HULL_W = 30.5;
10
+ const HULL_H = 6;
11
+ const DECK_T = 0.8;
12
+ const DECK_TOP = HULL_H + DECK_T;
13
+ const PAD_R = 85.95 / 2;
14
+ const PAD_T = 0.4;
15
+ const FOOT = 9;
16
+ const LEG_TOP = 10.5;
17
+ const FLAT = (y) => ({ o: [0, y, 0], u: [1, 0, 0], v: [0, 0, 1], w: [0, 1, 0] });
18
+ const box = (material, x0, x1, z0, z1, y0, y1, plain = true) => ({ kind: "plate", material, frame: FLAT((y0 + y1) / 2), outline: [[x0, z0], [x1, z0], [x1, z1], [x0, z1]], thickness: y1 - y0, plain });
19
+ const disc = (material, r, r0, y) => ({ kind: "lathe", material, segs: 72, body: true, profile: [[r, y], [r0, y]] });
20
+ function deck() {
21
+ const L = DECK_L / 2;
22
+ const W = DECK_W / 2;
23
+ const hull = HULL_L / 2;
24
+ const h = HULL_W / 2;
25
+ const out = [
26
+ box("dark", -hull, hull, -h, h, 0, HULL_H, false),
27
+ { ...box("fin", -L, L, -W, W, HULL_H, DECK_TOP, false), plain: false },
28
+ // the plain ring: no mark, no name
29
+ disc("white", 23, 21.8, DECK_TOP + 0.03),
30
+ // the deck's yellow edge
31
+ box("yellow", -L, L, W - 0.5, W, DECK_TOP, DECK_TOP + 0.05),
32
+ box("yellow", -L, L, -W, -W + 0.5, DECK_TOP, DECK_TOP + 0.05),
33
+ ];
34
+ // equipment at each end, on the hull; thrusters at the corners
35
+ for (const side of [1, -1]) {
36
+ const a = side * (L + 0.6);
37
+ const b = side * (hull - 0.6);
38
+ const [lo, hi] = a < b ? [a, b] : [b, a];
39
+ out.push(box("white", lo, hi, -h + 1, -h + 4, HULL_H, HULL_H + 3));
40
+ out.push(box("gold", lo, hi, -h + 5, -h + 8, HULL_H, HULL_H + 2.6));
41
+ out.push(box("white", lo, hi, h - 8, h - 5, HULL_H, HULL_H + 2.6));
42
+ out.push(box("blue", lo, hi, h - 4, h - 1, HULL_H, HULL_H + 3));
43
+ for (const z of [1, -1])
44
+ out.push(box("black", side * L - 3, side * L + 3, z * (h + 0.1), z * (h + 3.2), 1, HULL_H - 0.6));
45
+ }
46
+ return out;
47
+ }
48
+ function pad() {
49
+ return [
50
+ { kind: "lathe", material: "concrete", segs: 72, body: true, outline: true, profile: [[PAD_R, 0], [PAD_R, PAD_T], [0.001, PAD_T]], rings: [PAD_T] },
51
+ disc("white", PAD_R * 0.62, PAD_R * 0.6, PAD_T + 0.03),
52
+ ];
53
+ }
54
+ function landed() {
55
+ const r = FALCON_DRAWS["block-5"].first.radius;
56
+ const out = falconFirstStageBare("block-5");
57
+ for (const az of [45, 135, 225, 315]) {
58
+ // a leg down from its hinge, a pusher from high on the hull, and a foot
59
+ out.push(brace("black", [r, 1, az], [FOOT, 0.4, az], 0.55));
60
+ out.push(brace("black", [r + 0.05, LEG_TOP, az], [FOOT, 0.5, az], 0.28));
61
+ const a = deg(az);
62
+ out.push(box("dark", FOOT * Math.sin(a) - 0.7, FOOT * Math.sin(a) + 0.7, FOOT * Math.cos(a) - 0.7, FOOT * Math.cos(a) + 0.7, 0, 0.2));
63
+ }
64
+ return out;
65
+ }
66
+ const LANDED_NAME = "First stage, Falcon 9 Block 5, landed with its legs out";
67
+ const NONE = blank("No source read here gives it.");
68
+ const standing = (y) => ({ slot: "landed", kind: "first-stage", name: LANDED_NAME, height: FALCON_DRAWS["block-5"].first.height, diameter: FOOT * 2, place: { x: 0, z: 0, y }, sourcedDiameter: NONE, pieces: landed });
69
+ const SHIP_FROM = "This package's code. Its deck's size is the first barge's, in its article; hull, equipment and legs are judged from photographs. No name, mark or logo is drawn.";
70
+ export const DRONESHIP_BUILDS = ["ocisly", "jrti", "asog"].map((variant) => ({
71
+ rocket: "droneship",
72
+ variant,
73
+ drawnFrom: SHIP_FROM,
74
+ parts: [{ slot: "deck", kind: "deck", name: "Deck and hull", height: DECK_TOP, diameter: DECK_L, sourcedDiameter: NONE, pieces: deck }, standing(DECK_TOP)],
75
+ }));
76
+ export const LANDING_ZONE_BUILDS = ["lz-1", "lz-4"].map((variant) => ({
77
+ rocket: "landing-zone",
78
+ variant,
79
+ drawnFrom: "This package's code, a plain round pad at the size the source gives for the Cape's; the stage's legs are judged from photographs. No mark is drawn.",
80
+ parts: [{ slot: "pad", kind: "deck", name: "Landing pad", height: PAD_T, diameter: PAD_R * 2, ...(variant === "lz-4" ? { sourcedDiameter: NONE } : {}), pieces: pad }, standing(PAD_T)],
81
+ }));
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const LUNAR_MODULE_BUILDS: readonly StackBuild[];
@@ -0,0 +1,43 @@
1
+ // The lunar module in plain shapes, for the line looks: its height and widths are sourced, and where its legs and tanks stand is measured from NASA's model at that scale. The painted look is NASA's model.
2
+ import { LM_ASCENT_WIDTH, LM_WIDTH } from "../data/lunarmodule.js";
3
+ import { deg } from "../framing.js";
4
+ import { merlin } from "./falcon.js";
5
+ import { brace, taper, tube } from "./kit.js";
6
+ const WHOLE = 7.04;
7
+ const SCALE = WHOLE / 5.02;
8
+ const DESCENT = 3.96;
9
+ const ASCENT_AT = (2.1 - 0.1) * SCALE;
10
+ const R = 4.22 / 2;
11
+ function descent() {
12
+ const out = [tube("gold", R, 1.36, 3.25, { segs: 8, rings: [1.38, 3.23] }), { kind: "lathe", material: "soot", segs: 8, under: true, profile: [[0, 1.36], [R, 1.36]] }, ...merlin([0, 0], 0.45, 0.75, 1)];
13
+ for (const az of [0, 90, 180, 270]) {
14
+ out.push(brace("gold", [4.2, 0.35, az], [2.1, 2.9, az], 0.14), brace("engine-pale", [3, 1.3, az], [2.1, 1.45, az + 28], 0.07), brace("engine-pale", [3, 1.3, az], [2.1, 1.45, az - 28], 0.07));
15
+ out.push({ kind: "lathe", material: "gold", at: [4.3 * Math.sin(deg(az)), 4.3 * Math.cos(deg(az))], segs: 12, outline: true, profile: [[0.001, 0], [0.42, 0.04], [0.42, 0.1], [0.001, 0.28]] });
16
+ }
17
+ for (const az of [45, 135, 225, 315])
18
+ out.push(brace("engine-pale", [1.9, 3.25, az], [1.9, DESCENT, az], 0.1));
19
+ return out;
20
+ }
21
+ function ascent() {
22
+ const r = (LM_ASCENT_WIDTH.value ?? 0) / 2;
23
+ const out = [tube("engine-pale", r * 0.92, 0.7, 2.9, { segs: 8, rings: [0.72] }), taper("engine-pale", r * 0.92, 2.9, r * 0.55, 3.35, { segs: 8 }), { kind: "lathe", material: "dark", segs: 8, under: true, profile: [[0, 0.7], [r * 0.92, 0.7]] }];
24
+ for (const az of [45, 135, 225, 315]) {
25
+ const a = deg(az);
26
+ out.push({ kind: "lathe", material: "gold", at: [r * 1.05 * Math.sin(a), r * 1.05 * Math.cos(a)], segs: 8, profile: [[0.08, 1.8], [0.08, 2.25]] });
27
+ }
28
+ // the dish and its mast
29
+ out.push({ kind: "lathe", material: "white", at: [0, -0.6], segs: 14, outline: true, profile: [[0.001, 3.55], [0.45, 3.9], [0.48, 4]] }, brace("engine-pale", [0.6, 3.2, 180], [0.6, 3.6, 180], 0.06), brace("engine-pale", [0.9, 3.2, 90], [0.9, 4.2, 90], 0.03));
30
+ return out;
31
+ }
32
+ const FROM = "NASA's model for the painted look. This package's plain shapes for the two line looks, from the sourced height and widths; where its parts stand is measured from NASA's model.";
33
+ export const LUNAR_MODULE_BUILDS = [
34
+ {
35
+ rocket: "lunar-module",
36
+ variant: "lunar-module",
37
+ drawnFrom: FROM,
38
+ parts: [
39
+ { slot: "descent", kind: "spacecraft", name: "Descent stage, Apollo lunar module", height: DESCENT, diameter: LM_WIDTH.value ?? 0, sourcedDiameter: LM_WIDTH, painted: { file: "lunar-module-descent.glb", credit: "nasa-lunar-module" }, pieces: descent },
40
+ { slot: "ascent", kind: "spacecraft", name: "Ascent stage, Apollo lunar module", height: WHOLE - ASCENT_AT, diameter: LM_ASCENT_WIDTH.value ?? 0, place: { x: 0, z: 0, y: ASCENT_AT }, sourcedDiameter: LM_ASCENT_WIDTH, painted: { file: "lunar-module-ascent.glb", credit: "nasa-lunar-module" }, pieces: ascent },
41
+ ],
42
+ },
43
+ ];
@@ -1,4 +1,15 @@
1
1
  import type { FillName } from "../looks.ts";
2
+ /**
3
+ * One material: its colour, how metal and how rough it is in a 3D view, and the fill group it takes in a drawing.
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * import { MATERIALS, type MaterialSpec } from "@johnmorrisdotca/uchusen-rockets";
8
+ *
9
+ * const steel: MaterialSpec = MATERIALS.steel;
10
+ * console.log(steel.color, steel.fill);
11
+ * ```
12
+ */
2
13
  export interface MaterialSpec {
3
14
  color: string;
4
15
  metal: number;
@@ -6,6 +17,16 @@ export interface MaterialSpec {
6
17
  /** The fill it takes in a drawing. */
7
18
  fill: FillName;
8
19
  }
20
+ /**
21
+ * Every material the meshes use, by name. One naming scheme serves every source.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * import { MATERIALS } from "@johnmorrisdotca/uchusen-rockets";
26
+ *
27
+ * console.log(Object.keys(MATERIALS).length > 5);
28
+ * ```
29
+ */
9
30
  export declare const MATERIALS: {
10
31
  readonly steel: {
11
32
  readonly color: "#c3c7cb";
@@ -109,5 +130,58 @@ export declare const MATERIALS: {
109
130
  readonly rough: 0.5;
110
131
  readonly fill: "metal";
111
132
  };
133
+ readonly foam: {
134
+ readonly color: "#a9592a";
135
+ readonly metal: 0;
136
+ readonly rough: 0.8;
137
+ readonly fill: "foam";
138
+ };
139
+ readonly yellow: {
140
+ readonly color: "#c9a227";
141
+ readonly metal: 0.1;
142
+ readonly rough: 0.6;
143
+ readonly fill: "metal";
144
+ };
145
+ readonly concrete: {
146
+ readonly color: "#8b8d8a";
147
+ readonly metal: 0;
148
+ readonly rough: 0.9;
149
+ readonly fill: "metal";
150
+ };
151
+ readonly ground: {
152
+ readonly color: "#4d5a41";
153
+ readonly metal: 0;
154
+ readonly rough: 1;
155
+ readonly fill: "dark";
156
+ };
157
+ readonly sand: {
158
+ readonly color: "#c3b58c";
159
+ readonly metal: 0;
160
+ readonly rough: 1;
161
+ readonly fill: "white";
162
+ };
163
+ readonly water: {
164
+ readonly color: "#27475e";
165
+ readonly metal: 0.1;
166
+ readonly rough: 0.4;
167
+ readonly fill: "dark";
168
+ };
169
+ readonly red: {
170
+ readonly color: "#a4322b";
171
+ readonly metal: 0.1;
172
+ readonly rough: 0.5;
173
+ readonly fill: "metal";
174
+ };
112
175
  };
176
+ /**
177
+ * The name of one material in `MATERIALS`.
178
+ *
179
+ * @example
180
+ * ```ts
181
+ * import type { MaterialName } from "@johnmorrisdotca/uchusen-rockets";
182
+ *
183
+ * const name: MaterialName = "steel";
184
+ * console.log(name);
185
+ * ```
186
+ */
113
187
  export type MaterialName = keyof typeof MATERIALS;
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Every material the meshes use, by name. One naming scheme serves every source.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * import { MATERIALS } from "@johnmorrisdotca/uchusen-rockets";
7
+ *
8
+ * console.log(Object.keys(MATERIALS).length > 5);
9
+ * ```
10
+ */
1
11
  export const MATERIALS = {
2
12
  steel: { color: "#c3c7cb", metal: 1, rough: 0.3, fill: "hull" },
3
13
  tile: { color: "#101114", metal: 0, rough: 0.62, fill: "tile" },
@@ -16,4 +26,11 @@ export const MATERIALS = {
16
26
  solar: { color: "#10163a", metal: 0.4, rough: 0.22, fill: "dark" },
17
27
  glass: { color: "#141c26", metal: 0.1, rough: 0.08, fill: "dark" },
18
28
  blue: { color: "#1d4f96", metal: 0.25, rough: 0.5, fill: "metal" },
29
+ foam: { color: "#a9592a", metal: 0, rough: 0.8, fill: "foam" },
30
+ yellow: { color: "#c9a227", metal: 0.1, rough: 0.6, fill: "metal" },
31
+ concrete: { color: "#8b8d8a", metal: 0, rough: 0.9, fill: "metal" },
32
+ ground: { color: "#4d5a41", metal: 0, rough: 1, fill: "dark" },
33
+ sand: { color: "#c3b58c", metal: 0, rough: 1, fill: "white" },
34
+ water: { color: "#27475e", metal: 0.1, rough: 0.4, fill: "dark" },
35
+ red: { color: "#a4322b", metal: 0.1, rough: 0.5, fill: "metal" },
19
36
  };
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const MERCURY_BUILDS: readonly StackBuild[];
@@ -0,0 +1,19 @@
1
+ // The Mercury spacecraft in a plain shape, for the line looks: its length and width are sourced, and its outline is measured from NASA's model at those scales. The painted look is NASA's model.
2
+ import { MERCURY_WIDE } from "../data/mercury.js";
3
+ const H = 3.3;
4
+ const R = (MERCURY_WIDE.value ?? 0) / 2;
5
+ const capsule = () => [
6
+ { kind: "lathe", material: "engine-metal", segs: 28, body: true, outline: true, profile: [[0.24, 0], [0.44, 0.12], [0.5, 0.42]], rings: [0.42] },
7
+ { kind: "lathe", material: "soot", segs: 36, body: true, outline: true, profile: [[0.5, 0.42], [R, 0.55], [R * 0.98, 0.6]] },
8
+ { kind: "lathe", material: "tile-plain", segs: 36, body: true, outline: true, profile: [[R * 0.98, 0.6], [0.35, 2.15]], welds: [1.1, 1.6] },
9
+ { kind: "lathe", material: "engine-metal", segs: 28, body: true, outline: true, profile: [[0.35, 2.15], [0.35, 2.75]], rings: [2.17, 2.73] },
10
+ { kind: "lathe", material: "engine-pale", segs: 28, body: true, outline: true, profile: [[0.35, 2.75], [0.29, 2.95], [0.26, H]], rings: [2.95] },
11
+ ];
12
+ export const MERCURY_BUILDS = [
13
+ {
14
+ rocket: "mercury",
15
+ variant: "friendship-7",
16
+ drawnFrom: "NASA's model for the painted look, with its colours judged from photographs. This package's plain shape for the two line looks, from the sourced length and width. No name or flag is drawn.",
17
+ parts: [{ slot: "capsule", kind: "capsule", name: "Mercury spacecraft, Friendship 7", height: H, diameter: R * 2, sourcedDiameter: MERCURY_WIDE, painted: { file: "mercury-capsule.glb", credit: "nasa-friendship-7" }, pieces: capsule }],
18
+ },
19
+ ];
@@ -0,0 +1,2 @@
1
+ import type { StackBuild } from "./stacks.ts";
2
+ export declare const NEW_GLENN_BUILDS: readonly StackBuild[];
@@ -0,0 +1,43 @@
1
+ // New Glenn from a table of numbers: the whole, the two stages and the width are sourced. The fairing is what the whole leaves; the legs, the strakes and the paint are judged from photographs.
2
+ import { deg } from "../framing.js";
3
+ import { engineRing, fairingShell, fins, floor, foldedLegs, skirt, tube } from "./kit.js";
4
+ import { merlin } from "./falcon.js";
5
+ const R = 3.5;
6
+ const FIRST = 57.5;
7
+ const SECOND = 23.4;
8
+ const FAIRING = 98 - FIRST - SECOND;
9
+ function firstStage() {
10
+ const foot = 3;
11
+ const skirtFrom = FIRST - 8;
12
+ return [
13
+ tube("white", R, foot, skirtFrom, { rings: [foot + 0.02, 17, skirtFrom - 0.02], welds: [10, 24, 31, 38] }),
14
+ floor(R, foot),
15
+ ...skirt("black", R, skirtFrom, FIRST, { rings: [FIRST - 0.02] }),
16
+ ...merlin([0, 0], 0, 0.95, 3.6),
17
+ ...engineRing(6, 2.3, 0, 0.95, 3.6, 30),
18
+ ...foldedLegs("black", R, [30, 90, 150, 210, 270, 330], foot + 0.4, foot + 11, 0.7),
19
+ ...fins("black", R, [90, 270], [[0, foot + 1], [1.3, foot + 1], [1.3, foot + 3.2], [0, foot + 7]], 0.25),
20
+ ...[45, 135, 225, 315].map((az) => ({ kind: "plate", material: "fin-dark", frame: { o: [R * Math.sin(deg(az)), skirtFrom + 2, R * Math.cos(deg(az))], u: [Math.sin(deg(az)), 0, Math.cos(deg(az))], v: [0, 1, 0], w: [Math.cos(deg(az)), 0, -Math.sin(deg(az))] }, outline: [[0, 0], [1, 0], [1, 2.6], [0, 2.6]], thickness: 1.9, plain: false })),
21
+ ];
22
+ }
23
+ function secondStage() {
24
+ return [
25
+ tube("white", R, 0, SECOND, { rings: [0.02, SECOND - 0.02], welds: [SECOND * 0.4, SECOND * 0.7] }),
26
+ floor(R, 0),
27
+ { kind: "lathe", material: "soot", segs: 30, under: true, only: "mesh", profile: [[0, 0.1], [R * 0.95, 0.1]] },
28
+ ...merlin([1.5, 0], -0.05, 0.9, 2.6).map((piece) => ({ ...piece, only: "mesh" })),
29
+ ...merlin([-1.5, 0], -0.05, 0.9, 2.6).map((piece) => ({ ...piece, only: "mesh" })),
30
+ ];
31
+ }
32
+ export const NEW_GLENN_BUILDS = [
33
+ {
34
+ rocket: "new-glenn",
35
+ variant: "7x2",
36
+ drawnFrom: "This package's code, from the sourced whole, stages and width; the fairing is what the whole leaves, and the legs, strakes and paint are judged from photographs. No licensed model is used, and no name or mark is drawn.",
37
+ parts: [
38
+ { slot: "first-stage", kind: "first-stage", name: "First stage, New Glenn", height: FIRST, diameter: R * 2, top: [FIRST, R * 2], pieces: firstStage },
39
+ { slot: "second-stage", kind: "second-stage", name: "Second stage, New Glenn", height: SECOND, diameter: R * 2, bottom: [0, R * 2], top: [SECOND, R * 2], pieces: secondStage },
40
+ { slot: "fairing", kind: "fairing", name: "Fairing, New Glenn", height: FAIRING, diameter: R * 2, bottom: [0, R * 2], pieces: () => fairingShell("white", R, FAIRING, FAIRING * 0.44, 1.35) },
41
+ ],
42
+ },
43
+ ];
@@ -13,6 +13,8 @@ export interface Lathe {
13
13
  material: MaterialName;
14
14
  profile: readonly (readonly [number, number])[];
15
15
  at?: readonly [number, number];
16
+ /** Its axis leans: this far along x and z for each metre up. */
17
+ lean?: readonly [number, number];
16
18
  segs: number;
17
19
  /** The part of the circle it covers at a height, as [from, to] radians; left out: all of it. */
18
20
  arc?: (y: number) => readonly [number, number];
@@ -81,7 +81,7 @@ function latheFaces(mesh, piece) {
81
81
  const a = a0 + ((a1 - a0) * j) / n;
82
82
  const sa = Math.sin(a);
83
83
  const ca = Math.cos(a);
84
- out.positions.push(cx + r * sa, y, cz + r * ca);
84
+ out.positions.push(cx + r * sa + (piece.lean?.[0] ?? 0) * y, y, cz + r * ca + (piece.lean?.[1] ?? 0) * y);
85
85
  out.normals.push(normal[0] * sa, normal[1], normal[0] * ca);
86
86
  // u: round the hull; v: height over a hundred metres, so one picture repeats the same on every part
87
87
  // an arc that starts on the far side of the windward line is shifted a half turn, so it stays between 0 and 1
@@ -115,7 +115,7 @@ export function ringPath(piece, y, lift = 0.012) {
115
115
  const path = [];
116
116
  for (let j = 0; j <= n; j++) {
117
117
  const a = a0 + ((a1 - a0) * j) / n;
118
- path.push([cx + r * Math.sin(a), y, cz + r * Math.cos(a)]);
118
+ path.push([cx + r * Math.sin(a) + (piece.lean?.[0] ?? 0) * y, y, cz + r * Math.cos(a) + (piece.lean?.[1] ?? 0) * y]);
119
119
  }
120
120
  return path;
121
121
  }
@@ -4,5 +4,27 @@ export interface PartEntry {
4
4
  record: PartRecord;
5
5
  pieces: () => Piece[];
6
6
  }
7
+ /**
8
+ * 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.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { PART_ENTRIES } from "@johnmorrisdotca/uchusen-rockets";
13
+ *
14
+ * console.log(PART_ENTRIES.length, PART_ENTRIES[0]?.record.name);
15
+ * ```
16
+ */
7
17
  export declare const PART_ENTRIES: readonly PartEntry[];
18
+ /**
19
+ * Finds a part by its id.
20
+ *
21
+ * @param id A part's id.
22
+ * @returns The part's entry, or undefined for an id that is not a part.
23
+ * @example
24
+ * ```ts
25
+ * import { partEntry } from "@johnmorrisdotca/uchusen-rockets";
26
+ *
27
+ * console.log(partEntry("raptor-vacuum")?.record.height, partEntry("nonsense"));
28
+ * ```
29
+ */
8
30
  export declare const partEntry: (id: string) => PartEntry | undefined;