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