@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/layout.d.ts
CHANGED
|
@@ -1,16 +1,80 @@
|
|
|
1
1
|
import type { Vec3 } from "./framing.ts";
|
|
2
2
|
import type { PartRecord } from "./parts.ts";
|
|
3
|
+
/**
|
|
4
|
+
* What to show of a rocket: `together`, `apart`, or the slot of one part, such as `booster`.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import type { ShowName } from "@johnmorrisdotca/uchusen-rockets";
|
|
9
|
+
*
|
|
10
|
+
* const shows: ShowName[] = ["together", "apart", "booster"];
|
|
11
|
+
* console.log(shows);
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
3
14
|
export type ShowName = "together" | "apart" | (string & {});
|
|
4
15
|
/** A part's own width from the axis, for keeping apart parts clear of each other. */
|
|
5
16
|
export type WidthOf = (part: PartRecord) => number;
|
|
17
|
+
/**
|
|
18
|
+
* Where one part stands for a choice of what to show: its slot, its position in metres and whether it is shown at all.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { placesFor, type Place } from "@johnmorrisdotca/uchusen-rockets";
|
|
23
|
+
*
|
|
24
|
+
* const places: Place[] = placesFor([], "together", () => 1);
|
|
25
|
+
* console.log(places.length);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
6
28
|
export interface Place {
|
|
7
29
|
slot: string;
|
|
8
30
|
at: Vec3;
|
|
9
31
|
shown: boolean;
|
|
10
32
|
}
|
|
11
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* The first choices of `show`, then one per slot.
|
|
35
|
+
*
|
|
36
|
+
* @param slots A variant's slots, from the bottom.
|
|
37
|
+
* @returns What can be shown: together and apart first when there is more than one slot, then one for each slot.
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { showsOf, variantOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
41
|
+
*
|
|
42
|
+
* console.log(showsOf(variantOf("falcon-9", "block-5")?.slots ?? []));
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
12
45
|
export declare const showsOf: (slots: readonly string[]) => string[];
|
|
46
|
+
/**
|
|
47
|
+
* A value from outside as something that can be shown.
|
|
48
|
+
*
|
|
49
|
+
* @param value Anything.
|
|
50
|
+
* @param slots The variant's slots.
|
|
51
|
+
* @returns The value if it can be shown, and the first choice (together) for anything else.
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* import { cleanShow, variantOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
55
|
+
*
|
|
56
|
+
* const slots = variantOf("falcon-9", "block-5")?.slots ?? [];
|
|
57
|
+
* console.log(cleanShow("first-stage", slots), cleanShow("nonsense", slots));
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
13
60
|
export declare function cleanShow(value: unknown, slots: readonly string[]): string;
|
|
61
|
+
/**
|
|
62
|
+
* Where each part stands: up the stack joint to joint, or spread apart on a diagonal of the ground, or one part alone.
|
|
63
|
+
*
|
|
64
|
+
* @param parts The parts with their slots, from the bottom.
|
|
65
|
+
* @param show What to show.
|
|
66
|
+
* @param widthOf The width of a part, for spacing when they are apart.
|
|
67
|
+
* @returns A place for each part.
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { build } from "@johnmorrisdotca/uchusen-rockets/build";
|
|
71
|
+
* import { placesFor } from "@johnmorrisdotca/uchusen-rockets";
|
|
72
|
+
*
|
|
73
|
+
* const rocket = build({ rocket: "falcon-9", variant: "block-5" });
|
|
74
|
+
* const parts = rocket.parts.map((part) => ({ slot: part.slot, part: part.record }));
|
|
75
|
+
* console.log(placesFor(parts, "apart", (part) => part.diameter / 2).map((place) => place.slot));
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
14
78
|
export declare function placesFor(parts: readonly {
|
|
15
79
|
slot: string;
|
|
16
80
|
part: PartRecord;
|
package/dist/layout.js
CHANGED
|
@@ -1,11 +1,53 @@
|
|
|
1
1
|
/** Seen square-on to the diagonal the parts take the whole distance; from the front or the side, seven tenths of it. */
|
|
2
2
|
const APART_SPREAD = 1.45;
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The first choices of `show`, then one per slot.
|
|
5
|
+
*
|
|
6
|
+
* @param slots A variant's slots, from the bottom.
|
|
7
|
+
* @returns What can be shown: together and apart first when there is more than one slot, then one for each slot.
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { showsOf, variantOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
11
|
+
*
|
|
12
|
+
* console.log(showsOf(variantOf("falcon-9", "block-5")?.slots ?? []));
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
4
15
|
export const showsOf = (slots) => (slots.length > 1 ? ["together", "apart", ...slots] : [...slots]);
|
|
16
|
+
/**
|
|
17
|
+
* A value from outside as something that can be shown.
|
|
18
|
+
*
|
|
19
|
+
* @param value Anything.
|
|
20
|
+
* @param slots The variant's slots.
|
|
21
|
+
* @returns The value if it can be shown, and the first choice (together) for anything else.
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* import { cleanShow, variantOf } from "@johnmorrisdotca/uchusen-rockets";
|
|
25
|
+
*
|
|
26
|
+
* const slots = variantOf("falcon-9", "block-5")?.slots ?? [];
|
|
27
|
+
* console.log(cleanShow("first-stage", slots), cleanShow("nonsense", slots));
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
5
30
|
export function cleanShow(value, slots) {
|
|
6
31
|
const shows = showsOf(slots);
|
|
7
32
|
return typeof value === "string" && shows.includes(value) ? value : shows[0];
|
|
8
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Where each part stands: up the stack joint to joint, or spread apart on a diagonal of the ground, or one part alone.
|
|
36
|
+
*
|
|
37
|
+
* @param parts The parts with their slots, from the bottom.
|
|
38
|
+
* @param show What to show.
|
|
39
|
+
* @param widthOf The width of a part, for spacing when they are apart.
|
|
40
|
+
* @returns A place for each part.
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* import { build } from "@johnmorrisdotca/uchusen-rockets/build";
|
|
44
|
+
* import { placesFor } from "@johnmorrisdotca/uchusen-rockets";
|
|
45
|
+
*
|
|
46
|
+
* const rocket = build({ rocket: "falcon-9", variant: "block-5" });
|
|
47
|
+
* const parts = rocket.parts.map((part) => ({ slot: part.slot, part: part.record }));
|
|
48
|
+
* console.log(placesFor(parts, "apart", (part) => part.diameter / 2).map((place) => place.slot));
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
9
51
|
export function placesFor(parts, show, widthOf) {
|
|
10
52
|
if (show === "apart") {
|
|
11
53
|
const widths = parts.map(({ part }) => widthOf(part));
|
|
@@ -24,7 +66,7 @@ export function placesFor(parts, show, widthOf) {
|
|
|
24
66
|
return parts.map(({ slot, part }) => {
|
|
25
67
|
const together = show === "together";
|
|
26
68
|
if (part.strapOn)
|
|
27
|
-
return { slot, at: [together ? part.strapOn.x : 0, 0, together ? part.strapOn.z : 0], shown: together || show === slot };
|
|
69
|
+
return { slot, at: [together ? part.strapOn.x : 0, together ? (part.strapOn.y ?? 0) : 0, together ? part.strapOn.z : 0], shown: together || show === slot };
|
|
28
70
|
const base = y - (part.joints.bottom?.y ?? 0);
|
|
29
71
|
const at = [0, together ? base : 0, 0];
|
|
30
72
|
y = base + (part.joints.top ? part.joints.top.y : part.height);
|
package/dist/looks.d.ts
CHANGED
|
@@ -1,6 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The names of the looks: `line`, `thick` and `painted`.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { LOOK_NAMES } from "@johnmorrisdotca/uchusen-rockets";
|
|
7
|
+
*
|
|
8
|
+
* console.log(LOOK_NAMES.join(", "));
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
1
11
|
export declare const LOOK_NAMES: readonly ["line", "thick", "painted"];
|
|
12
|
+
/**
|
|
13
|
+
* The name of one look in `LOOK_NAMES`.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import type { LookName } from "@johnmorrisdotca/uchusen-rockets";
|
|
18
|
+
*
|
|
19
|
+
* const look: LookName = "thick";
|
|
20
|
+
* console.log(look);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
2
23
|
export type LookName = (typeof LOOK_NAMES)[number];
|
|
24
|
+
/**
|
|
25
|
+
* The look used when none is named or the name is not a look: `line`.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* import { DEFAULT_LOOK } from "@johnmorrisdotca/uchusen-rockets";
|
|
30
|
+
*
|
|
31
|
+
* console.log(DEFAULT_LOOK);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
3
34
|
export declare const DEFAULT_LOOK: LookName;
|
|
35
|
+
/**
|
|
36
|
+
* What a look changes: the colour and width of its lines in a 3D view and in a drawing, how much of the weld lines shows, the fills by material group and whether there is a halo. A look never changes a shape.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { LOOKS, type Look } from "@johnmorrisdotca/uchusen-rockets";
|
|
41
|
+
*
|
|
42
|
+
* const thick: Look = LOOKS.thick;
|
|
43
|
+
* console.log(thick.line, thick.outline);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
4
46
|
export interface Look {
|
|
5
47
|
/** The colour of its lines. */
|
|
6
48
|
line: string;
|
|
@@ -19,7 +61,28 @@ export interface Look {
|
|
|
19
61
|
/** The soft light behind the rocket in a drawing. */
|
|
20
62
|
halo: boolean;
|
|
21
63
|
}
|
|
22
|
-
export type FillName = "hull" | "white" | "tile" | "metal" | "dark" | "bell";
|
|
64
|
+
export type FillName = "hull" | "white" | "tile" | "metal" | "dark" | "bell" | "foam";
|
|
65
|
+
/**
|
|
66
|
+
* Every look, by name. A look is one entry of this table.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { LOOKS } from "@johnmorrisdotca/uchusen-rockets";
|
|
71
|
+
*
|
|
72
|
+
* console.log(Object.keys(LOOKS));
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
23
75
|
export declare const LOOKS: Readonly<Record<LookName, Look>>;
|
|
24
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* A value from outside as a look's name: the default for anything else.
|
|
78
|
+
*
|
|
79
|
+
* @param value Anything.
|
|
80
|
+
* @returns The look's name if it is one, and the default (`line`) for anything else.
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* import { cleanLook } from "@johnmorrisdotca/uchusen-rockets";
|
|
84
|
+
*
|
|
85
|
+
* console.log(cleanLook("painted"), cleanLook("shiny"));
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
25
88
|
export declare const cleanLook: (value: unknown) => LookName;
|
package/dist/looks.js
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
// The three looks, each one table entry: the line drawing, the thick lines, and the painted rocket. A look changes lines, colours and fills, never a shape. Pure.
|
|
2
|
+
/**
|
|
3
|
+
* The names of the looks: `line`, `thick` and `painted`.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { LOOK_NAMES } from "@johnmorrisdotca/uchusen-rockets";
|
|
8
|
+
*
|
|
9
|
+
* console.log(LOOK_NAMES.join(", "));
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
2
12
|
export const LOOK_NAMES = ["line", "thick", "painted"];
|
|
13
|
+
/**
|
|
14
|
+
* The look used when none is named or the name is not a look: `line`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { DEFAULT_LOOK } from "@johnmorrisdotca/uchusen-rockets";
|
|
19
|
+
*
|
|
20
|
+
* console.log(DEFAULT_LOOK);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
3
23
|
export const DEFAULT_LOOK = "line";
|
|
4
24
|
const NIGHT = {
|
|
5
25
|
hull: ["#0c1422", "#2a3850", "#0c1422"],
|
|
@@ -8,7 +28,18 @@ const NIGHT = {
|
|
|
8
28
|
metal: ["#16202f", "#3a475c", "#16202f"],
|
|
9
29
|
dark: ["#070b12", "#121a28", "#070b12"],
|
|
10
30
|
bell: ["#0a0f18", "#242f42", "#0a0f18"],
|
|
31
|
+
foam: ["#16202f", "#3a475c", "#16202f"],
|
|
11
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Every look, by name. A look is one entry of this table.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```ts
|
|
38
|
+
* import { LOOKS } from "@johnmorrisdotca/uchusen-rockets";
|
|
39
|
+
*
|
|
40
|
+
* console.log(Object.keys(LOOKS));
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
12
43
|
export const LOOKS = {
|
|
13
44
|
line: { line: "#8fa1b8", outlinePx: 1.4, featurePx: 1, weldPx: 0.6, weldOpacity: 0.45, outline: 1.2, feature: 0.8, weld: 0.45, fills: NIGHT, halo: true },
|
|
14
45
|
thick: { line: "#b4c2d4", outlinePx: 3.4, featurePx: 2, weldPx: 0.9, weldOpacity: 0.5, outline: 3.4, feature: 1.7, weld: 0.6, fills: NIGHT, halo: true },
|
|
@@ -28,9 +59,21 @@ export const LOOKS = {
|
|
|
28
59
|
metal: ["#5a5f66", "#a9afb6", "#5a5f66"],
|
|
29
60
|
dark: ["#111316", "#2a2d31", "#111316"],
|
|
30
61
|
bell: ["#141518", "#3c3f44", "#141518"],
|
|
62
|
+
foam: ["#6e3a1b", "#c8743a", "#6e3a1b"],
|
|
31
63
|
},
|
|
32
64
|
halo: false,
|
|
33
65
|
},
|
|
34
66
|
};
|
|
35
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* A value from outside as a look's name: the default for anything else.
|
|
69
|
+
*
|
|
70
|
+
* @param value Anything.
|
|
71
|
+
* @returns The look's name if it is one, and the default (`line`) for anything else.
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* import { cleanLook } from "@johnmorrisdotca/uchusen-rockets";
|
|
75
|
+
*
|
|
76
|
+
* console.log(cleanLook("painted"), cleanLook("shiny"));
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
36
79
|
export const cleanLook = (value) => (LOOK_NAMES.includes(value) ? value : DEFAULT_LOOK);
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Apollo and Soyuz docked, in plain shapes, for the line looks: each is its sourced length and width, stood on end with Apollo's engine down. Where their parts begin is measured from NASA's model at those scales. The painted look is NASA's model.
|
|
2
|
+
import { AS_CSM_LONG, AS_CSM_WIDE, AS_SOYUZ_LONG, AS_SOYUZ_WIDE } from "../data/apollosoyuz.js";
|
|
3
|
+
import { blank } from "../data/types.js";
|
|
4
|
+
import { floor, taper, tube } from "./kit.js";
|
|
5
|
+
const CSM = AS_CSM_LONG.value ?? 0;
|
|
6
|
+
const CSM_R = (AS_CSM_WIDE.value ?? 0) / 2;
|
|
7
|
+
const ALONG = CSM / 11.84;
|
|
8
|
+
const ENGINE = 2.59;
|
|
9
|
+
const CM_AT = CSM - 3.28;
|
|
10
|
+
const DOCK_AT = CSM - (0.32 * ALONG);
|
|
11
|
+
const DOCK = 2.33;
|
|
12
|
+
const SOYUZ_AT = DOCK_AT + 2.32 * ALONG;
|
|
13
|
+
const SOYUZ = AS_SOYUZ_LONG.value ?? 0;
|
|
14
|
+
const SOYUZ_R = (AS_SOYUZ_WIDE.value ?? 0) / 2;
|
|
15
|
+
const csm = () => [
|
|
16
|
+
taper("engine-pale", 1.2, 0, 0.45, ENGINE, { rings: [0.02] }),
|
|
17
|
+
tube("white", CSM_R, ENGINE, CM_AT, { rings: [ENGINE + 0.02, CM_AT - 0.02], welds: [ENGINE + 1.5] }),
|
|
18
|
+
floor(CSM_R, ENGINE),
|
|
19
|
+
taper("steel", CSM_R, CM_AT, 0.3, CSM),
|
|
20
|
+
];
|
|
21
|
+
const dock = () => [tube("dark", 0.7, 0.1, DOCK, { rings: [0.3, DOCK - 0.25] }), floor(0.7, 0.1)];
|
|
22
|
+
const wing = (side) => {
|
|
23
|
+
const frame = { o: [side * SOYUZ_R, 5.9, 0], u: [side, 0, 0], v: [0, 1, 0], w: [0, 0, 1] };
|
|
24
|
+
return { kind: "plate", material: "solar", frame, outline: [[0.1, -0.5], [2.75, -0.5], [2.75, 0.5], [0.1, 0.5]], thickness: 0.04 };
|
|
25
|
+
};
|
|
26
|
+
const soyuz = () => [
|
|
27
|
+
{ kind: "lathe", material: "white", segs: 28, body: true, outline: true, profile: [[0.3, 0.1], [0.75, 0.25], [1.05, 0.8], [1.05, 1.4], [0.72, 2.1]] },
|
|
28
|
+
{ kind: "lathe", material: "white", segs: 28, body: true, outline: true, profile: [[0.72, 2.1], [SOYUZ_R * 0.88, 3], [SOYUZ_R * 0.9, 4.6]], rings: [3] },
|
|
29
|
+
tube("engine-pale", SOYUZ_R * 0.95, 4.6, 6.6, { rings: [4.62] }),
|
|
30
|
+
{ kind: "lathe", material: "white", segs: 28, body: true, outline: true, profile: [[SOYUZ_R * 0.95, 6.6], [SOYUZ_R, SOYUZ]] },
|
|
31
|
+
wing(1),
|
|
32
|
+
wing(-1),
|
|
33
|
+
];
|
|
34
|
+
const FROM = "NASA's model for the painted look. This package's plain shapes for the two line looks, from each craft's sourced length and width; where its parts begin is measured from NASA's model. No flag or lettering is drawn.";
|
|
35
|
+
export const APOLLO_SOYUZ_BUILDS = [
|
|
36
|
+
{
|
|
37
|
+
rocket: "apollo-soyuz",
|
|
38
|
+
variant: "apollo-soyuz",
|
|
39
|
+
drawnFrom: FROM,
|
|
40
|
+
parts: [
|
|
41
|
+
{ slot: "csm", kind: "spacecraft", name: "Apollo command and service module", height: CSM, diameter: CSM_R * 2, sourcedDiameter: AS_CSM_WIDE, painted: { file: "apollo-soyuz-csm.glb", credit: "nasa-apollo-soyuz" }, pieces: csm },
|
|
42
|
+
{ slot: "docking-module", kind: "spacecraft", name: "Docking module", height: DOCK, diameter: 1.41, place: { x: 0, z: 0, y: DOCK_AT }, sourcedDiameter: blank("No source read here gives its size."), painted: { file: "apollo-soyuz-docking-module.glb", credit: "nasa-apollo-soyuz" }, pieces: dock },
|
|
43
|
+
{ slot: "soyuz", kind: "spacecraft", name: "Soyuz 7K-TM", height: SOYUZ, diameter: SOYUZ_R * 2, place: { x: 0, z: 0, y: SOYUZ_AT }, sourcedDiameter: AS_SOYUZ_WIDE, painted: { file: "apollo-soyuz-soyuz.glb", credit: "nasa-apollo-soyuz" }, pieces: soyuz },
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
];
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Inside Crew Dragon: the capsule cut open down its middle, at Dragon 2's sourced sizes. Four seats and the three-screen panel over the two centre seats are sourced, with the cargo below them; where each sits and its size are judged from one published picture of the cabin. For scale, a plain person of 1.8 m, not a fact about anyone.
|
|
2
|
+
import { DRAGON_DRAWS } from "./falcon.js";
|
|
3
|
+
import { deg } from "../framing.js";
|
|
4
|
+
import { strut } from "./pieces.js";
|
|
5
|
+
const d = DRAGON_DRAWS["dragon-2"];
|
|
6
|
+
const H = d.capsule;
|
|
7
|
+
const R = d.baseRadius;
|
|
8
|
+
const N = d.nest;
|
|
9
|
+
const SHOULDER = H * 0.74;
|
|
10
|
+
const OUTER = [[R * 0.9, N], [R, N + 0.3], [R * 0.93, N + 0.7], [R * 0.5, SHOULDER], [R * 0.47, H * 0.84], [R * 0.3, H * 0.95], [0.001, H]];
|
|
11
|
+
const BACK = () => [deg(90), deg(270)];
|
|
12
|
+
const FLOOR_Y = N + 0.75;
|
|
13
|
+
const shell = (profile, material, extra = {}) => ({ kind: "lathe", material, segs: 48, body: true, arc: BACK, profile, ...extra });
|
|
14
|
+
const box = (material, a, b, width, depth) => strut(material, a, b, width, depth, { plain: false });
|
|
15
|
+
function seat(x, y, z) {
|
|
16
|
+
return [
|
|
17
|
+
box("white", [x, y, z - 0.3], [x, y + 0.82, z - 0.62], 0.58, 0.1),
|
|
18
|
+
box("black", [x, y + 0.02, z - 0.28], [x, y + 0.08, z + 0.26], 0.54, 0.12),
|
|
19
|
+
box("black", [x, y + 0.72, z - 0.5], [x, y + 0.84, z - 0.54], 0.3, 0.14),
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
/** A plain person for scale, standing. */
|
|
23
|
+
function person(x, y, z) {
|
|
24
|
+
const tall = 1.8;
|
|
25
|
+
const head = 0.12;
|
|
26
|
+
const at = [x, z];
|
|
27
|
+
return [
|
|
28
|
+
{ kind: "lathe", material: "engine-pale", at, segs: 12, profile: [[0.14, y], [0.2, y + tall * 0.5], [0.23, y + tall * 0.8], [0.09, y + tall - 2 * head]] },
|
|
29
|
+
{ kind: "lathe", material: "engine-pale", at, segs: 12, profile: [[0.001, y + tall - 2 * head], [head * 0.72, y + tall - 1.72 * head], [head, y + tall - head], [head * 0.72, y + tall - 0.28 * head], [0.001, y + tall]] },
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
function inside() {
|
|
33
|
+
const inner = OUTER.map(([r, y]) => [Math.max(0.001, r * 0.93), y + 0.03]).reverse();
|
|
34
|
+
const out = [
|
|
35
|
+
shell(OUTER, "white", { outline: true, rings: [N + 0.3, SHOULDER] }),
|
|
36
|
+
// the inner wall, seen through the cut
|
|
37
|
+
shell(inner, "engine-pale"),
|
|
38
|
+
{ kind: "lathe", material: "soot", segs: 40, under: true, profile: [[0, 0], [R * 0.72, 0], [R * 0.9, N]], rings: [N] },
|
|
39
|
+
// the floor and the cut edge of the shell
|
|
40
|
+
{ kind: "lathe", material: "dark", segs: 40, body: true, profile: [[R * 0.86, FLOOR_Y], [0.001, FLOOR_Y]] },
|
|
41
|
+
// the cargo under the centre seats
|
|
42
|
+
box("engine-pale", [-0.55, FLOOR_Y, 0.1], [-0.55, FLOOR_Y + 0.5, 0.1], 0.5, 0.55),
|
|
43
|
+
box("engine-metal", [0, FLOOR_Y, 0.15], [0, FLOOR_Y + 0.46, 0.15], 0.4, 0.55),
|
|
44
|
+
box("engine-pale", [0.55, FLOOR_Y, 0.1], [0.55, FLOOR_Y + 0.5, 0.1], 0.5, 0.55),
|
|
45
|
+
// the two centre seats, higher, and the outer two
|
|
46
|
+
...seat(-0.34, FLOOR_Y + 0.72, -0.15),
|
|
47
|
+
...seat(0.34, FLOOR_Y + 0.72, -0.15),
|
|
48
|
+
...seat(-1.02, FLOOR_Y + 0.42, -0.42),
|
|
49
|
+
...seat(1.02, FLOOR_Y + 0.42, -0.42),
|
|
50
|
+
// the panel over the centre seats, with its three screens
|
|
51
|
+
box("engine-metal", [0, FLOOR_Y + 1.62, 0.22], [0, FLOOR_Y + 1.92, 0.08], 1.34, 0.08),
|
|
52
|
+
...[-0.42, 0, 0.42].map((x) => box("glass", [x, FLOOR_Y + 1.66, 0.25], [x, FLOOR_Y + 1.88, 0.15], 0.38, 0.03)),
|
|
53
|
+
// a window on each side of the cabin, and the docking port in the ceiling
|
|
54
|
+
...[-1, 1].map((side) => box("glass", [side * 1.36, FLOOR_Y + 0.96, -0.1], [side * 1.2, FLOOR_Y + 1.24, -0.1], 0.3, 0.06)),
|
|
55
|
+
{ kind: "lathe", material: "engine-metal", segs: 20, body: true, profile: [[0.38, H * 0.8], [0.38, H * 0.86], [0.001, H * 0.86]] },
|
|
56
|
+
...person(1.5, FLOOR_Y, 0.9),
|
|
57
|
+
];
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
export const DRAGON_INSIDE_BUILDS = [
|
|
61
|
+
{
|
|
62
|
+
rocket: "dragon",
|
|
63
|
+
variant: "crew-dragon-inside",
|
|
64
|
+
drawnFrom: "This package's code. The outside is Dragon 2's sourced size; its four seats, panel and cargo are from its article, placed by eye from one published picture of the cabin. Their sizes have no source. Cut open to look inside: the real capsule's front half is not drawn. The figure of 1.8 m is for scale.",
|
|
65
|
+
parts: [{ slot: "capsule", kind: "capsule", name: "Inside Crew Dragon, cut open", height: H, diameter: R * 2, pieces: inside }],
|
|
66
|
+
},
|
|
67
|
+
];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Electron from a table of numbers: the whole, the stages, the fairing and the width are sourced. The sea-level Rutherford is 0.25 m across, from its infobox; its length and the ring they stand in are judged from photographs.
|
|
2
|
+
import { engineRing, fairingShell, floor, raceway, skirt, tube } from "./kit.js";
|
|
3
|
+
import { merlin } from "./falcon.js";
|
|
4
|
+
const R = 0.6;
|
|
5
|
+
const FIRST = 12.1;
|
|
6
|
+
const GAP = 18 - 12.1 - 2.4 - 2.5;
|
|
7
|
+
const SECOND = 2.4;
|
|
8
|
+
const FAIRING = 2.5;
|
|
9
|
+
const first = () => [
|
|
10
|
+
tube("black", R, 0.5, FIRST, { rings: [0.52, FIRST - 0.02], welds: [4, 8] }),
|
|
11
|
+
floor(R, 0.5),
|
|
12
|
+
...merlin([0, 0], 0, 0.125, 0.6),
|
|
13
|
+
...engineRing(8, 0.42, 0, 0.125, 0.6),
|
|
14
|
+
raceway("black", R, 0.8, FIRST - 0.2, 180, 0.1, 0.05),
|
|
15
|
+
];
|
|
16
|
+
const gap = () => [tube("black", R, 0, GAP, { rings: [0.02, GAP - 0.02] }), floor(R, 0)];
|
|
17
|
+
const second = () => [
|
|
18
|
+
...skirt("black", R, 0, 0.7),
|
|
19
|
+
tube("black", R, 0.7, SECOND, { rings: [0.72, SECOND - 0.02] }),
|
|
20
|
+
floor(R, 0.7),
|
|
21
|
+
...merlin([0, 0], 0.02, 0.28, 0.7),
|
|
22
|
+
];
|
|
23
|
+
export const ELECTRON_BUILDS = [
|
|
24
|
+
{
|
|
25
|
+
rocket: "electron",
|
|
26
|
+
variant: "electron",
|
|
27
|
+
drawnFrom: "This package's code, from the sourced whole, stages, fairing and width; the metre the sources leave over is drawn as an interstage, and the paint is judged from photographs. No licensed model is used, and no name or mark is drawn.",
|
|
28
|
+
parts: [
|
|
29
|
+
{ slot: "first-stage", kind: "first-stage", name: "First stage, Electron", height: FIRST, diameter: R * 2, top: [FIRST, R * 2], pieces: first },
|
|
30
|
+
{ slot: "adapter", kind: "adapter", name: "Interstage, Electron", height: GAP, diameter: R * 2, bottom: [0, R * 2], top: [GAP, R * 2], pieces: gap },
|
|
31
|
+
{ slot: "second-stage", kind: "second-stage", name: "Second stage, Electron", height: SECOND, diameter: R * 2, bottom: [0, R * 2], top: [SECOND, R * 2], pieces: second },
|
|
32
|
+
{ slot: "fairing", kind: "fairing", name: "Fairing, Electron", height: FAIRING, diameter: R * 2, bottom: [0, R * 2], pieces: () => fairingShell("black", R, FAIRING, 0.9, 1.3) },
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
];
|
package/dist/model/falcon.d.ts
CHANGED
|
@@ -27,6 +27,8 @@ export interface FalconDraw {
|
|
|
27
27
|
}
|
|
28
28
|
export declare const FALCON_DRAWS: Readonly<Record<string, FalconDraw>>;
|
|
29
29
|
export declare const falconFirstStage: (id: string) => Piece[];
|
|
30
|
+
/** A first stage with no legs of its own: for one that has landed and has them out. */
|
|
31
|
+
export declare const falconFirstStageBare: (id: string) => Piece[];
|
|
30
32
|
export declare const falconSecondStage: (id: string) => Piece[];
|
|
31
33
|
export declare const falconFairing: (id: string) => Piece[];
|
|
32
34
|
export interface DragonDraw {
|
package/dist/model/falcon.js
CHANGED
|
@@ -89,12 +89,16 @@ function fairing(d, jointRadius) {
|
|
|
89
89
|
];
|
|
90
90
|
}
|
|
91
91
|
export const falconFirstStage = (id) => firstStage(FALCON_DRAWS[id].first, true);
|
|
92
|
+
/** A first stage with no legs of its own: for one that has landed and has them out. */
|
|
93
|
+
export const falconFirstStageBare = (id) => firstStage({ ...FALCON_DRAWS[id].first, legs: false }, true);
|
|
92
94
|
export const falconSecondStage = (id) => secondStage(FALCON_DRAWS[id].second);
|
|
93
95
|
export const falconFairing = (id) => fairing(FALCON_DRAWS[id].fairing, R);
|
|
94
96
|
export const DRAGON_DRAWS = {
|
|
95
97
|
"dragon-1": { capsule: 3.8, nest: 0, trunk: 2.3, baseRadius: 1.85, trunkRadius: 1.8, windows: false, wings: true, fins: false },
|
|
96
98
|
// the capsule's 4.5 m includes its heat shield, which nests 0.34 m into the trunk: 3.94 m of trunk and that make the sourced 8.1 m
|
|
97
99
|
"dragon-2": { capsule: 4.5, nest: 0.342, trunk: 3.94, baseRadius: 2, trunkRadius: 1.92, windows: true, wings: false, fins: true },
|
|
100
|
+
// the same sizes: its article gives one set for both versions. It has no windows
|
|
101
|
+
"cargo-dragon-2": { capsule: 4.5, nest: 0.342, trunk: 3.94, baseRadius: 2, trunkRadius: 1.92, windows: false, wings: false, fins: true },
|
|
98
102
|
};
|
|
99
103
|
export function capsule(d) {
|
|
100
104
|
const H = d.capsule;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Falcon 1 from a table of numbers. The whole and the fairing are sourced; how the rest shares that out is judged from photographs of its fourth flight's vehicle: a white first stage, a black interstage and a white second stage under the fairing.
|
|
2
|
+
import { merlin } from "./falcon.js";
|
|
3
|
+
import { deg } from "../framing.js";
|
|
4
|
+
import { floor, nose, raceway, tube } from "./kit.js";
|
|
5
|
+
import { variantOfFairing } from "../data/falcon1.js";
|
|
6
|
+
const R = 0.85;
|
|
7
|
+
const DRAWS = {
|
|
8
|
+
// 21.3 m: 15.8 of first stage with its interstage, 2 showing of the second stage, and the sourced 3.5 of fairing
|
|
9
|
+
"falcon-1": { first: 15.8, interstage: 3.2, second: 4.5, joint: 2.5, fairing: { height: 3.5, radius: 0.77, straight: 1.5, blunt: 1.25 } },
|
|
10
|
+
// 27.4 m: the 90 feet, with the sourced 4.4 of fairing
|
|
11
|
+
"falcon-1e": { first: 20.8, interstage: 3.2, second: 4.7, joint: 2.5, fairing: { height: 4.4, radius: 0.85, straight: 1.7, blunt: 1.15 } },
|
|
12
|
+
};
|
|
13
|
+
function firstStage(d) {
|
|
14
|
+
const tank = d.first - d.interstage;
|
|
15
|
+
const skirt = 1.7;
|
|
16
|
+
return [
|
|
17
|
+
tube("white", R, skirt, tank, { rings: [skirt + 0.02, tank - 0.02], welds: [tank * 0.5, tank * 0.72] }),
|
|
18
|
+
tube("black", R, tank, d.first, { rings: [d.first - 0.02] }),
|
|
19
|
+
floor(R, skirt),
|
|
20
|
+
// the single engine, and the frame that holds it
|
|
21
|
+
...merlin([0, 0], 0, 0.42, 2),
|
|
22
|
+
{ kind: "lathe", material: "engine-metal", segs: 16, under: true, only: "mesh", profile: [[R * 0.7, skirt], [R * 0.32, skirt - 0.6]] },
|
|
23
|
+
// the cable run up its side
|
|
24
|
+
raceway("white", R, skirt + 0.2, d.first - 0.2, 180, 0.16, 0.08),
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
function secondStage(d) {
|
|
28
|
+
return [
|
|
29
|
+
tube("white", R, d.joint, d.second, { rings: [d.joint + 0.02], welds: [(d.joint + d.second) / 2] }),
|
|
30
|
+
floor(R, d.joint),
|
|
31
|
+
...merlin([0, 0], 0, 0.36, d.joint * 0.95),
|
|
32
|
+
];
|
|
33
|
+
}
|
|
34
|
+
function fairing(d) {
|
|
35
|
+
const shell = nose("white", d.radius, d.straight, d.height, d.blunt);
|
|
36
|
+
const seam = (a) => shell.profile.map(([r, y]) => [(r + 0.008) * Math.sin(a), y, (r + 0.008) * Math.cos(a)]);
|
|
37
|
+
return [
|
|
38
|
+
{ ...shell, profile: [[d.radius, 0], ...shell.profile], rings: [d.straight] },
|
|
39
|
+
floor(d.radius, 0),
|
|
40
|
+
{ kind: "lines", weight: "feature", paths: [seam(deg(90)), seam(deg(-90))] },
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
const FROM = "This package's code, sized from SpaceX's user's guide; how the stages share out the whole is judged from photographs. No licensed model shows it.";
|
|
44
|
+
export const FALCON_1_BUILDS = Object.entries(DRAWS).map(([variant, d]) => ({
|
|
45
|
+
rocket: "falcon-1",
|
|
46
|
+
variant,
|
|
47
|
+
drawnFrom: variant === "falcon-1" ? FROM : `${FROM} It never flew, so no photograph shows it: Falcon 1's look on the guide's sizes.`,
|
|
48
|
+
parts: [
|
|
49
|
+
{ slot: "first-stage", kind: "first-stage", name: `First stage, ${variant === "falcon-1" ? "Falcon 1" : "Falcon 1e"}`, height: d.first, diameter: R * 2, top: [d.first, R * 2], pieces: () => firstStage(d) },
|
|
50
|
+
{ slot: "second-stage", kind: "second-stage", name: `Second stage, ${variant === "falcon-1" ? "Falcon 1" : "Falcon 1e"}`, height: d.second, diameter: R * 2, bottom: [d.joint, R * 2], top: [d.second, R * 2], pieces: () => secondStage(d) },
|
|
51
|
+
{ slot: "fairing", kind: "fairing", name: `Fairing, ${variant === "falcon-1" ? "Falcon 1" : "Falcon 1e"}`, height: d.fairing.height, diameter: d.fairing.radius * 2, bottom: [0, R * 2], sourcedDiameter: variantOfFairing(variant), pieces: () => fairing(d.fairing) },
|
|
52
|
+
],
|
|
53
|
+
}));
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Gemini in plain shapes, for the line looks: its length and width are sourced, and where the adapter ends and the capsule's shape are measured from NASA's model at that scale. The painted look is NASA's model.
|
|
2
|
+
import { GEMINI_WIDE } from "../data/gemini.js";
|
|
3
|
+
import { blank } from "../data/types.js";
|
|
4
|
+
import { floor, taper, tube } from "./kit.js";
|
|
5
|
+
const WHOLE = 5.61;
|
|
6
|
+
const SCALE = WHOLE / 13.67;
|
|
7
|
+
const ADAPTER = (5.95 - 0.14) * SCALE;
|
|
8
|
+
const R = (GEMINI_WIDE.value ?? 0) / 2;
|
|
9
|
+
const NECK = 1.07;
|
|
10
|
+
const adapter = () => [taper("white", R, 0, NECK * 1.12, ADAPTER * 0.55, { rings: [0.02], welds: [ADAPTER * 0.25] }), tube("white", NECK * 1.12, ADAPTER * 0.55, ADAPTER * 0.62), taper("white", NECK * 1.12, ADAPTER * 0.62, NECK, ADAPTER, { rings: [ADAPTER - 0.02] }), floor(R, 0.02)];
|
|
11
|
+
const capsule = () => [
|
|
12
|
+
taper("black", NECK, 0, 0.42, 1.55, { rings: [0.02, 1.53] }),
|
|
13
|
+
tube("black", 0.42, 1.55, 2.2, { rings: [1.9] }),
|
|
14
|
+
taper("black", 0.42, 2.2, 0.36, WHOLE - ADAPTER - 0.25),
|
|
15
|
+
tube("white", 0.36, WHOLE - ADAPTER - 0.25, WHOLE - ADAPTER),
|
|
16
|
+
];
|
|
17
|
+
const FROM = "NASA's model for the painted look. This package's plain shapes for the two line looks, from the sourced length and width; where the adapter ends is measured from NASA's model. No flag or lettering is drawn.";
|
|
18
|
+
export const GEMINI_BUILDS = [
|
|
19
|
+
{
|
|
20
|
+
rocket: "gemini",
|
|
21
|
+
variant: "gemini",
|
|
22
|
+
drawnFrom: FROM,
|
|
23
|
+
parts: [
|
|
24
|
+
{ slot: "adapter", kind: "spacecraft", name: "Adapter, Gemini", height: ADAPTER, diameter: R * 2, sourcedDiameter: GEMINI_WIDE, painted: { file: "gemini-adapter.glb", credit: "nasa-gemini" }, pieces: adapter },
|
|
25
|
+
{ slot: "capsule", kind: "capsule", name: "Reentry module, Gemini", height: WHOLE - ADAPTER, diameter: NECK * 2, place: { x: 0, z: 0, y: ADAPTER }, sourcedDiameter: blank("No source read here gives its size."), painted: { file: "gemini-capsule.glb", credit: "nasa-gemini" }, pieces: capsule },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Hubble in plain shapes, for the line looks: its length and width are sourced, and where its arrays and door stand is measured from NASA's model at that scale. The painted look is NASA's model.
|
|
2
|
+
import { HUBBLE_WIDE } from "../data/hubble.js";
|
|
3
|
+
import { tube } from "./kit.js";
|
|
4
|
+
const H = 13.2;
|
|
5
|
+
const R = (HUBBLE_WIDE.value ?? 0) / 2;
|
|
6
|
+
const TUBE_R = R * 0.74;
|
|
7
|
+
const WAIST = 5.1;
|
|
8
|
+
const array = (side) => {
|
|
9
|
+
const frame = { o: [side * (R + 3.5), WAIST, 0], u: [1, 0, 0], v: [0, 0, 1], w: [0, 1, 0] };
|
|
10
|
+
return { kind: "plate", material: "gold", frame, outline: [[-1.2, -6.2], [1.2, -6.2], [1.2, 6.2], [-1.2, 6.2]], thickness: 0.06, ribs: [[[-1.2, 0], [1.2, 0]]] };
|
|
11
|
+
};
|
|
12
|
+
const telescope = () => [
|
|
13
|
+
tube("steel", R, 0, WAIST, { rings: [0.02, 2.2, WAIST - 0.02] }),
|
|
14
|
+
{ kind: "lathe", material: "dark", segs: 28, under: true, profile: [[0, 0], [R, 0]] },
|
|
15
|
+
tube("steel", TUBE_R, WAIST, H, { rings: [8.4], welds: [10.2] }),
|
|
16
|
+
{ kind: "lathe", material: "soot", segs: 28, under: true, only: "mesh", profile: [[TUBE_R * 0.96, H], [0, H]] },
|
|
17
|
+
{ kind: "plate", material: "engine-pale", frame: { o: [0, H + 0.02, 0], u: [1, 0, 0], v: [0, 0, 1], w: [0, 1, 0] }, outline: [[-TUBE_R, -TUBE_R], [TUBE_R, -TUBE_R], [TUBE_R, TUBE_R], [-TUBE_R, TUBE_R]], thickness: 0.05, plain: true },
|
|
18
|
+
array(1),
|
|
19
|
+
array(-1),
|
|
20
|
+
];
|
|
21
|
+
export const HUBBLE_BUILDS = [
|
|
22
|
+
{
|
|
23
|
+
rocket: "hubble",
|
|
24
|
+
variant: "hubble",
|
|
25
|
+
drawnFrom: "NASA's model for the painted look. This package's plain shapes for the two line looks, from the sourced length and width; its arrays and door are measured from NASA's model. No lettering or mark is drawn.",
|
|
26
|
+
parts: [{ slot: "telescope", kind: "spacecraft", name: "Hubble Space Telescope", height: H, diameter: R * 2, sourcedDiameter: HUBBLE_WIDE, painted: { file: "hubble-telescope.glb", credit: "nasa-hubble" }, pieces: telescope }],
|
|
27
|
+
},
|
|
28
|
+
];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// The station in plain shapes, for the line looks: its length and truss are sourced, and where its arrays and modules stand is measured from NASA's model at that scale. Boxes and tubes, few enough for a drawing. The painted look is NASA's model.
|
|
2
|
+
import { ISS_DRAWN_TALL, ISS_LONG } from "../data/iss.js";
|
|
3
|
+
import { tube } from "./kit.js";
|
|
4
|
+
import { strut } from "./pieces.js";
|
|
5
|
+
const SPAN = (ISS_LONG.value ?? 0) / 2;
|
|
6
|
+
const TRUSS_Y = 34;
|
|
7
|
+
const TRUSS = 94 / 2;
|
|
8
|
+
const array = (x, y0, y1) => {
|
|
9
|
+
const frame = { o: [x, 0, 0], u: [1, 0, 0], v: [0, 1, 0], w: [0, 0, 1] };
|
|
10
|
+
return { kind: "plate", material: "gold", frame, outline: [[-2.4, y0], [2.4, y0], [2.4, y1], [-2.4, y1]], thickness: 0.1 };
|
|
11
|
+
};
|
|
12
|
+
const station = () => {
|
|
13
|
+
const out = [strut("engine-pale", [-TRUSS, TRUSS_Y, 0], [TRUSS, TRUSS_Y, 0], 1.5, 1.5, { plain: false })];
|
|
14
|
+
for (const x of [SPAN - 3, SPAN - 17, -(SPAN - 3), -(SPAN - 17)])
|
|
15
|
+
out.push(array(x, 0, TRUSS_Y - 2), array(x, TRUSS_Y + 2, ISS_DRAWN_TALL));
|
|
16
|
+
// the long run of modules, and the crossing ones
|
|
17
|
+
out.push(tube("white", 2.1, 16, 47, { rings: [24, 34, 40] }));
|
|
18
|
+
for (const [y, half] of [[20, 7], [44, 8]])
|
|
19
|
+
out.push(strut("white", [-half, y, 0], [half, y, 0], 3.6, 3.6));
|
|
20
|
+
// radiators
|
|
21
|
+
for (const side of [1, -1])
|
|
22
|
+
out.push({ kind: "plate", material: "white", frame: { o: [side * 22, 0, 0], u: [1, 0, 0], v: [0, 1, 0], w: [0, 0, 1] }, outline: [[-6, 18], [6, 18], [6, TRUSS_Y - 1], [-6, TRUSS_Y - 1]], thickness: 0.1 });
|
|
23
|
+
return out;
|
|
24
|
+
};
|
|
25
|
+
export const ISS_BUILDS = [
|
|
26
|
+
{
|
|
27
|
+
rocket: "iss",
|
|
28
|
+
variant: "iss",
|
|
29
|
+
drawnFrom: "NASA's model for the painted look, with its colours judged from photographs. This package's plain shapes for the two line looks, from the sourced length and truss; where its arrays and modules stand is measured from NASA's model. No flag or mark is drawn.",
|
|
30
|
+
parts: [{ slot: "station", kind: "spacecraft", name: "International Space Station", height: ISS_DRAWN_TALL, diameter: SPAN * 2, sourcedDiameter: ISS_LONG, painted: { file: "iss-station.glb", credit: "nasa-iss" }, pieces: station }],
|
|
31
|
+
},
|
|
32
|
+
];
|