@johnmorrisdotca/uchusen-rockets 0.17.0 → 0.19.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 +30 -4
- package/NOTICE.md +22 -4
- package/README.md +15 -10
- package/dist/assets/hubble-hubble-aft-shroud.glb +0 -0
- package/dist/assets/hubble-hubble-aft-shroud.painted.svg +1 -0
- package/dist/assets/hubble-hubble-aft-shroud.svg +1 -0
- package/dist/assets/hubble-hubble-aft-shroud.thick.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-far.glb +0 -0
- package/dist/assets/hubble-hubble-antenna-far.painted.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-far.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-far.thick.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-near.glb +0 -0
- package/dist/assets/hubble-hubble-antenna-near.painted.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-near.svg +1 -0
- package/dist/assets/hubble-hubble-antenna-near.thick.svg +1 -0
- package/dist/assets/hubble-hubble-apart.painted.svg +1 -0
- package/dist/assets/hubble-hubble-apart.svg +1 -0
- package/dist/assets/hubble-hubble-apart.thick.svg +1 -0
- package/dist/assets/hubble-hubble-aperture-door.glb +0 -0
- package/dist/assets/hubble-hubble-aperture-door.painted.svg +1 -0
- package/dist/assets/hubble-hubble-aperture-door.svg +1 -0
- package/dist/assets/hubble-hubble-aperture-door.thick.svg +1 -0
- package/dist/assets/hubble-hubble-array-left.glb +0 -0
- package/dist/assets/hubble-hubble-array-left.painted.svg +1 -0
- package/dist/assets/hubble-hubble-array-left.svg +1 -0
- package/dist/assets/hubble-hubble-array-left.thick.svg +1 -0
- package/dist/assets/hubble-hubble-array-right.glb +0 -0
- package/dist/assets/hubble-hubble-array-right.painted.svg +1 -0
- package/dist/assets/hubble-hubble-array-right.svg +1 -0
- package/dist/assets/hubble-hubble-array-right.thick.svg +1 -0
- package/dist/assets/hubble-hubble-equipment-section.glb +0 -0
- package/dist/assets/hubble-hubble-equipment-section.painted.svg +1 -0
- package/dist/assets/hubble-hubble-equipment-section.svg +1 -0
- package/dist/assets/hubble-hubble-equipment-section.thick.svg +1 -0
- package/dist/assets/hubble-hubble-forward-shell.glb +0 -0
- package/dist/assets/hubble-hubble-forward-shell.painted.svg +1 -0
- package/dist/assets/hubble-hubble-forward-shell.svg +1 -0
- package/dist/assets/hubble-hubble-forward-shell.thick.svg +1 -0
- package/dist/assets/hubble-hubble-light-shield.glb +0 -0
- package/dist/assets/hubble-hubble-light-shield.painted.svg +1 -0
- package/dist/assets/hubble-hubble-light-shield.svg +1 -0
- package/dist/assets/hubble-hubble-light-shield.thick.svg +1 -0
- package/dist/assets/hubble-hubble.glb +0 -0
- package/dist/assets/hubble-hubble.painted.svg +1 -1
- package/dist/assets/hubble-hubble.svg +1 -1
- package/dist/assets/hubble-hubble.thick.svg +1 -1
- package/dist/assets/iss-iss-airlock.glb +0 -0
- package/dist/assets/iss-iss-airlock.painted.svg +1 -0
- package/dist/assets/iss-iss-airlock.svg +1 -0
- package/dist/assets/iss-iss-airlock.thick.svg +1 -0
- package/dist/assets/iss-iss-apart.painted.svg +1 -0
- package/dist/assets/iss-iss-apart.svg +1 -0
- package/dist/assets/iss-iss-apart.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-p4.glb +0 -0
- package/dist/assets/iss-iss-arrays-p4.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-p4.svg +1 -0
- package/dist/assets/iss-iss-arrays-p4.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-p6.glb +0 -0
- package/dist/assets/iss-iss-arrays-p6.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-p6.svg +1 -0
- package/dist/assets/iss-iss-arrays-p6.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-s4.glb +0 -0
- package/dist/assets/iss-iss-arrays-s4.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-s4.svg +1 -0
- package/dist/assets/iss-iss-arrays-s4.thick.svg +1 -0
- package/dist/assets/iss-iss-arrays-s6.glb +0 -0
- package/dist/assets/iss-iss-arrays-s6.painted.svg +1 -0
- package/dist/assets/iss-iss-arrays-s6.svg +1 -0
- package/dist/assets/iss-iss-arrays-s6.thick.svg +1 -0
- package/dist/assets/iss-iss-columbus.glb +0 -0
- package/dist/assets/iss-iss-columbus.painted.svg +1 -0
- package/dist/assets/iss-iss-columbus.svg +1 -0
- package/dist/assets/iss-iss-columbus.thick.svg +1 -0
- package/dist/assets/iss-iss-destiny.glb +0 -0
- package/dist/assets/iss-iss-destiny.painted.svg +1 -0
- package/dist/assets/iss-iss-destiny.svg +1 -0
- package/dist/assets/iss-iss-destiny.thick.svg +1 -0
- package/dist/assets/iss-iss-harmony.glb +0 -0
- package/dist/assets/iss-iss-harmony.painted.svg +1 -0
- package/dist/assets/iss-iss-harmony.svg +1 -0
- package/dist/assets/iss-iss-harmony.thick.svg +1 -0
- package/dist/assets/iss-iss-kibo.glb +0 -0
- package/dist/assets/iss-iss-kibo.painted.svg +1 -0
- package/dist/assets/iss-iss-kibo.svg +1 -0
- package/dist/assets/iss-iss-kibo.thick.svg +1 -0
- package/dist/assets/iss-iss-radiators-port.glb +0 -0
- package/dist/assets/iss-iss-radiators-port.painted.svg +1 -0
- package/dist/assets/iss-iss-radiators-port.svg +1 -0
- package/dist/assets/iss-iss-radiators-port.thick.svg +1 -0
- package/dist/assets/iss-iss-radiators-starboard.glb +0 -0
- package/dist/assets/iss-iss-radiators-starboard.painted.svg +1 -0
- package/dist/assets/iss-iss-radiators-starboard.svg +1 -0
- package/dist/assets/iss-iss-radiators-starboard.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-aft.glb +0 -0
- package/dist/assets/iss-iss-soyuz-aft.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-aft.svg +1 -0
- package/dist/assets/iss-iss-soyuz-aft.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.glb +0 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zarya-nadir.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.glb +0 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-nadir.thick.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.glb +0 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.painted.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.svg +1 -0
- package/dist/assets/iss-iss-soyuz-zvezda-zenith.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p1.glb +0 -0
- package/dist/assets/iss-iss-truss-p1.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p1.svg +1 -0
- package/dist/assets/iss-iss-truss-p1.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p3-p4.glb +0 -0
- package/dist/assets/iss-iss-truss-p3-p4.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p3-p4.svg +1 -0
- package/dist/assets/iss-iss-truss-p3-p4.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p5.glb +0 -0
- package/dist/assets/iss-iss-truss-p5.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p5.svg +1 -0
- package/dist/assets/iss-iss-truss-p5.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-p6.glb +0 -0
- package/dist/assets/iss-iss-truss-p6.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-p6.svg +1 -0
- package/dist/assets/iss-iss-truss-p6.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s0.glb +0 -0
- package/dist/assets/iss-iss-truss-s0.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s0.svg +1 -0
- package/dist/assets/iss-iss-truss-s0.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s1.glb +0 -0
- package/dist/assets/iss-iss-truss-s1.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s1.svg +1 -0
- package/dist/assets/iss-iss-truss-s1.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s3-s4.glb +0 -0
- package/dist/assets/iss-iss-truss-s3-s4.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s3-s4.svg +1 -0
- package/dist/assets/iss-iss-truss-s3-s4.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s5.glb +0 -0
- package/dist/assets/iss-iss-truss-s5.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s5.svg +1 -0
- package/dist/assets/iss-iss-truss-s5.thick.svg +1 -0
- package/dist/assets/iss-iss-truss-s6.glb +0 -0
- package/dist/assets/iss-iss-truss-s6.painted.svg +1 -0
- package/dist/assets/iss-iss-truss-s6.svg +1 -0
- package/dist/assets/iss-iss-truss-s6.thick.svg +1 -0
- package/dist/assets/iss-iss-unity.glb +0 -0
- package/dist/assets/iss-iss-unity.painted.svg +1 -0
- package/dist/assets/iss-iss-unity.svg +1 -0
- package/dist/assets/iss-iss-unity.thick.svg +1 -0
- package/dist/assets/iss-iss-zarya.glb +0 -0
- package/dist/assets/iss-iss-zarya.painted.svg +1 -0
- package/dist/assets/iss-iss-zarya.svg +1 -0
- package/dist/assets/iss-iss-zarya.thick.svg +1 -0
- package/dist/assets/iss-iss-zvezda.glb +0 -0
- package/dist/assets/iss-iss-zvezda.painted.svg +1 -0
- package/dist/assets/iss-iss-zvezda.svg +1 -0
- package/dist/assets/iss-iss-zvezda.thick.svg +1 -0
- package/dist/assets/iss-iss.glb +0 -0
- package/dist/assets/iss-iss.painted.svg +1 -1
- package/dist/assets/iss-iss.svg +1 -1
- package/dist/assets/iss-iss.thick.svg +1 -1
- package/dist/assets/jupiter-c-jupiter-c-apart.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-apart.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-apart.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-first-stage.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-fourth-stage.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tail.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.painted.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c-tub.thick.svg +1 -0
- package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
- package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -1
- package/dist/assets/jupiter-c-jupiter-c.svg +1 -1
- package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -1
- package/dist/assets/models/hubble-aft-shroud.glb +0 -0
- package/dist/assets/models/hubble-antenna-far.glb +0 -0
- package/dist/assets/models/hubble-antenna-near.glb +0 -0
- package/dist/assets/models/hubble-aperture-door.glb +0 -0
- package/dist/assets/models/hubble-array-left.glb +0 -0
- package/dist/assets/models/hubble-array-right.glb +0 -0
- package/dist/assets/models/hubble-equipment-section.glb +0 -0
- package/dist/assets/models/hubble-forward-shell.glb +0 -0
- package/dist/assets/models/hubble-light-shield.glb +0 -0
- package/dist/assets/models/iss-airlock.glb +0 -0
- package/dist/assets/models/iss-arrays-p4.glb +0 -0
- package/dist/assets/models/iss-arrays-p6.glb +0 -0
- package/dist/assets/models/iss-arrays-s4.glb +0 -0
- package/dist/assets/models/iss-arrays-s6.glb +0 -0
- package/dist/assets/models/iss-columbus.glb +0 -0
- package/dist/assets/models/iss-destiny.glb +0 -0
- package/dist/assets/models/iss-harmony.glb +0 -0
- package/dist/assets/models/iss-kibo.glb +0 -0
- package/dist/assets/models/iss-radiators-port.glb +0 -0
- package/dist/assets/models/iss-radiators-starboard.glb +0 -0
- package/dist/assets/models/iss-soyuz-aft.glb +0 -0
- package/dist/assets/models/iss-soyuz-zarya-nadir.glb +0 -0
- package/dist/assets/models/iss-soyuz-zvezda-nadir.glb +0 -0
- package/dist/assets/models/iss-soyuz-zvezda-zenith.glb +0 -0
- package/dist/assets/models/iss-truss-p1.glb +0 -0
- package/dist/assets/models/iss-truss-p3-p4.glb +0 -0
- package/dist/assets/models/iss-truss-p5.glb +0 -0
- package/dist/assets/models/iss-truss-p6.glb +0 -0
- package/dist/assets/models/iss-truss-s0.glb +0 -0
- package/dist/assets/models/iss-truss-s1.glb +0 -0
- package/dist/assets/models/iss-truss-s3-s4.glb +0 -0
- package/dist/assets/models/iss-truss-s5.glb +0 -0
- package/dist/assets/models/iss-truss-s6.glb +0 -0
- package/dist/assets/models/iss-unity.glb +0 -0
- package/dist/assets/models/iss-zarya.glb +0 -0
- package/dist/assets/models/iss-zvezda.glb +0 -0
- package/dist/assets/models/jupiter-c-first-stage.glb +0 -0
- package/dist/assets/models/jupiter-c-fourth-stage.glb +0 -0
- package/dist/assets/models/jupiter-c-tail.glb +0 -0
- package/dist/assets/models/jupiter-c-tub.glb +0 -0
- package/dist/assets/models/tiangong-hub.glb +0 -0
- package/dist/assets/models/tiangong-mengtian-arrays.glb +0 -0
- package/dist/assets/models/tiangong-mengtian.glb +0 -0
- package/dist/assets/models/tiangong-shenzhou-forward.glb +0 -0
- package/dist/assets/models/tiangong-shenzhou-nadir.glb +0 -0
- package/dist/assets/models/tiangong-tianhe-arrays.glb +0 -0
- package/dist/assets/models/tiangong-tianhe.glb +0 -0
- package/dist/assets/models/tiangong-tianzhou.glb +0 -0
- package/dist/assets/models/tiangong-wentian-arrays.glb +0 -0
- package/dist/assets/models/tiangong-wentian.glb +0 -0
- package/dist/assets/tiangong-tiangong-apart.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-apart.svg +1 -0
- package/dist/assets/tiangong-tiangong-apart.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-hub.glb +0 -0
- package/dist/assets/tiangong-tiangong-hub.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-hub.svg +1 -0
- package/dist/assets/tiangong-tiangong-hub.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.glb +0 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian-arrays.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian.glb +0 -0
- package/dist/assets/tiangong-tiangong-mengtian.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian.svg +1 -0
- package/dist/assets/tiangong-tiangong-mengtian.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.glb +0 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-forward.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.glb +0 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.svg +1 -0
- package/dist/assets/tiangong-tiangong-shenzhou-nadir.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.glb +0 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe-arrays.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe.glb +0 -0
- package/dist/assets/tiangong-tiangong-tianhe.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianhe.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianzhou.glb +0 -0
- package/dist/assets/tiangong-tiangong-tianzhou.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianzhou.svg +1 -0
- package/dist/assets/tiangong-tiangong-tianzhou.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.glb +0 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian-arrays.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian.glb +0 -0
- package/dist/assets/tiangong-tiangong-wentian.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian.svg +1 -0
- package/dist/assets/tiangong-tiangong-wentian.thick.svg +1 -0
- package/dist/assets/tiangong-tiangong.glb +0 -0
- package/dist/assets/tiangong-tiangong.painted.svg +1 -0
- package/dist/assets/tiangong-tiangong.svg +1 -0
- package/dist/assets/tiangong-tiangong.thick.svg +1 -0
- package/dist/buildbar.js +22 -5
- package/dist/data/credits.d.ts +18 -1
- package/dist/data/credits.js +20 -3
- package/dist/data/hubble.js +16 -6
- package/dist/data/iss.js +52 -5
- package/dist/data/jupiterc.js +11 -6
- package/dist/data/makers.d.ts +1 -0
- package/dist/data/makers.js +2 -1
- package/dist/data/sources.d.ts +160 -0
- package/dist/data/sources.js +20 -0
- package/dist/data/tiangong.d.ts +12 -0
- package/dist/data/tiangong.js +54 -0
- package/dist/element/orbitWorld.d.ts +5 -0
- package/dist/element/orbitWorld.js +46 -1
- package/dist/element/scene.d.ts +6 -0
- package/dist/element/scene.js +22 -2
- package/dist/element.js +11 -2
- package/dist/launches/data.d.ts +2 -0
- package/dist/launches/data.js +4 -0
- package/dist/launches/index.d.ts +318 -0
- package/dist/launches/index.js +249 -0
- package/dist/launches/links.d.ts +43 -0
- package/dist/launches/links.js +40 -0
- package/dist/launches/source.d.ts +20 -0
- package/dist/launches/source.js +22 -0
- package/dist/model/hubble.js +51 -17
- package/dist/model/iss.js +109 -23
- package/dist/model/jupiterc.js +29 -11
- package/dist/model/registry.js +4 -2
- package/dist/model/tiangong.d.ts +2 -0
- package/dist/model/tiangong.js +109 -0
- package/dist/parts.d.ts +1 -1
- package/dist/rockets.js +52 -3
- package/dist/thrusters.js +4 -4
- package/package.json +12 -2
- 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/data/sources.d.ts
CHANGED
|
@@ -538,6 +538,166 @@ export declare const SOURCES: {
|
|
|
538
538
|
readonly read: "direct";
|
|
539
539
|
readonly licence: "CC BY-SA 4.0";
|
|
540
540
|
};
|
|
541
|
+
readonly "wikipedia-tiangong": {
|
|
542
|
+
readonly title: "Tiangong space station (the infobox and the module table)";
|
|
543
|
+
readonly publisher: "Wikipedia";
|
|
544
|
+
readonly url: "https://en.wikipedia.org/wiki/Tiangong_space_station";
|
|
545
|
+
readonly date: "2026-11-11";
|
|
546
|
+
readonly read: "direct";
|
|
547
|
+
readonly licence: "CC BY-SA 4.0";
|
|
548
|
+
};
|
|
549
|
+
readonly "wikipedia-tianhe": {
|
|
550
|
+
readonly title: "Tianhe core module (the infobox)";
|
|
551
|
+
readonly publisher: "Wikipedia";
|
|
552
|
+
readonly url: "https://en.wikipedia.org/wiki/Tianhe_core_module";
|
|
553
|
+
readonly date: "2026-11-11";
|
|
554
|
+
readonly read: "direct";
|
|
555
|
+
readonly licence: "CC BY-SA 4.0";
|
|
556
|
+
};
|
|
557
|
+
readonly "wikipedia-wentian": {
|
|
558
|
+
readonly title: "Wentian module (the infobox)";
|
|
559
|
+
readonly publisher: "Wikipedia";
|
|
560
|
+
readonly url: "https://en.wikipedia.org/wiki/Wentian_module";
|
|
561
|
+
readonly date: "2026-11-11";
|
|
562
|
+
readonly read: "direct";
|
|
563
|
+
readonly licence: "CC BY-SA 4.0";
|
|
564
|
+
};
|
|
565
|
+
readonly "wikipedia-mengtian": {
|
|
566
|
+
readonly title: "Mengtian module (the infobox)";
|
|
567
|
+
readonly publisher: "Wikipedia";
|
|
568
|
+
readonly url: "https://en.wikipedia.org/wiki/Mengtian";
|
|
569
|
+
readonly date: "2026-11-11";
|
|
570
|
+
readonly read: "direct";
|
|
571
|
+
readonly licence: "CC BY-SA 4.0";
|
|
572
|
+
};
|
|
573
|
+
readonly "wikipedia-shenzhou": {
|
|
574
|
+
readonly title: "Shenzhou (spacecraft) (the infobox)";
|
|
575
|
+
readonly publisher: "Wikipedia";
|
|
576
|
+
readonly url: "https://en.wikipedia.org/wiki/Shenzhou_(spacecraft)";
|
|
577
|
+
readonly date: "2026-11-11";
|
|
578
|
+
readonly read: "direct";
|
|
579
|
+
readonly licence: "CC BY-SA 4.0";
|
|
580
|
+
};
|
|
581
|
+
readonly "wikipedia-tianzhou": {
|
|
582
|
+
readonly title: "Tianzhou (spacecraft) (the infobox)";
|
|
583
|
+
readonly publisher: "Wikipedia";
|
|
584
|
+
readonly url: "https://en.wikipedia.org/wiki/Tianzhou_(spacecraft)";
|
|
585
|
+
readonly date: "2026-11-11";
|
|
586
|
+
readonly read: "direct";
|
|
587
|
+
readonly licence: "CC BY-SA 4.0";
|
|
588
|
+
};
|
|
589
|
+
readonly "wikipedia-zarya": {
|
|
590
|
+
readonly title: "Zarya (the infobox)";
|
|
591
|
+
readonly publisher: "Wikipedia";
|
|
592
|
+
readonly url: "https://en.wikipedia.org/wiki/Zarya_(ISS_module)";
|
|
593
|
+
readonly date: "2026-11-11";
|
|
594
|
+
readonly read: "direct";
|
|
595
|
+
readonly licence: "CC BY-SA 4.0";
|
|
596
|
+
};
|
|
597
|
+
readonly "wikipedia-unity": {
|
|
598
|
+
readonly title: "Unity (ISS module) (the infobox)";
|
|
599
|
+
readonly publisher: "Wikipedia";
|
|
600
|
+
readonly url: "https://en.wikipedia.org/wiki/Unity_(ISS_module)";
|
|
601
|
+
readonly date: "2026-11-11";
|
|
602
|
+
readonly read: "direct";
|
|
603
|
+
readonly licence: "CC BY-SA 4.0";
|
|
604
|
+
};
|
|
605
|
+
readonly "wikipedia-zvezda": {
|
|
606
|
+
readonly title: "Zvezda (ISS module) (the infobox)";
|
|
607
|
+
readonly publisher: "Wikipedia";
|
|
608
|
+
readonly url: "https://en.wikipedia.org/wiki/Zvezda_(ISS_module)";
|
|
609
|
+
readonly date: "2026-11-11";
|
|
610
|
+
readonly read: "direct";
|
|
611
|
+
readonly licence: "CC BY-SA 4.0";
|
|
612
|
+
};
|
|
613
|
+
readonly "wikipedia-destiny": {
|
|
614
|
+
readonly title: "Destiny (ISS module) (the infobox)";
|
|
615
|
+
readonly publisher: "Wikipedia";
|
|
616
|
+
readonly url: "https://en.wikipedia.org/wiki/Destiny_(ISS_module)";
|
|
617
|
+
readonly date: "2026-11-11";
|
|
618
|
+
readonly read: "direct";
|
|
619
|
+
readonly licence: "CC BY-SA 4.0";
|
|
620
|
+
};
|
|
621
|
+
readonly "wikipedia-harmony": {
|
|
622
|
+
readonly title: "Harmony (ISS module) (the infobox)";
|
|
623
|
+
readonly publisher: "Wikipedia";
|
|
624
|
+
readonly url: "https://en.wikipedia.org/wiki/Harmony_(ISS_module)";
|
|
625
|
+
readonly date: "2026-11-11";
|
|
626
|
+
readonly read: "direct";
|
|
627
|
+
readonly licence: "CC BY-SA 4.0";
|
|
628
|
+
};
|
|
629
|
+
readonly "wikipedia-columbus": {
|
|
630
|
+
readonly title: "Columbus (ISS module) (the infobox)";
|
|
631
|
+
readonly publisher: "Wikipedia";
|
|
632
|
+
readonly url: "https://en.wikipedia.org/wiki/Columbus_(ISS_module)";
|
|
633
|
+
readonly date: "2026-11-11";
|
|
634
|
+
readonly read: "direct";
|
|
635
|
+
readonly licence: "CC BY-SA 4.0";
|
|
636
|
+
};
|
|
637
|
+
readonly "wikipedia-kibo": {
|
|
638
|
+
readonly title: "Kibo (ISS module) (the infobox and the parts' sections)";
|
|
639
|
+
readonly publisher: "Wikipedia";
|
|
640
|
+
readonly url: "https://en.wikipedia.org/wiki/Kibo_(ISS_module)";
|
|
641
|
+
readonly date: "2026-11-11";
|
|
642
|
+
readonly read: "direct";
|
|
643
|
+
readonly licence: "CC BY-SA 4.0";
|
|
644
|
+
};
|
|
645
|
+
readonly "wikipedia-truss": {
|
|
646
|
+
readonly title: "Integrated Truss Structure (the segment table and the solar array wings)";
|
|
647
|
+
readonly publisher: "Wikipedia";
|
|
648
|
+
readonly url: "https://en.wikipedia.org/wiki/Integrated_Truss_Structure";
|
|
649
|
+
readonly date: "2026-11-11";
|
|
650
|
+
readonly read: "direct";
|
|
651
|
+
readonly licence: "CC BY-SA 4.0";
|
|
652
|
+
};
|
|
653
|
+
readonly "wikipedia-quest": {
|
|
654
|
+
readonly title: "Quest Joint Airlock (the infobox)";
|
|
655
|
+
readonly publisher: "Wikipedia";
|
|
656
|
+
readonly url: "https://en.wikipedia.org/wiki/Quest_Joint_Airlock";
|
|
657
|
+
readonly date: "2026-11-11";
|
|
658
|
+
readonly read: "direct";
|
|
659
|
+
readonly licence: "CC BY-SA 4.0";
|
|
660
|
+
};
|
|
661
|
+
readonly "wikipedia-poisk": {
|
|
662
|
+
readonly title: "Poisk (ISS module) (the infobox)";
|
|
663
|
+
readonly publisher: "Wikipedia";
|
|
664
|
+
readonly url: "https://en.wikipedia.org/wiki/Poisk_(ISS_module)";
|
|
665
|
+
readonly date: "2026-11-11";
|
|
666
|
+
readonly read: "direct";
|
|
667
|
+
readonly licence: "CC BY-SA 4.0";
|
|
668
|
+
};
|
|
669
|
+
readonly "wikipedia-rassvet": {
|
|
670
|
+
readonly title: "Rassvet (ISS module) (the infobox)";
|
|
671
|
+
readonly publisher: "Wikipedia";
|
|
672
|
+
readonly url: "https://en.wikipedia.org/wiki/Rassvet_(ISS_module)";
|
|
673
|
+
readonly date: "2026-11-11";
|
|
674
|
+
readonly read: "direct";
|
|
675
|
+
readonly licence: "CC BY-SA 4.0";
|
|
676
|
+
};
|
|
677
|
+
readonly "wikipedia-tranquility": {
|
|
678
|
+
readonly title: "Tranquility (ISS module) (the infobox)";
|
|
679
|
+
readonly publisher: "Wikipedia";
|
|
680
|
+
readonly url: "https://en.wikipedia.org/wiki/Tranquility_(ISS_module)";
|
|
681
|
+
readonly date: "2026-11-11";
|
|
682
|
+
readonly read: "direct";
|
|
683
|
+
readonly licence: "CC BY-SA 4.0";
|
|
684
|
+
};
|
|
685
|
+
readonly "wikipedia-cupola": {
|
|
686
|
+
readonly title: "Cupola (ISS module) (the infobox)";
|
|
687
|
+
readonly publisher: "Wikipedia";
|
|
688
|
+
readonly url: "https://en.wikipedia.org/wiki/Cupola_(ISS_module)";
|
|
689
|
+
readonly date: "2026-11-11";
|
|
690
|
+
readonly read: "direct";
|
|
691
|
+
readonly licence: "CC BY-SA 4.0";
|
|
692
|
+
};
|
|
693
|
+
readonly "wikipedia-leonardo": {
|
|
694
|
+
readonly title: "Leonardo (ISS module) (the infobox)";
|
|
695
|
+
readonly publisher: "Wikipedia";
|
|
696
|
+
readonly url: "https://en.wikipedia.org/wiki/Leonardo_(ISS_module)";
|
|
697
|
+
readonly date: "2026-11-11";
|
|
698
|
+
readonly read: "direct";
|
|
699
|
+
readonly licence: "CC BY-SA 4.0";
|
|
700
|
+
};
|
|
541
701
|
readonly "wikipedia-discovery": {
|
|
542
702
|
readonly title: "Space Shuttle Discovery (the infobox)";
|
|
543
703
|
readonly publisher: "Wikipedia";
|
package/dist/data/sources.js
CHANGED
|
@@ -76,6 +76,26 @@ export const SOURCES = {
|
|
|
76
76
|
"wikipedia-jupiter-c": { title: "Jupiter-C (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Jupiter-C", date: "2026-11-02", read: "direct", licence: "CC BY-SA 4.0" },
|
|
77
77
|
"wikipedia-iss": { title: "International Space Station (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/International_Space_Station", date: "2026-11-02", read: "direct", licence: "CC BY-SA 4.0" },
|
|
78
78
|
"wikipedia-hubble": { title: "Hubble Space Telescope (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Hubble_Space_Telescope", date: "2026-11-02", read: "direct", licence: "CC BY-SA 4.0" },
|
|
79
|
+
"wikipedia-tiangong": { title: "Tiangong space station (the infobox and the module table)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Tiangong_space_station", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
80
|
+
"wikipedia-tianhe": { title: "Tianhe core module (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Tianhe_core_module", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
81
|
+
"wikipedia-wentian": { title: "Wentian module (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Wentian_module", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
82
|
+
"wikipedia-mengtian": { title: "Mengtian module (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Mengtian", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
83
|
+
"wikipedia-shenzhou": { title: "Shenzhou (spacecraft) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Shenzhou_(spacecraft)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
84
|
+
"wikipedia-tianzhou": { title: "Tianzhou (spacecraft) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Tianzhou_(spacecraft)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
85
|
+
"wikipedia-zarya": { title: "Zarya (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Zarya_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
86
|
+
"wikipedia-unity": { title: "Unity (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Unity_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
87
|
+
"wikipedia-zvezda": { title: "Zvezda (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Zvezda_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
88
|
+
"wikipedia-destiny": { title: "Destiny (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Destiny_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
89
|
+
"wikipedia-harmony": { title: "Harmony (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Harmony_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
90
|
+
"wikipedia-columbus": { title: "Columbus (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Columbus_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
91
|
+
"wikipedia-kibo": { title: "Kibo (ISS module) (the infobox and the parts' sections)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Kibo_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
92
|
+
"wikipedia-truss": { title: "Integrated Truss Structure (the segment table and the solar array wings)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Integrated_Truss_Structure", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
93
|
+
"wikipedia-quest": { title: "Quest Joint Airlock (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Quest_Joint_Airlock", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
94
|
+
"wikipedia-poisk": { title: "Poisk (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Poisk_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
95
|
+
"wikipedia-rassvet": { title: "Rassvet (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Rassvet_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
96
|
+
"wikipedia-tranquility": { title: "Tranquility (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Tranquility_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
97
|
+
"wikipedia-cupola": { title: "Cupola (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Cupola_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
98
|
+
"wikipedia-leonardo": { title: "Leonardo (ISS module) (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Leonardo_(ISS_module)", date: "2026-11-11", read: "direct", licence: "CC BY-SA 4.0" },
|
|
79
99
|
"wikipedia-discovery": { title: "Space Shuttle Discovery (the infobox)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Space_Shuttle_Discovery", date: "2026-11-02", read: "direct", licence: "CC BY-SA 4.0" },
|
|
80
100
|
"wikipedia-falcon-heavy": { title: "Falcon Heavy", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Falcon_Heavy", date: "2026-10-31", read: "direct", licence: "CC BY-SA 4.0" },
|
|
81
101
|
"wikipedia-flight-5": { title: "Starship flight test 5 (its flight timeline, read as raw wikitext)", publisher: "Wikipedia", url: "https://en.wikipedia.org/wiki/Starship_flight_test_5", date: "2026-11-02", read: "direct", licence: "CC BY-SA 4.0" },
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Figure, type Variant } from "./types.ts";
|
|
2
|
+
export declare const TIANHE_WIDE: Figure;
|
|
3
|
+
export declare const LAB_WIDE: Figure;
|
|
4
|
+
export declare const SHENZHOU_WIDE: Figure;
|
|
5
|
+
export declare const TIANZHOU_WIDE: Figure;
|
|
6
|
+
export declare const LAB_LONG: Figure;
|
|
7
|
+
export declare const SHENZHOU_LONG: Figure;
|
|
8
|
+
export declare const SHENZHOU_WINGS: Figure;
|
|
9
|
+
export declare const TIANZHOU_WINGS: Figure;
|
|
10
|
+
/** The laboratories' wings, tip to tip: "over 55 m" in their articles, drawn as 55.6 m, the station's sourced length. */
|
|
11
|
+
export declare const WING_SPAN: Figure;
|
|
12
|
+
export declare const TIANGONG_VARIANTS: readonly Variant[];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Tiangong, China's space station, as its article and its modules' articles give it: Tianhe, the core module, 16.6 m long and 4.2 m across with its docking node at its forward end; Wentian and Mengtian, the two
|
|
2
|
+
// laboratory modules, 17.9 m by 4.2 m, on the node's starboard and port sides; Shenzhou at the forward and nadir ports and Tianzhou at the aft. It stands on end here, Tianhe's axis up and its aft at the foot, as the ISS does.
|
|
3
|
+
import { blank } from "./types.js";
|
|
4
|
+
const S = "wikipedia-tiangong";
|
|
5
|
+
export const TIANHE_WIDE = { value: 4.2, source: "wikipedia-tianhe", note: "14 feet, its big cylinder." };
|
|
6
|
+
export const LAB_WIDE = { value: 4.2, source: "wikipedia-wentian", note: "14 feet." };
|
|
7
|
+
export const SHENZHOU_WIDE = { value: 2.8, source: "wikipedia-shenzhou" };
|
|
8
|
+
export const TIANZHOU_WIDE = { value: 3.35, source: "wikipedia-tianzhou", note: "11 feet." };
|
|
9
|
+
export const LAB_LONG = { value: 17.9, source: "wikipedia-wentian", note: "59 feet, its length: it lies out from the node, so it is its widest here, and its height here is its 4.2 m width." };
|
|
10
|
+
export const SHENZHOU_LONG = { value: 9.25, source: "wikipedia-shenzhou", note: "Its length: it lies out from the nadir port, so it is its widest here, and its height here is its wings' span." };
|
|
11
|
+
export const SHENZHOU_WINGS = { value: 17, source: "wikipedia-shenzhou", note: "Its two wings, tip to tip." };
|
|
12
|
+
export const TIANZHOU_WINGS = { value: 14.9, source: "wikipedia-tianzhou", note: "Its two wings, tip to tip: 49 feet." };
|
|
13
|
+
/** The laboratories' wings, tip to tip: "over 55 m" in their articles, drawn as 55.6 m, the station's sourced length. */
|
|
14
|
+
export const WING_SPAN = { value: 55.6, source: "wikipedia-wentian", note: "Each laboratory's two wings, tip to tip: its article says over 55 m, and 110 m² of cells each. Drawn at the station's sourced length." };
|
|
15
|
+
export const TIANGONG_VARIANTS = [
|
|
16
|
+
{
|
|
17
|
+
id: "tiangong",
|
|
18
|
+
rocket: "tiangong",
|
|
19
|
+
name: "Tiangong 天宮",
|
|
20
|
+
status: "flown",
|
|
21
|
+
firstWord: "First module",
|
|
22
|
+
firstFlight: { value: "2021-04-29", source: S, note: "Tianhe, on a Long March 5B. Wentian followed on 2022-07-24 and Mengtian on 2022-10-31." },
|
|
23
|
+
slots: ["tianhe", "hub", "shenzhou-forward", "tianzhou", "wentian", "mengtian", "tianhe-arrays", "wentian-arrays", "mengtian-arrays", "shenzhou-nadir"],
|
|
24
|
+
note: "w29572227's model, its flags and mark left out, in the painted look, one file a part, each module and craft at its own sourced size; this package's own plain shapes in the line looks, from the sourced lengths and widths. It stands with Tianhe's axis up and the laboratories across the front: height here is the laboratories' wings tip to tip, along that axis. The two Shenzhou and the Tianzhou are the model's visiting craft.",
|
|
25
|
+
facts: {
|
|
26
|
+
height: { value: 55.6, source: S, note: "182 feet, the length its article gives. Drawn as the laboratories' wings, tip to tip, along Tianhe's axis." },
|
|
27
|
+
diameter: { value: 39, source: S, note: "128 feet, the width its article gives: across the two laboratories." },
|
|
28
|
+
parts: {
|
|
29
|
+
tianhe: blank("Tianhe's body without its node: 12.2 m of the sourced 16.6 m, as the model divides them."),
|
|
30
|
+
hub: blank("Tianhe's docking node: 4.4 m of the sourced 16.6 m, as the model divides them."),
|
|
31
|
+
"shenzhou-forward": { value: 9.25, source: "wikipedia-shenzhou", note: "Its service, re-entry and orbital modules are 2.94 m, 2.5 m and 2.8 m." },
|
|
32
|
+
tianzhou: { value: 10.6, source: "wikipedia-tianzhou", note: "35 feet." },
|
|
33
|
+
wentian: blank("It lies out from the node: 17.9 m long (59 feet) and 4.2 m across, so its height here is its width, 4.2 m."),
|
|
34
|
+
mengtian: blank("It lies out from the node: 17.9 m long (59 feet) and 4.2 m across, so its height here is its width, 4.2 m."),
|
|
35
|
+
"tianhe-arrays": blank("Tianhe's two wings have no size in a source read here: they are the model's, at Tianhe's scale."),
|
|
36
|
+
"wentian-arrays": WING_SPAN,
|
|
37
|
+
"mengtian-arrays": WING_SPAN,
|
|
38
|
+
"shenzhou-nadir": blank("The same craft as at the forward port, 9.25 m long, lying out from the nadir port: its height here is its wings' span, 17 m."),
|
|
39
|
+
},
|
|
40
|
+
engines: {},
|
|
41
|
+
more: {
|
|
42
|
+
"tianhe-length": { value: 16.6, source: "wikipedia-tianhe", note: "54 feet, the core module with its node." },
|
|
43
|
+
mass: { value: "about 100,000 kg", source: S },
|
|
44
|
+
crew: { value: 3, source: S },
|
|
45
|
+
orbit: { value: "386 to 392 km, 41.47 degrees", source: S, note: "As the infobox gave it on the day it was read." },
|
|
46
|
+
"shenzhou-wings": SHENZHOU_WINGS,
|
|
47
|
+
"tianzhou-wings": TIANZHOU_WINGS,
|
|
48
|
+
"wentian-length": LAB_LONG,
|
|
49
|
+
"mengtian-length": { value: 17.9, source: "wikipedia-mengtian", note: "59 feet." },
|
|
50
|
+
"pressurised-volume": { value: 340, source: S, note: "Cubic metres." },
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
];
|
|
@@ -2,6 +2,11 @@ import { Group, Object3D } from "three";
|
|
|
2
2
|
import { type SkyShown } from "./solarGroups.ts";
|
|
3
3
|
/** Shows or hides the planets, the dwarf planets and the moons. The Earth under the craft stays. Belts and paths are the viewer's, because they also depend on how far the camera is. */
|
|
4
4
|
export declare function applySolarGroups(root: Object3D, groups: Pick<SkyShown, "planets" | "moons" | "dwarfs">): void;
|
|
5
|
+
/**
|
|
6
|
+
* Turns the Earth about its own axis by the time `seconds` of its own day (a sidereal day), and the cloud layer a little faster than the ground.
|
|
7
|
+
* Returns the ground's turn in degrees, kept under one turn.
|
|
8
|
+
*/
|
|
9
|
+
export declare function turnOrbit(group: Group, seconds: number): number;
|
|
5
10
|
/** Moves the Moon, the major moons and the sketch so they match `when`. The paths and belts were drawn around the Sun at the first instant, so the whole sketch shifts with the Earth. */
|
|
6
11
|
export declare function moveOrbit(group: Group, when: number): void;
|
|
7
12
|
/** The Earth under the craft, the Moon where it is today, and the stars behind both. `ready` runs when the Earth's picture has arrived. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// The compare page's Earth, its Moon, the major moons, and a star field. The craft stay at the origin, 400 km above the surface. Loaded only when a page asks for it.
|
|
2
2
|
import { BODIES, DWARF_IDS, heliocentric, PLANET_IDS } from "@johnmorrisdotca/wakusei-planets";
|
|
3
|
-
import { BufferAttribute, BufferGeometry, Group, InstancedMesh, LineLoop, LineBasicMaterial, Mesh, MeshBasicMaterial, Object3D, Points, PointsMaterial, SphereGeometry, SRGBColorSpace, TextureLoader } from "three";
|
|
3
|
+
import { BufferAttribute, BufferGeometry, Group, InstancedMesh, LineLoop, LineBasicMaterial, Mesh, MeshBasicMaterial, Object3D, Points, PointsMaterial, SphereGeometry, SRGBColorSpace, TextureLoader, Vector3 } from "three";
|
|
4
4
|
import { skyGroupOf } from "./solarGroups.js";
|
|
5
5
|
import { beltPlaces, bodyScene, earthCentre, majorMoons, moonScene, sceneOf } from "./solarPlace.js";
|
|
6
6
|
const STAR_R_M = 2e13;
|
|
@@ -143,12 +143,43 @@ export function applySolarGroups(root, groups) {
|
|
|
143
143
|
if (major)
|
|
144
144
|
major.visible = groups.moons;
|
|
145
145
|
}
|
|
146
|
+
/** How much faster the cloud layer goes round than the ground under it, as a fraction of the ground's turn. */
|
|
147
|
+
const CLOUD_DRIFT = 0.12;
|
|
148
|
+
const NEAR_SIDE = new Vector3(1, 0, 0);
|
|
149
|
+
const toEarth = new Vector3();
|
|
150
|
+
/** The Moon keeps its near side toward the Earth, so it is turned to face it wherever it stands. */
|
|
151
|
+
function faceEarth(moon) {
|
|
152
|
+
const [ex, ey, ez] = earthCentre();
|
|
153
|
+
toEarth.set(ex - moon.position.x, ey - moon.position.y, ez - moon.position.z);
|
|
154
|
+
if (toEarth.lengthSq() === 0)
|
|
155
|
+
return;
|
|
156
|
+
moon.quaternion.setFromUnitVectors(NEAR_SIDE, toEarth.normalize());
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Turns the Earth about its own axis by the time `seconds` of its own day (a sidereal day), and the cloud layer a little faster than the ground.
|
|
160
|
+
* Returns the ground's turn in degrees, kept under one turn.
|
|
161
|
+
*/
|
|
162
|
+
export function turnOrbit(group, seconds) {
|
|
163
|
+
const earth = group.getObjectByName("earth");
|
|
164
|
+
if (!earth)
|
|
165
|
+
return 0;
|
|
166
|
+
const angle = (seconds * 2 * Math.PI) / (Math.abs(BODIES.earth.rotationHours) * 3600) * (BODIES.earth.rotationHours < 0 ? -1 : 1);
|
|
167
|
+
earth.rotation.y += angle;
|
|
168
|
+
const clouds = earth.getObjectByName("earth-clouds");
|
|
169
|
+
if (clouds)
|
|
170
|
+
clouds.rotation.y += angle * CLOUD_DRIFT;
|
|
171
|
+
const moon = group.getObjectByName("moon");
|
|
172
|
+
if (moon)
|
|
173
|
+
faceEarth(moon);
|
|
174
|
+
return ((((earth.rotation.y * 180) / Math.PI) % 360) + 360) % 360;
|
|
175
|
+
}
|
|
146
176
|
/** Moves the Moon, the major moons and the sketch so they match `when`. The paths and belts were drawn around the Sun at the first instant, so the whole sketch shifts with the Earth. */
|
|
147
177
|
export function moveOrbit(group, when) {
|
|
148
178
|
const moon = group.getObjectByName("moon");
|
|
149
179
|
if (moon) {
|
|
150
180
|
const [x, y, z] = moonScene(when);
|
|
151
181
|
moon.position.set(x, y, z);
|
|
182
|
+
faceEarth(moon);
|
|
152
183
|
}
|
|
153
184
|
const moons = group.getObjectByName("major-moons");
|
|
154
185
|
if (moons instanceof InstancedMesh) {
|
|
@@ -193,6 +224,7 @@ export function orbitWorld(ready, when = Date.now()) {
|
|
|
193
224
|
const moon = new Mesh(new SphereGeometry(moonR, 48, 32), new MeshBasicMaterial({ color: "#c4bfb4" }));
|
|
194
225
|
moon.name = "moon";
|
|
195
226
|
moon.position.set(mx, my, mz);
|
|
227
|
+
faceEarth(moon);
|
|
196
228
|
const sketch = solarSketch(when);
|
|
197
229
|
const moons = moonMesh(when);
|
|
198
230
|
const planets = planetGroup(when);
|
|
@@ -210,6 +242,18 @@ export function orbitWorld(ready, when = Date.now()) {
|
|
|
210
242
|
ready();
|
|
211
243
|
});
|
|
212
244
|
};
|
|
245
|
+
// The cloud layer is its own shell a little above the ground, drawn from the cloud picture's brightness, so it can turn at its own pace.
|
|
246
|
+
const clouds = new Mesh(new SphereGeometry(earthR * 1.004, 96, 64), new MeshBasicMaterial({ color: "#ffffff", transparent: true, opacity: 0.8, depthWrite: false }));
|
|
247
|
+
clouds.name = "earth-clouds";
|
|
248
|
+
// hidden until its picture has arrived: without it the shell would be a flat white globe, and it stays out if the picture never loads
|
|
249
|
+
clouds.visible = false;
|
|
250
|
+
earth.add(clouds);
|
|
251
|
+
loader.load(new URL("clouds-1024.webp", base).href, (map) => {
|
|
252
|
+
const material = clouds.material;
|
|
253
|
+
material.alphaMap = map;
|
|
254
|
+
material.needsUpdate = true;
|
|
255
|
+
clouds.visible = true;
|
|
256
|
+
});
|
|
213
257
|
paint("day-2048.webp", earth);
|
|
214
258
|
paint("moon-2048.webp", moon);
|
|
215
259
|
return {
|
|
@@ -222,6 +266,7 @@ export function orbitWorld(ready, when = Date.now()) {
|
|
|
222
266
|
const list = Array.isArray(material) ? material : material ? [material] : [];
|
|
223
267
|
for (const one of list) {
|
|
224
268
|
one.map?.dispose();
|
|
269
|
+
one.alphaMap?.dispose();
|
|
225
270
|
one.dispose();
|
|
226
271
|
}
|
|
227
272
|
});
|
package/dist/element/scene.d.ts
CHANGED
|
@@ -203,6 +203,10 @@ export declare class RocketViewer {
|
|
|
203
203
|
private skyGroups;
|
|
204
204
|
private skyWhen;
|
|
205
205
|
private moveSky;
|
|
206
|
+
/** Seconds of the Earth's own day that pass in each real second; 0 holds it still. */
|
|
207
|
+
private worldRate;
|
|
208
|
+
private worldAt;
|
|
209
|
+
private turnWorld;
|
|
206
210
|
private paintSkyGroups;
|
|
207
211
|
constructor(holder: HTMLElement, options: ViewerOptions);
|
|
208
212
|
private homeAngle;
|
|
@@ -223,6 +227,8 @@ export declare class RocketViewer {
|
|
|
223
227
|
setPaths(on: boolean): void;
|
|
224
228
|
/** Shows or hides each sky group. The craft marks are the page's; this only remembers that choice on the canvas. */
|
|
225
229
|
setGroups(groups: SkyShown): void;
|
|
230
|
+
/** How fast the Earth under the craft turns: seconds of its own day for each real second. 0 holds it still, and so does a reader who prefers less motion. */
|
|
231
|
+
setWorldTurn(rate: number): void;
|
|
226
232
|
/** Puts the Moon, the major moons and the belts at `ms`. */
|
|
227
233
|
setWhen(ms: number): void;
|
|
228
234
|
private showSketch;
|
package/dist/element/scene.js
CHANGED
|
@@ -303,6 +303,10 @@ export class RocketViewer {
|
|
|
303
303
|
skyGroups = { planets: true, moons: true, dwarfs: true, belts: true, craft: true };
|
|
304
304
|
skyWhen = Date.now();
|
|
305
305
|
moveSky = null;
|
|
306
|
+
/** Seconds of the Earth's own day that pass in each real second; 0 holds it still. */
|
|
307
|
+
worldRate = 0;
|
|
308
|
+
worldAt = 0;
|
|
309
|
+
turnWorld = null;
|
|
306
310
|
paintSkyGroups = null;
|
|
307
311
|
constructor(holder, options) {
|
|
308
312
|
this.holder = holder;
|
|
@@ -467,6 +471,12 @@ export class RocketViewer {
|
|
|
467
471
|
this.showSketch();
|
|
468
472
|
this.wake();
|
|
469
473
|
}
|
|
474
|
+
/** How fast the Earth under the craft turns: seconds of its own day for each real second. 0 holds it still, and so does a reader who prefers less motion. */
|
|
475
|
+
setWorldTurn(rate) {
|
|
476
|
+
this.worldRate = Number.isFinite(rate) ? rate : 0;
|
|
477
|
+
this.worldAt = 0;
|
|
478
|
+
this.wake();
|
|
479
|
+
}
|
|
470
480
|
/** Puts the Moon, the major moons and the belts at `ms`. */
|
|
471
481
|
setWhen(ms) {
|
|
472
482
|
if (!Number.isFinite(ms))
|
|
@@ -503,7 +513,7 @@ export class RocketViewer {
|
|
|
503
513
|
if (this.orbitGone || this.scene.getObjectByName("orbit-world"))
|
|
504
514
|
return;
|
|
505
515
|
this.orbitGone = () => { };
|
|
506
|
-
void import("./orbitWorld.js").then(({ applySolarGroups, moveOrbit, orbitWorld }) => {
|
|
516
|
+
void import("./orbitWorld.js").then(({ applySolarGroups, moveOrbit, orbitWorld, turnOrbit }) => {
|
|
507
517
|
if (this.disposed)
|
|
508
518
|
return;
|
|
509
519
|
const world = orbitWorld(() => {
|
|
@@ -515,6 +525,7 @@ export class RocketViewer {
|
|
|
515
525
|
this.moonNode = world.group.getObjectByName("moon") ?? null;
|
|
516
526
|
this.orbitGone = world.dispose;
|
|
517
527
|
this.moveSky = (ms) => moveOrbit(world.group, ms);
|
|
528
|
+
this.turnWorld = (seconds) => turnOrbit(world.group, seconds);
|
|
518
529
|
this.paintSkyGroups = (groups) => applySolarGroups(world.group, groups);
|
|
519
530
|
this.paintSkyGroups(this.skyGroups);
|
|
520
531
|
this.canvas.dataset.globe = this.orbitOn ? "earth" : "off";
|
|
@@ -2903,6 +2914,15 @@ export class RocketViewer {
|
|
|
2903
2914
|
this.swarm?.step(now / 1000);
|
|
2904
2915
|
this.needsDraw = true;
|
|
2905
2916
|
}
|
|
2917
|
+
const worldTurning = this.orbitOn && this.turnWorld !== null && this.worldRate !== 0 && !this.options.reducedMotion;
|
|
2918
|
+
if (worldTurning && this.turnWorld && now - this.worldAt >= MOTION_GAP_MS) {
|
|
2919
|
+
// a gap longer than a few frames is the page being hidden or busy, not time the Earth should catch up on
|
|
2920
|
+
const seconds = this.worldAt === 0 ? MOTION_GAP_MS / 1000 : Math.min(0.1, (now - this.worldAt) / 1000);
|
|
2921
|
+
this.worldAt = now;
|
|
2922
|
+
this.canvas.dataset.worldTurn = this.turnWorld(seconds * this.worldRate).toFixed(3);
|
|
2923
|
+
this.needsDraw = true;
|
|
2924
|
+
}
|
|
2925
|
+
this.canvas.dataset.worldTurning = worldTurning ? "true" : "false";
|
|
2906
2926
|
const pulsing = this.hasPulse && this.lightsMode !== "off" && !this.options.reducedMotion;
|
|
2907
2927
|
if (pulsing && now - this.lampDrawn >= MOTION_GAP_MS) {
|
|
2908
2928
|
this.lampDrawn = now;
|
|
@@ -3007,7 +3027,7 @@ export class RocketViewer {
|
|
|
3007
3027
|
const drifting = this.drifting();
|
|
3008
3028
|
const jetting = this.thrusterChoice === "station-keeping" && !this.options.reducedMotion && awake || (this.thrusters?.puffCount() ?? 0) > 0;
|
|
3009
3029
|
const inspectingOn = this.inspectCount > 0 && this.inspectPlaying && this.progressAt === null && !this.options.reducedMotion;
|
|
3010
|
-
if (!this.frame && ((ambient && this.controls.autoRotate) || changed || this.pose || this.needsDraw || Math.abs(dA) > 1e-5 || flaming || flying || motioning || welding || pulsing || drifting || jetting || inspectingOn || this.ghost || this.paintFades.length > 0))
|
|
3030
|
+
if (!this.frame && ((ambient && this.controls.autoRotate) || changed || this.pose || this.needsDraw || Math.abs(dA) > 1e-5 || flaming || flying || motioning || welding || worldTurning || pulsing || drifting || jetting || inspectingOn || this.ghost || this.paintFades.length > 0))
|
|
3011
3031
|
this.frame = requestAnimationFrame(this.tick);
|
|
3012
3032
|
this.inTick = false;
|
|
3013
3033
|
};
|
package/dist/element.js
CHANGED
|
@@ -134,7 +134,7 @@ function whyNot(mode) {
|
|
|
134
134
|
* ```
|
|
135
135
|
*/
|
|
136
136
|
export class UchusenRocket extends HTMLBase {
|
|
137
|
-
static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label", "engines", "lights", "thrusters", "phase", "motion", "labels", "inspector", "beside", "captions", "scale-note", "off-screen", "scale", "progress", "float", "names", "leave", "docked", "edges", "world", "form"];
|
|
137
|
+
static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label", "engines", "lights", "thrusters", "phase", "motion", "labels", "inspector", "beside", "captions", "scale-note", "off-screen", "scale", "progress", "float", "names", "leave", "docked", "edges", "world", "world-turn", "form"];
|
|
138
138
|
descriptionValue = null;
|
|
139
139
|
picture = null;
|
|
140
140
|
holder = null;
|
|
@@ -361,6 +361,8 @@ export class UchusenRocket extends HTMLBase {
|
|
|
361
361
|
this.viewer?.setEdges(after === "open");
|
|
362
362
|
else if (name === "world")
|
|
363
363
|
this.viewer?.setOrbit(after === "earth");
|
|
364
|
+
else if (name === "world-turn")
|
|
365
|
+
this.viewer?.setWorldTurn(Number(after));
|
|
364
366
|
else if (name === "names")
|
|
365
367
|
this.viewer?.setNameLabels(after !== "off");
|
|
366
368
|
else if (name === "progress")
|
|
@@ -740,6 +742,10 @@ export class UchusenRocket extends HTMLBase {
|
|
|
740
742
|
this.dataset.slots = this.builtNow.parts.map((part) => part.slot).join(",");
|
|
741
743
|
this.dataset.form = this.descriptionNow().form ?? "stack";
|
|
742
744
|
this.dataset.detail = this.detailFor(this.descriptionNow());
|
|
745
|
+
if (CARRIERS.has(this.descriptionNow().rocket))
|
|
746
|
+
this.dataset.docked = this.dockedFine ? "full" : "coarse";
|
|
747
|
+
else
|
|
748
|
+
delete this.dataset.docked;
|
|
743
749
|
this.dataset.custom = String(this.builtNow.report.custom);
|
|
744
750
|
}
|
|
745
751
|
async applyRocket() {
|
|
@@ -802,10 +808,12 @@ export class UchusenRocket extends HTMLBase {
|
|
|
802
808
|
upgradeDocked() {
|
|
803
809
|
if (this.dockedFine)
|
|
804
810
|
return true;
|
|
805
|
-
if (!this.
|
|
811
|
+
if (!this.builtNow || !CARRIERS.has(this.descriptionNow().rocket))
|
|
806
812
|
return false;
|
|
807
813
|
const description = this.descriptionNow();
|
|
814
|
+
// A page that zooms the picture and leaves the camera where it is never brings the fine build in by distance, so the carrier is brought to its full build here too.
|
|
808
815
|
this.dockedFine = true;
|
|
816
|
+
this.fine = true;
|
|
809
817
|
try {
|
|
810
818
|
this.builtNow = build(description, { detail: "full", dockedDetail: "full", ...this.besideOptions(description), scale: this.sizeNow(description), ...this.dockedOption() });
|
|
811
819
|
}
|
|
@@ -978,6 +986,7 @@ export class UchusenRocket extends HTMLBase {
|
|
|
978
986
|
});
|
|
979
987
|
this.viewer = made;
|
|
980
988
|
made.setOrbit(this.getAttribute("world") === "earth");
|
|
989
|
+
made.setWorldTurn(Number(this.getAttribute("world-turn")));
|
|
981
990
|
if (this.pivotWanted)
|
|
982
991
|
made.setPivot(this.pivotWanted.at, this.pivotWanted.label);
|
|
983
992
|
if (this.pathsWanted !== null)
|