@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.
- package/CHANGELOG.md +55 -5
- package/LICENSES/ODbL-1.0.txt +540 -0
- package/NOTICE.md +56 -6
- package/README.md +288 -16
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-apart.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-csm.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.thick.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.glb +0 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.painted.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.svg +1 -0
- package/dist/assets/apollo-soyuz-apollo-soyuz.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-apart.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-capsule.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2-trunk.thick.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.glb +0 -0
- package/dist/assets/dragon-cargo-dragon-2.painted.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.svg +1 -0
- package/dist/assets/dragon-cargo-dragon-2.thick.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.glb +0 -0
- package/dist/assets/dragon-crew-dragon-inside.painted.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.svg +1 -0
- package/dist/assets/dragon-crew-dragon-inside.thick.svg +1 -0
- package/dist/assets/dragon-dragon-1-apart.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-apart.svg +1 -1
- package/dist/assets/dragon-dragon-1-apart.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.svg +1 -1
- package/dist/assets/dragon-dragon-1-capsule.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.svg +1 -1
- package/dist/assets/dragon-dragon-1-trunk.thick.svg +1 -1
- package/dist/assets/dragon-dragon-1.painted.svg +1 -1
- package/dist/assets/dragon-dragon-1.svg +1 -1
- package/dist/assets/dragon-dragon-1.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.svg +1 -1
- package/dist/assets/dragon-dragon-2-apart.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.svg +1 -1
- package/dist/assets/dragon-dragon-2-capsule.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.svg +1 -1
- package/dist/assets/dragon-dragon-2-trunk.thick.svg +1 -1
- package/dist/assets/dragon-dragon-2.painted.svg +1 -1
- package/dist/assets/dragon-dragon-2.svg +1 -1
- package/dist/assets/dragon-dragon-2.thick.svg +1 -1
- package/dist/assets/droneship-asog-apart.painted.svg +1 -0
- package/dist/assets/droneship-asog-apart.svg +1 -0
- package/dist/assets/droneship-asog-apart.thick.svg +1 -0
- package/dist/assets/droneship-asog-deck.glb +0 -0
- package/dist/assets/droneship-asog-deck.painted.svg +1 -0
- package/dist/assets/droneship-asog-deck.svg +1 -0
- package/dist/assets/droneship-asog-deck.thick.svg +1 -0
- package/dist/assets/droneship-asog-landed.glb +0 -0
- package/dist/assets/droneship-asog-landed.painted.svg +1 -0
- package/dist/assets/droneship-asog-landed.svg +1 -0
- package/dist/assets/droneship-asog-landed.thick.svg +1 -0
- package/dist/assets/droneship-asog.glb +0 -0
- package/dist/assets/droneship-asog.painted.svg +1 -0
- package/dist/assets/droneship-asog.svg +1 -0
- package/dist/assets/droneship-asog.thick.svg +1 -0
- package/dist/assets/droneship-jrti-apart.painted.svg +1 -0
- package/dist/assets/droneship-jrti-apart.svg +1 -0
- package/dist/assets/droneship-jrti-apart.thick.svg +1 -0
- package/dist/assets/droneship-jrti-deck.glb +0 -0
- package/dist/assets/droneship-jrti-deck.painted.svg +1 -0
- package/dist/assets/droneship-jrti-deck.svg +1 -0
- package/dist/assets/droneship-jrti-deck.thick.svg +1 -0
- package/dist/assets/droneship-jrti-landed.glb +0 -0
- package/dist/assets/droneship-jrti-landed.painted.svg +1 -0
- package/dist/assets/droneship-jrti-landed.svg +1 -0
- package/dist/assets/droneship-jrti-landed.thick.svg +1 -0
- package/dist/assets/droneship-jrti.glb +0 -0
- package/dist/assets/droneship-jrti.painted.svg +1 -0
- package/dist/assets/droneship-jrti.svg +1 -0
- package/dist/assets/droneship-jrti.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.svg +1 -0
- package/dist/assets/droneship-ocisly-apart.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.glb +0 -0
- package/dist/assets/droneship-ocisly-deck.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.svg +1 -0
- package/dist/assets/droneship-ocisly-deck.thick.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.glb +0 -0
- package/dist/assets/droneship-ocisly-landed.painted.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.svg +1 -0
- package/dist/assets/droneship-ocisly-landed.thick.svg +1 -0
- package/dist/assets/droneship-ocisly.glb +0 -0
- package/dist/assets/droneship-ocisly.painted.svg +1 -0
- package/dist/assets/droneship-ocisly.svg +1 -0
- package/dist/assets/droneship-ocisly.thick.svg +1 -0
- package/dist/assets/electron-electron-adapter.glb +0 -0
- package/dist/assets/electron-electron-adapter.painted.svg +1 -0
- package/dist/assets/electron-electron-adapter.svg +1 -0
- package/dist/assets/electron-electron-adapter.thick.svg +1 -0
- package/dist/assets/electron-electron-apart.painted.svg +1 -0
- package/dist/assets/electron-electron-apart.svg +1 -0
- package/dist/assets/electron-electron-apart.thick.svg +1 -0
- package/dist/assets/electron-electron-fairing.glb +0 -0
- package/dist/assets/electron-electron-fairing.painted.svg +1 -0
- package/dist/assets/electron-electron-fairing.svg +1 -0
- package/dist/assets/electron-electron-fairing.thick.svg +1 -0
- package/dist/assets/electron-electron-first-stage.glb +0 -0
- package/dist/assets/electron-electron-first-stage.painted.svg +1 -0
- package/dist/assets/electron-electron-first-stage.svg +1 -0
- package/dist/assets/electron-electron-first-stage.thick.svg +1 -0
- package/dist/assets/electron-electron-second-stage.glb +0 -0
- package/dist/assets/electron-electron-second-stage.painted.svg +1 -0
- package/dist/assets/electron-electron-second-stage.svg +1 -0
- package/dist/assets/electron-electron-second-stage.thick.svg +1 -0
- package/dist/assets/electron-electron.glb +0 -0
- package/dist/assets/electron-electron.painted.svg +1 -0
- package/dist/assets/electron-electron.svg +1 -0
- package/dist/assets/electron-electron.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-apart.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-fairing.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-fairing.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-first-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1-second-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.glb +0 -0
- package/dist/assets/falcon-1-falcon-1.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.svg +1 -0
- package/dist/assets/falcon-1-falcon-1.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-apart.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-fairing.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-first-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e-second-stage.thick.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.glb +0 -0
- package/dist/assets/falcon-1-falcon-1e.painted.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.svg +1 -0
- package/dist/assets/falcon-1-falcon-1e.thick.svg +1 -0
- package/dist/assets/falcon-9-block-5-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-apart.svg +1 -1
- package/dist/assets/falcon-9-block-5-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-capsule.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2-trunk.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.svg +1 -1
- package/dist/assets/falcon-9-block-5-dragon-2.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.svg +1 -1
- package/dist/assets/falcon-9-block-5-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.svg +1 -1
- package/dist/assets/falcon-9-block-5-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-block-5.painted.svg +1 -1
- package/dist/assets/falcon-9-block-5.svg +1 -1
- package/dist/assets/falcon-9-block-5.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.svg +1 -1
- package/dist/assets/falcon-9-ft-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.svg +1 -1
- package/dist/assets/falcon-9-ft-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.svg +1 -1
- package/dist/assets/falcon-9-ft-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.svg +1 -1
- package/dist/assets/falcon-9-ft-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-ft.painted.svg +1 -1
- package/dist/assets/falcon-9-ft.svg +1 -1
- package/dist/assets/falcon-9-ft.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.svg +1 -1
- package/dist/assets/falcon-9-v1.0-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.svg +1 -1
- package/dist/assets/falcon-9-v1.0-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.0-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.0-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.0.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.0.svg +1 -1
- package/dist/assets/falcon-9-v1.0.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.svg +1 -1
- package/dist/assets/falcon-9-v1.1-apart.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.svg +1 -1
- package/dist/assets/falcon-9-v1.1-fairing.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.1-first-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.svg +1 -1
- package/dist/assets/falcon-9-v1.1-second-stage.thick.svg +1 -1
- package/dist/assets/falcon-9-v1.1.painted.svg +1 -1
- package/dist/assets/falcon-9-v1.1.svg +1 -1
- package/dist/assets/falcon-9-v1.1.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-apart.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-centre.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-left.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy-side-right.thick.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.painted.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.svg +1 -1
- package/dist/assets/falcon-heavy-falcon-heavy.thick.svg +1 -1
- package/dist/assets/gemini-gemini-adapter.glb +0 -0
- package/dist/assets/gemini-gemini-adapter.painted.svg +1 -0
- package/dist/assets/gemini-gemini-adapter.svg +1 -0
- package/dist/assets/gemini-gemini-adapter.thick.svg +1 -0
- package/dist/assets/gemini-gemini-apart.painted.svg +1 -0
- package/dist/assets/gemini-gemini-apart.svg +1 -0
- package/dist/assets/gemini-gemini-apart.thick.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.glb +0 -0
- package/dist/assets/gemini-gemini-capsule.painted.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.svg +1 -0
- package/dist/assets/gemini-gemini-capsule.thick.svg +1 -0
- package/dist/assets/gemini-gemini.glb +0 -0
- package/dist/assets/gemini-gemini.painted.svg +1 -0
- package/dist/assets/gemini-gemini.svg +1 -0
- package/dist/assets/gemini-gemini.thick.svg +1 -0
- package/dist/assets/grasshopper-grasshopper.painted.svg +1 -1
- package/dist/assets/grasshopper-grasshopper.svg +1 -1
- package/dist/assets/grasshopper-grasshopper.thick.svg +1 -1
- package/dist/assets/hubble-hubble.glb +0 -0
- package/dist/assets/hubble-hubble.painted.svg +1 -0
- package/dist/assets/hubble-hubble.svg +1 -0
- package/dist/assets/hubble-hubble.thick.svg +1 -0
- package/dist/assets/iss-iss.glb +0 -0
- package/dist/assets/iss-iss.painted.svg +1 -0
- package/dist/assets/iss-iss.svg +1 -0
- package/dist/assets/iss-iss.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.svg +1 -0
- package/dist/assets/landing-zone-lz-1-apart.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.glb +0 -0
- package/dist/assets/landing-zone-lz-1-landed.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.svg +1 -0
- package/dist/assets/landing-zone-lz-1-landed.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.glb +0 -0
- package/dist/assets/landing-zone-lz-1-pad.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.svg +1 -0
- package/dist/assets/landing-zone-lz-1-pad.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-1.glb +0 -0
- package/dist/assets/landing-zone-lz-1.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-1.svg +1 -0
- package/dist/assets/landing-zone-lz-1.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.svg +1 -0
- package/dist/assets/landing-zone-lz-4-apart.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.glb +0 -0
- package/dist/assets/landing-zone-lz-4-landed.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.svg +1 -0
- package/dist/assets/landing-zone-lz-4-landed.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.glb +0 -0
- package/dist/assets/landing-zone-lz-4-pad.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.svg +1 -0
- package/dist/assets/landing-zone-lz-4-pad.thick.svg +1 -0
- package/dist/assets/landing-zone-lz-4.glb +0 -0
- package/dist/assets/landing-zone-lz-4.painted.svg +1 -0
- package/dist/assets/landing-zone-lz-4.svg +1 -0
- package/dist/assets/landing-zone-lz-4.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.svg +1 -0
- package/dist/assets/launch-tower-catch-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.glb +0 -0
- package/dist/assets/launch-tower-catch-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.svg +1 -0
- package/dist/assets/launch-tower-catch-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.glb +0 -0
- package/dist/assets/launch-tower-catch-booster.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.svg +1 -0
- package/dist/assets/launch-tower-catch-booster.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.glb +0 -0
- package/dist/assets/launch-tower-catch-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.svg +1 -0
- package/dist/assets/launch-tower-catch-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.glb +0 -0
- package/dist/assets/launch-tower-catch-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.svg +1 -0
- package/dist/assets/launch-tower-catch-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-catch.glb +0 -0
- package/dist/assets/launch-tower-catch.painted.svg +1 -0
- package/dist/assets/launch-tower-catch.svg +1 -0
- package/dist/assets/launch-tower-catch.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.svg +1 -0
- package/dist/assets/launch-tower-stack-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.glb +0 -0
- package/dist/assets/launch-tower-stack-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.svg +1 -0
- package/dist/assets/launch-tower-stack-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.glb +0 -0
- package/dist/assets/launch-tower-stack-booster.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.svg +1 -0
- package/dist/assets/launch-tower-stack-booster.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.glb +0 -0
- package/dist/assets/launch-tower-stack-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.svg +1 -0
- package/dist/assets/launch-tower-stack-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.glb +0 -0
- package/dist/assets/launch-tower-stack-ship.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.svg +1 -0
- package/dist/assets/launch-tower-stack-ship.thick.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.glb +0 -0
- package/dist/assets/launch-tower-stack-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.svg +1 -0
- package/dist/assets/launch-tower-stack-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-stack.glb +0 -0
- package/dist/assets/launch-tower-stack.painted.svg +1 -0
- package/dist/assets/launch-tower-stack.svg +1 -0
- package/dist/assets/launch-tower-stack.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.svg +1 -0
- package/dist/assets/launch-tower-tower-apart.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.glb +0 -0
- package/dist/assets/launch-tower-tower-arms.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.svg +1 -0
- package/dist/assets/launch-tower-tower-arms.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.glb +0 -0
- package/dist/assets/launch-tower-tower-mount.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.svg +1 -0
- package/dist/assets/launch-tower-tower-mount.thick.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.glb +0 -0
- package/dist/assets/launch-tower-tower-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.svg +1 -0
- package/dist/assets/launch-tower-tower-tower.thick.svg +1 -0
- package/dist/assets/launch-tower-tower.glb +0 -0
- package/dist/assets/launch-tower-tower.painted.svg +1 -0
- package/dist/assets/launch-tower-tower.svg +1 -0
- package/dist/assets/launch-tower-tower.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-apart.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.glb +0 -0
- package/dist/assets/lunar-module-lunar-module-ascent.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-ascent.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.glb +0 -0
- package/dist/assets/lunar-module-lunar-module-descent.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.svg +1 -0
- package/dist/assets/lunar-module-lunar-module-descent.thick.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.glb +0 -0
- package/dist/assets/lunar-module-lunar-module.painted.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.svg +1 -0
- package/dist/assets/lunar-module-lunar-module.thick.svg +1 -0
- package/dist/assets/mercury-friendship-7.glb +0 -0
- package/dist/assets/mercury-friendship-7.painted.svg +1 -0
- package/dist/assets/mercury-friendship-7.svg +1 -0
- package/dist/assets/mercury-friendship-7.thick.svg +1 -0
- package/dist/assets/models/apollo-soyuz-csm.glb +0 -0
- package/dist/assets/models/apollo-soyuz-docking-module.glb +0 -0
- package/dist/assets/models/apollo-soyuz-soyuz.glb +0 -0
- package/dist/assets/models/gemini-adapter.glb +0 -0
- package/dist/assets/models/gemini-capsule.glb +0 -0
- package/dist/assets/models/hubble-telescope.glb +0 -0
- package/dist/assets/models/iss-station.glb +0 -0
- package/dist/assets/models/jupiter-c-vehicle.glb +0 -0
- package/dist/assets/models/lunar-module-ascent.glb +0 -0
- package/dist/assets/models/lunar-module-descent.glb +0 -0
- package/dist/assets/models/mercury-capsule.glb +0 -0
- package/dist/assets/models/space-shuttle-discovery-orbiter.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-external-tank.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-orbiter.glb +0 -0
- package/dist/assets/models/space-shuttle-stack-srb.glb +0 -0
- package/dist/assets/new-glenn-7x2-apart.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-apart.svg +1 -0
- package/dist/assets/new-glenn-7x2-apart.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.glb +0 -0
- package/dist/assets/new-glenn-7x2-fairing.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.svg +1 -0
- package/dist/assets/new-glenn-7x2-fairing.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.glb +0 -0
- package/dist/assets/new-glenn-7x2-first-stage.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.svg +1 -0
- package/dist/assets/new-glenn-7x2-first-stage.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.glb +0 -0
- package/dist/assets/new-glenn-7x2-second-stage.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.svg +1 -0
- package/dist/assets/new-glenn-7x2-second-stage.thick.svg +1 -0
- package/dist/assets/new-glenn-7x2.glb +0 -0
- package/dist/assets/new-glenn-7x2.painted.svg +1 -0
- package/dist/assets/new-glenn-7x2.svg +1 -0
- package/dist/assets/new-glenn-7x2.thick.svg +1 -0
- package/dist/assets/parts/flap-aft.painted.svg +1 -1
- package/dist/assets/parts/flap-aft.svg +1 -1
- package/dist/assets/parts/flap-aft.thick.svg +1 -1
- package/dist/assets/parts/flap-forward.painted.svg +1 -1
- package/dist/assets/parts/flap-forward.svg +1 -1
- package/dist/assets/parts/flap-forward.thick.svg +1 -1
- package/dist/assets/parts/grid-fin-four.painted.svg +1 -1
- package/dist/assets/parts/grid-fin-four.svg +1 -1
- package/dist/assets/parts/grid-fin-four.thick.svg +1 -1
- package/dist/assets/parts/grid-fin-three.painted.svg +1 -1
- package/dist/assets/parts/grid-fin-three.svg +1 -1
- package/dist/assets/parts/grid-fin-three.thick.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.painted.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.svg +1 -1
- package/dist/assets/parts/merlin-sea-level.thick.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.painted.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.svg +1 -1
- package/dist/assets/parts/raptor-sea-level.thick.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.painted.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.svg +1 -1
- package/dist/assets/parts/raptor-vacuum.thick.svg +1 -1
- package/dist/assets/saturn-v-saturn-v-adapter.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-adapter.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-adapter.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-adapter.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-apart.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-capsule.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-capsule.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-escape-tower.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-first-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-second-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-service-module.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-service-module.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.glb +0 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.svg +1 -0
- package/dist/assets/saturn-v-saturn-v-third-stage.thick.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.glb +0 -0
- package/dist/assets/saturn-v-saturn-v.painted.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.svg +1 -0
- package/dist/assets/saturn-v-saturn-v.thick.svg +1 -0
- package/dist/assets/sls-block-1-apart.painted.svg +1 -0
- package/dist/assets/sls-block-1-apart.svg +1 -0
- package/dist/assets/sls-block-1-apart.thick.svg +1 -0
- package/dist/assets/sls-block-1-capsule.glb +0 -0
- package/dist/assets/sls-block-1-capsule.painted.svg +1 -0
- package/dist/assets/sls-block-1-capsule.svg +1 -0
- package/dist/assets/sls-block-1-capsule.thick.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.glb +0 -0
- package/dist/assets/sls-block-1-escape-tower.painted.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.svg +1 -0
- package/dist/assets/sls-block-1-escape-tower.thick.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.glb +0 -0
- package/dist/assets/sls-block-1-first-stage.painted.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.svg +1 -0
- package/dist/assets/sls-block-1-first-stage.thick.svg +1 -0
- package/dist/assets/sls-block-1-service-module.glb +0 -0
- package/dist/assets/sls-block-1-service-module.painted.svg +1 -0
- package/dist/assets/sls-block-1-service-module.svg +1 -0
- package/dist/assets/sls-block-1-service-module.thick.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.glb +0 -0
- package/dist/assets/sls-block-1-srb-left.painted.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.svg +1 -0
- package/dist/assets/sls-block-1-srb-left.thick.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.glb +0 -0
- package/dist/assets/sls-block-1-srb-right.painted.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.svg +1 -0
- package/dist/assets/sls-block-1-srb-right.thick.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.glb +0 -0
- package/dist/assets/sls-block-1-upper-stage.painted.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.svg +1 -0
- package/dist/assets/sls-block-1-upper-stage.thick.svg +1 -0
- package/dist/assets/sls-block-1.glb +0 -0
- package/dist/assets/sls-block-1.painted.svg +1 -0
- package/dist/assets/sls-block-1.svg +1 -0
- package/dist/assets/sls-block-1.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-apart.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-1.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-2.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-3.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-booster-4.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-fairing.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-fairing.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-first-stage.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.glb +0 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.svg +1 -0
- package/dist/assets/soyuz-soyuz-2-third-stage.thick.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.glb +0 -0
- package/dist/assets/soyuz-soyuz-2.painted.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.svg +1 -0
- package/dist/assets/soyuz-soyuz-2.thick.svg +1 -0
- package/dist/assets/space-shuttle-discovery.glb +0 -0
- package/dist/assets/space-shuttle-discovery.painted.svg +1 -0
- package/dist/assets/space-shuttle-discovery.svg +1 -0
- package/dist/assets/space-shuttle-discovery.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.svg +1 -0
- package/dist/assets/space-shuttle-stack-apart.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.glb +0 -0
- package/dist/assets/space-shuttle-stack-external-tank.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.svg +1 -0
- package/dist/assets/space-shuttle-stack-external-tank.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.glb +0 -0
- package/dist/assets/space-shuttle-stack-orbiter.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.svg +1 -0
- package/dist/assets/space-shuttle-stack-orbiter.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.glb +0 -0
- package/dist/assets/space-shuttle-stack-srb-left.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-left.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.glb +0 -0
- package/dist/assets/space-shuttle-stack-srb-right.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.svg +1 -0
- package/dist/assets/space-shuttle-stack-srb-right.thick.svg +1 -0
- package/dist/assets/space-shuttle-stack.glb +0 -0
- package/dist/assets/space-shuttle-stack.painted.svg +1 -0
- package/dist/assets/space-shuttle-stack.svg +1 -0
- package/dist/assets/space-shuttle-stack.thick.svg +1 -0
- package/dist/assets/starbase-build-site-apart.painted.svg +1 -0
- package/dist/assets/starbase-build-site-apart.svg +1 -0
- package/dist/assets/starbase-build-site-apart.thick.svg +1 -0
- package/dist/assets/starbase-build-site-garden.glb +0 -0
- package/dist/assets/starbase-build-site-garden.painted.svg +1 -0
- package/dist/assets/starbase-build-site-garden.svg +1 -0
- package/dist/assets/starbase-build-site-garden.thick.svg +1 -0
- package/dist/assets/starbase-build-site-ground.glb +0 -0
- package/dist/assets/starbase-build-site-ground.painted.svg +1 -0
- package/dist/assets/starbase-build-site-ground.svg +1 -0
- package/dist/assets/starbase-build-site-ground.thick.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.glb +0 -0
- package/dist/assets/starbase-build-site-mega-bays.painted.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.svg +1 -0
- package/dist/assets/starbase-build-site-mega-bays.thick.svg +1 -0
- package/dist/assets/starbase-build-site-sign.glb +0 -0
- package/dist/assets/starbase-build-site-sign.painted.svg +1 -0
- package/dist/assets/starbase-build-site-sign.svg +1 -0
- package/dist/assets/starbase-build-site-sign.thick.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.glb +0 -0
- package/dist/assets/starbase-build-site-starfactory.painted.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.svg +1 -0
- package/dist/assets/starbase-build-site-starfactory.thick.svg +1 -0
- package/dist/assets/starbase-build-site.glb +0 -0
- package/dist/assets/starbase-build-site.painted.svg +1 -0
- package/dist/assets/starbase-build-site.svg +1 -0
- package/dist/assets/starbase-build-site.thick.svg +1 -0
- package/dist/assets/starbase-city-apart.painted.svg +1 -0
- package/dist/assets/starbase-city-apart.svg +1 -0
- package/dist/assets/starbase-city-apart.thick.svg +1 -0
- package/dist/assets/starbase-city-garden.glb +0 -0
- package/dist/assets/starbase-city-garden.painted.svg +1 -0
- package/dist/assets/starbase-city-garden.svg +1 -0
- package/dist/assets/starbase-city-garden.thick.svg +1 -0
- package/dist/assets/starbase-city-ground.glb +0 -0
- package/dist/assets/starbase-city-ground.painted.svg +1 -0
- package/dist/assets/starbase-city-ground.svg +1 -0
- package/dist/assets/starbase-city-ground.thick.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.glb +0 -0
- package/dist/assets/starbase-city-mega-bays.painted.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.svg +1 -0
- package/dist/assets/starbase-city-mega-bays.thick.svg +1 -0
- package/dist/assets/starbase-city-on-pad.glb +0 -0
- package/dist/assets/starbase-city-on-pad.painted.svg +1 -0
- package/dist/assets/starbase-city-on-pad.svg +1 -0
- package/dist/assets/starbase-city-on-pad.thick.svg +1 -0
- package/dist/assets/starbase-city-pads.glb +0 -0
- package/dist/assets/starbase-city-pads.painted.svg +1 -0
- package/dist/assets/starbase-city-pads.svg +1 -0
- package/dist/assets/starbase-city-pads.thick.svg +1 -0
- package/dist/assets/starbase-city-sign.glb +0 -0
- package/dist/assets/starbase-city-sign.painted.svg +1 -0
- package/dist/assets/starbase-city-sign.svg +1 -0
- package/dist/assets/starbase-city-sign.thick.svg +1 -0
- package/dist/assets/starbase-city-starfactory.glb +0 -0
- package/dist/assets/starbase-city-starfactory.painted.svg +1 -0
- package/dist/assets/starbase-city-starfactory.svg +1 -0
- package/dist/assets/starbase-city-starfactory.thick.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.glb +0 -0
- package/dist/assets/starbase-city-tank-farm.painted.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.svg +1 -0
- package/dist/assets/starbase-city-tank-farm.thick.svg +1 -0
- package/dist/assets/starbase-city-village.glb +0 -0
- package/dist/assets/starbase-city-village.painted.svg +1 -0
- package/dist/assets/starbase-city-village.svg +1 -0
- package/dist/assets/starbase-city-village.thick.svg +1 -0
- package/dist/assets/starbase-city.glb +0 -0
- package/dist/assets/starbase-city.painted.svg +1 -0
- package/dist/assets/starbase-city.svg +1 -0
- package/dist/assets/starbase-city.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.svg +1 -0
- package/dist/assets/starbase-launch-site-apart.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.glb +0 -0
- package/dist/assets/starbase-launch-site-ground.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.svg +1 -0
- package/dist/assets/starbase-launch-site-ground.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.glb +0 -0
- package/dist/assets/starbase-launch-site-on-pad.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.svg +1 -0
- package/dist/assets/starbase-launch-site-on-pad.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.glb +0 -0
- package/dist/assets/starbase-launch-site-pads.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.svg +1 -0
- package/dist/assets/starbase-launch-site-pads.thick.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.glb +0 -0
- package/dist/assets/starbase-launch-site-tank-farm.painted.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.svg +1 -0
- package/dist/assets/starbase-launch-site-tank-farm.thick.svg +1 -0
- package/dist/assets/starbase-launch-site.glb +0 -0
- package/dist/assets/starbase-launch-site.painted.svg +1 -0
- package/dist/assets/starbase-launch-site.svg +1 -0
- package/dist/assets/starbase-launch-site.thick.svg +1 -0
- package/dist/assets/starship-2019.painted.svg +1 -1
- package/dist/assets/starship-2019.svg +1 -1
- package/dist/assets/starship-2019.thick.svg +1 -1
- package/dist/assets/starship-v1-apart.painted.svg +1 -1
- package/dist/assets/starship-v1-apart.svg +1 -1
- package/dist/assets/starship-v1-apart.thick.svg +1 -1
- package/dist/assets/starship-v1-booster.painted.svg +1 -1
- package/dist/assets/starship-v1-booster.svg +1 -1
- package/dist/assets/starship-v1-booster.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.svg +1 -1
- package/dist/assets/starship-v1-flight1-apart.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.svg +1 -1
- package/dist/assets/starship-v1-flight1-booster.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.svg +1 -1
- package/dist/assets/starship-v1-flight1-ship.thick.svg +1 -1
- package/dist/assets/starship-v1-flight1.painted.svg +1 -1
- package/dist/assets/starship-v1-flight1.svg +1 -1
- package/dist/assets/starship-v1-flight1.thick.svg +1 -1
- package/dist/assets/starship-v1-ship.painted.svg +1 -1
- package/dist/assets/starship-v1-ship.svg +1 -1
- package/dist/assets/starship-v1-ship.thick.svg +1 -1
- package/dist/assets/starship-v1.painted.svg +1 -1
- package/dist/assets/starship-v1.svg +1 -1
- package/dist/assets/starship-v1.thick.svg +1 -1
- package/dist/assets/starship-v2-apart.painted.svg +1 -1
- package/dist/assets/starship-v2-apart.svg +1 -1
- package/dist/assets/starship-v2-apart.thick.svg +1 -1
- package/dist/assets/starship-v2-booster.painted.svg +1 -1
- package/dist/assets/starship-v2-booster.svg +1 -1
- package/dist/assets/starship-v2-booster.thick.svg +1 -1
- package/dist/assets/starship-v2-ship.painted.svg +1 -1
- package/dist/assets/starship-v2-ship.svg +1 -1
- package/dist/assets/starship-v2-ship.thick.svg +1 -1
- package/dist/assets/starship-v2.painted.svg +1 -1
- package/dist/assets/starship-v2.svg +1 -1
- package/dist/assets/starship-v2.thick.svg +1 -1
- package/dist/assets/starship-v3-apart.painted.svg +1 -1
- package/dist/assets/starship-v3-apart.svg +1 -1
- package/dist/assets/starship-v3-apart.thick.svg +1 -1
- package/dist/assets/starship-v3-booster.painted.svg +1 -1
- package/dist/assets/starship-v3-booster.svg +1 -1
- package/dist/assets/starship-v3-booster.thick.svg +1 -1
- package/dist/assets/starship-v3-ship.painted.svg +1 -1
- package/dist/assets/starship-v3-ship.svg +1 -1
- package/dist/assets/starship-v3-ship.thick.svg +1 -1
- package/dist/assets/starship-v3.painted.svg +1 -1
- package/dist/assets/starship-v3.svg +1 -1
- package/dist/assets/starship-v3.thick.svg +1 -1
- package/dist/assets/starship-v4-apart.painted.svg +1 -1
- package/dist/assets/starship-v4-apart.svg +1 -1
- package/dist/assets/starship-v4-apart.thick.svg +1 -1
- package/dist/assets/starship-v4-booster.painted.svg +1 -1
- package/dist/assets/starship-v4-booster.svg +1 -1
- package/dist/assets/starship-v4-booster.thick.svg +1 -1
- package/dist/assets/starship-v4-ship.painted.svg +1 -1
- package/dist/assets/starship-v4-ship.svg +1 -1
- package/dist/assets/starship-v4-ship.thick.svg +1 -1
- package/dist/assets/starship-v4.painted.svg +1 -1
- package/dist/assets/starship-v4.svg +1 -1
- package/dist/assets/starship-v4.thick.svg +1 -1
- package/dist/attrs.d.ts +93 -0
- package/dist/attrs.js +86 -0
- package/dist/build/glb.d.ts +25 -0
- package/dist/build/glb.js +14 -0
- package/dist/build/index.d.ts +96 -6
- package/dist/build/index.js +83 -8
- package/dist/build/lineup.d.ts +56 -2
- package/dist/build/lineup.js +37 -6
- package/dist/builder.d.ts +68 -0
- package/dist/builder.js +116 -0
- package/dist/crossfade.d.ts +44 -2
- package/dist/crossfade.js +44 -2
- package/dist/data/apollosoyuz.d.ts +6 -0
- package/dist/data/apollosoyuz.js +28 -0
- package/dist/data/credits.d.ts +63 -2
- package/dist/data/credits.js +52 -2
- package/dist/data/dragon.js +35 -0
- package/dist/data/electron.d.ts +2 -0
- package/dist/data/electron.js +23 -0
- package/dist/data/falcon.js +2 -2
- package/dist/data/falcon1.d.ts +4 -0
- package/dist/data/falcon1.js +51 -0
- package/dist/data/flight-log.d.ts +50 -0
- package/dist/data/flight-log.js +44 -0
- package/dist/data/flights.d.ts +101 -0
- package/dist/data/flights.js +187 -0
- package/dist/data/gemini.d.ts +3 -0
- package/dist/data/gemini.js +22 -0
- package/dist/data/hubble.d.ts +3 -0
- package/dist/data/hubble.js +23 -0
- package/dist/data/iss.d.ts +5 -0
- package/dist/data/iss.js +25 -0
- package/dist/data/jupiterc.d.ts +3 -0
- package/dist/data/jupiterc.js +22 -0
- package/dist/data/landing.d.ts +3 -0
- package/dist/data/landing.js +51 -0
- package/dist/data/lunarmodule.d.ts +4 -0
- package/dist/data/lunarmodule.js +27 -0
- package/dist/data/makers.d.ts +37 -0
- package/dist/data/makers.js +39 -0
- package/dist/data/mercury.d.ts +3 -0
- package/dist/data/mercury.js +22 -0
- package/dist/data/newglenn.d.ts +2 -0
- package/dist/data/newglenn.js +23 -0
- package/dist/data/saturn.d.ts +2 -0
- package/dist/data/saturn.js +32 -0
- package/dist/data/shuttle.d.ts +5 -0
- package/dist/data/shuttle.js +52 -0
- package/dist/data/sls.d.ts +4 -0
- package/dist/data/sls.js +36 -0
- package/dist/data/sources.d.ts +380 -2
- package/dist/data/sources.js +55 -1
- package/dist/data/soyuz.d.ts +3 -0
- package/dist/data/soyuz.js +33 -0
- package/dist/data/starbase.d.ts +2 -0
- package/dist/data/starbase.js +30 -0
- package/dist/data/tower.d.ts +3 -0
- package/dist/data/tower.js +26 -0
- package/dist/data/types.d.ts +88 -2
- package/dist/data/types.js +26 -1
- package/dist/draw/plume.d.ts +8 -0
- package/dist/draw/plume.js +71 -0
- package/dist/draw/svg.d.ts +1 -1
- package/dist/draw/svg.js +3 -3
- package/dist/element/ground.d.ts +15 -0
- package/dist/element/ground.js +95 -0
- package/dist/element/plumes.d.ts +38 -0
- package/dist/element/plumes.js +208 -0
- package/dist/element/scene.d.ts +39 -5
- package/dist/element/scene.js +250 -7
- package/dist/element.d.ts +111 -4
- package/dist/element.js +251 -16
- package/dist/embed.d.ts +131 -0
- package/dist/embed.js +218 -0
- package/dist/engines.d.ts +126 -0
- package/dist/engines.js +150 -0
- package/dist/fit.d.ts +70 -0
- package/dist/fit.js +17 -3
- package/dist/flight.d.ts +192 -0
- package/dist/flight.js +237 -0
- package/dist/flightbar.d.ts +34 -0
- package/dist/flightbar.js +188 -0
- package/dist/framing.d.ts +182 -8
- package/dist/framing.js +127 -6
- package/dist/index.d.ts +17 -0
- package/dist/index.js +9 -0
- package/dist/layout.d.ts +65 -1
- package/dist/layout.js +44 -2
- package/dist/looks.d.ts +65 -2
- package/dist/looks.js +44 -1
- package/dist/model/apollosoyuz.d.ts +2 -0
- package/dist/model/apollosoyuz.js +46 -0
- package/dist/model/dragoninside.d.ts +2 -0
- package/dist/model/dragoninside.js +67 -0
- package/dist/model/electron.d.ts +2 -0
- package/dist/model/electron.js +35 -0
- package/dist/model/falcon.d.ts +2 -0
- package/dist/model/falcon.js +4 -0
- package/dist/model/falcon1.d.ts +2 -0
- package/dist/model/falcon1.js +53 -0
- package/dist/model/gemini.d.ts +2 -0
- package/dist/model/gemini.js +28 -0
- package/dist/model/hubble.d.ts +2 -0
- package/dist/model/hubble.js +28 -0
- package/dist/model/iss.d.ts +2 -0
- package/dist/model/iss.js +32 -0
- package/dist/model/jupiterc.d.ts +2 -0
- package/dist/model/jupiterc.js +24 -0
- package/dist/model/kit.d.ts +36 -0
- package/dist/model/kit.js +95 -0
- package/dist/model/landing.d.ts +3 -0
- package/dist/model/landing.js +81 -0
- package/dist/model/lunarmodule.d.ts +2 -0
- package/dist/model/lunarmodule.js +43 -0
- package/dist/model/materials.d.ts +74 -0
- package/dist/model/materials.js +17 -0
- package/dist/model/mercury.d.ts +2 -0
- package/dist/model/mercury.js +19 -0
- package/dist/model/newglenn.d.ts +2 -0
- package/dist/model/newglenn.js +43 -0
- package/dist/model/pieces.d.ts +2 -0
- package/dist/model/pieces.js +2 -2
- package/dist/model/registry.d.ts +22 -0
- package/dist/model/registry.js +85 -0
- package/dist/model/saturn.d.ts +2 -0
- package/dist/model/saturn.js +122 -0
- package/dist/model/shuttle.d.ts +2 -0
- package/dist/model/shuttle.js +111 -0
- package/dist/model/sls.d.ts +2 -0
- package/dist/model/sls.js +83 -0
- package/dist/model/soyuz.d.ts +2 -0
- package/dist/model/soyuz.js +75 -0
- package/dist/model/stacks.d.ts +39 -0
- package/dist/model/stacks.js +1 -0
- package/dist/model/starbase.d.ts +2 -0
- package/dist/model/starbase.js +108 -0
- package/dist/model/tower.d.ts +6 -0
- package/dist/model/tower.js +89 -0
- package/dist/parts.d.ts +36 -3
- package/dist/pixels.d.ts +44 -4
- package/dist/pixels.js +44 -4
- package/dist/react.d.ts +38 -6
- package/dist/react.js +13 -0
- package/dist/rockets.d.ts +96 -3
- package/dist/rockets.js +136 -9
- package/dist/spin.d.ts +66 -0
- package/dist/spin.js +44 -0
- package/dist/tilt.d.ts +48 -4
- package/dist/tilt.js +26 -4
- package/package.json +99 -19
package/dist/model/registry.js
CHANGED
|
@@ -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,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,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,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,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 {};
|