summaryrefslogtreecommitdiff
path: root/src/SomhairlesDream.Modeling
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-21 23:47:42 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-21 23:47:42 +0800
commit5d73943e584b1c0c0753dda85fbda34d27726986 (patch)
tree5126127692f3cd399345aae8ade5ec66dd247668 /src/SomhairlesDream.Modeling
parent7c3a0728570f84f5c7d5f396c5a5d5c11f5fb661 (diff)
downloadsomhairles-dream-fsharp-5d73943e584b1c0c0753dda85fbda34d27726986.tar.gz
feat(ship): HNX-02 Copernicus rework — continuous hull, few-large-element scale, Draco pipeline, side-on framing
Diffstat (limited to 'src/SomhairlesDream.Modeling')
-rw-r--r--src/SomhairlesDream.Modeling/Definitions.fs102
1 files changed, 40 insertions, 62 deletions
diff --git a/src/SomhairlesDream.Modeling/Definitions.fs b/src/SomhairlesDream.Modeling/Definitions.fs
index e1d2739..44e1998 100644
--- a/src/SomhairlesDream.Modeling/Definitions.fs
+++ b/src/SomhairlesDream.Modeling/Definitions.fs
@@ -92,87 +92,65 @@ module Design =
ObjectIds = prior (prior (prior (prior (prior (prior bus booms) rtgs) hga) instruments) mast) [||]
Changes = liveryChanges } |]
- // HNX-01 crewed interstellar starship (Concept A "Keel"): fusion-torch
- // study with a spin-gravity habitat torus, water-shadow radiation
- // shield and an axial keel separating crew from the reactor section.
- // Display-scale visual research; no mass/thrust/shielding closure is
- // claimed — the ship.py module header lists the deliberately open
- // engineering problems.
+ // HNX-02 "Copernicus-class" crewed interplanetary transfer vehicle:
+ // nuclear-thermal propulsion stage, spin-gravity centrifuge ring,
+ // water-wall radiation shielding, Whipple MMOD shielding, and an
+ // Orion-class shuttle docked as the scale reference. Built from
+ // procedural engineering structures (trusses, pressure vessels, bell
+ // nozzles), not stacked primitives. Display-scale visual research;
+ // no mass/thrust/shielding closure is claimed.
let shipSteps : DesignStep array =
let keel =
- [| "starship.keel.spine"; "starship.nose.cone"; "starship.dock.ring" |]
+ [| "hnx02.hull.core"; "hnx02.spine.truss"; "hnx02.node.forward" |]
let hab =
- [| "starship.hab.torus"; "starship.hub.core"
- "starship.spoke.00"; "starship.spoke.01"; "starship.spoke.02"
- "starship.spoke.03"; "starship.spoke.04"; "starship.spoke.05" |]
+ [| "hnx02.hab.a"; "hnx02.hab.b"; "hnx02.hab.whipple" |]
let radiation =
- [| "starship.shadow.collar"; "starship.storm.cellar" |]
+ [| "hnx02.rad.waterwall"; "hnx02.centrifuge.ring" |]
let reactor =
- [| "starship.core.pressure"; "starship.core.shield.plug"
- "starship.nozzle.magnetic"
- "starship.radiator.00"; "starship.radiator.01"; "starship.radiator.02"
- "starship.radiator.03"; "starship.radiator.04"; "starship.radiator.05" |]
+ [| "hnx02.prop.tank"; "hnx02.reactor.core"; "hnx02.thrust.cone"
+ "hnx02.nozzle.cluster" |]
let power =
- [| "starship.power.truss"; "starship.capacitor.ring"
- "starship.comm.dish"; "starship.comm.feed" |]
+ [| "hnx02.power.solar"; "hnx02.power.radiator" |]
let cabin =
- [| "starship.window.00"; "starship.window.01"; "starship.window.02"
- "starship.window.03"
- "starship.airlock.ring"; "starship.airlock.tunnel"
- "starship.cargo.pod.00"; "starship.cargo.pod.01" |]
+ [| "hnx02.cabin.airlock"; "hnx02.shuttle.orion" |]
+ let livery =
+ [| "hnx02.detail.greeble"; "hnx02.detail.antenna" |]
let prior (prefix: string array) (current: string array) =
Array.append prefix current
let keelChanges =
- [| { ObjectId = "starship.keel.spine"; Kind = "add"; Summary = "Add axial keel spine from bow to nozzle bay" }
- { ObjectId = "starship.nose.cone"; Kind = "add"; Summary = "Add forward nose cone" }
- { ObjectId = "starship.dock.ring"; Kind = "add"; Summary = "Add forward docking ring" } |]
+ [| { ObjectId = "hnx02.hull.core"; Kind = "add"; Summary = "Add continuous 16 m pressure hull with viewport bands and ring frames" }
+ { ObjectId = "hnx02.spine.truss"; Kind = "add"; Summary = "Add outrigger trusses with utility conduits and equipment rows" }
+ { ObjectId = "hnx02.node.forward"; Kind = "add"; Summary = "Add five-port forward docking node" } |]
let habChanges =
- Array.append
- [| { ObjectId = "starship.hab.torus"; Kind = "add"; Summary = "Add rotating spin-gravity habitat torus" }
- { ObjectId = "starship.hub.core"; Kind = "add"; Summary = "Add zero-g hub with bearing core" } |]
- (Array.init 6 (fun index ->
- { ObjectId = sprintf "starship.spoke.%02d" index; Kind = "add"; Summary = "Add pressurized transfer spoke" }))
+ [| { ObjectId = "hnx02.hab.a"; Kind = "add"; Summary = "Add forward habitat module with viewport rows" }
+ { ObjectId = "hnx02.hab.b"; Kind = "add"; Summary = "Add aft habitat module" }
+ { ObjectId = "hnx02.hab.whipple"; Kind = "add"; Summary = "Add Whipple MMOD shield panels" } |]
let radiationChanges =
- [| { ObjectId = "starship.shadow.collar"; Kind = "add"; Summary = "Add water-shadow radiation collar" }
- { ObjectId = "starship.storm.cellar"; Kind = "add"; Summary = "Add storm cellar shelter volume" } |]
+ [| { ObjectId = "hnx02.rad.waterwall"; Kind = "add"; Summary = "Add water-wall radiation shield tanks" }
+ { ObjectId = "hnx02.centrifuge.ring"; Kind = "add"; Summary = "Add spin-gravity centrifuge ring with crew cars" } |]
let reactorChanges =
- Array.append
- [| { ObjectId = "starship.core.pressure"; Kind = "add"; Summary = "Add fusion core pressure vessel" }
- { ObjectId = "starship.core.shield.plug"; Kind = "add"; Summary = "Add reactor shield plug" }
- { ObjectId = "starship.nozzle.magnetic"; Kind = "add"; Summary = "Add magnetic exhaust nozzle" } |]
- (Array.init 6 (fun index ->
- { ObjectId = sprintf "starship.radiator.%02d" index; Kind = "add"; Summary = "Add waste-heat radiator panel" }))
+ [| { ObjectId = "hnx02.prop.tank"; Kind = "add"; Summary = "Add cryogenic propellant tanks with MLI blankets" }
+ { ObjectId = "hnx02.reactor.core"; Kind = "add"; Summary = "Add reactor core with control drums" }
+ { ObjectId = "hnx02.thrust.cone"; Kind = "add"; Summary = "Add thrust structure and shadow shield" }
+ { ObjectId = "hnx02.nozzle.cluster"; Kind = "add"; Summary = "Add nuclear-thermal engine cluster" } |]
let powerChanges =
- [| { ObjectId = "starship.power.truss"; Kind = "add"; Summary = "Add power conditioning truss" }
- { ObjectId = "starship.capacitor.ring"; Kind = "add"; Summary = "Add pulsed-power capacitor hoop" }
- { ObjectId = "starship.comm.dish"; Kind = "add"; Summary = "Add high-gain communication dish" }
- { ObjectId = "starship.comm.feed"; Kind = "add"; Summary = "Add communication feed horn" } |]
+ [| { ObjectId = "hnx02.power.solar"; Kind = "add"; Summary = "Add deployable solar arrays" }
+ { ObjectId = "hnx02.power.radiator"; Kind = "add"; Summary = "Add finned heat-rejection radiators" } |]
let cabinChanges =
- Array.append
- (Array.init 4 (fun index ->
- { ObjectId = sprintf "starship.window.%02d" index; Kind = "add"; Summary = "Add habitat observation window" }))
- [| { ObjectId = "starship.airlock.ring"; Kind = "add"; Summary = "Add forward airlock ring" }
- { ObjectId = "starship.airlock.tunnel"; Kind = "add"; Summary = "Add pressurized airlock tunnel" }
- { ObjectId = "starship.cargo.pod.00"; Kind = "add"; Summary = "Add port cargo pod" }
- { ObjectId = "starship.cargo.pod.01"; Kind = "add"; Summary = "Add starboard cargo pod" } |]
+ [| { ObjectId = "hnx02.cabin.airlock"; Kind = "add"; Summary = "Add EVA airlock with external hatch" }
+ { ObjectId = "hnx02.shuttle.orion"; Kind = "add"; Summary = "Add docked Orion-class crew shuttle" } |]
let liveryChanges =
- [| { ObjectId = "starship.keel.spine"; Kind = "update"; Summary = "Livery pass: bone-white hull structure" }
- { ObjectId = "starship.hab.torus"; Kind = "update"; Summary = "Livery pass: habitat ring bone finish" }
- { ObjectId = "starship.shadow.collar"; Kind = "update"; Summary = "Livery pass: ceramic shield darkening" }
- { ObjectId = "starship.storm.cellar"; Kind = "update"; Summary = "Livery pass: ceramic cellar finish" }
- { ObjectId = "starship.dock.ring"; Kind = "update"; Summary = "Livery pass: amber accent on dock ring" }
- { ObjectId = "starship.capacitor.ring"; Kind = "update"; Summary = "Livery pass: amber capacitor hoop" }
- { ObjectId = "starship.window.00"; Kind = "update"; Summary = "Livery pass: glass glazing" }
- { ObjectId = "starship.nozzle.magnetic"; Kind = "update"; Summary = "Livery pass: nozzle coil graphite" } |]
+ [| { ObjectId = "hnx02.detail.greeble"; Kind = "add"; Summary = "Add equipment rows, cable looms and navigation lights" }
+ { ObjectId = "hnx02.detail.antenna"; Kind = "add"; Summary = "Add high-gain communication antennas" } |]
[| { StepId = "ship-01-keel"; Index = 0; ObjectIds = keel; Changes = keelChanges }
- { StepId = "ship-02-hab"; Index = 1; ObjectIds = Array.append keel hab; Changes = habChanges }
- { StepId = "ship-03-radiation"; Index = 2; ObjectIds = Array.append (Array.append keel hab) radiation; Changes = radiationChanges }
- { StepId = "ship-04-reactor"; Index = 3; ObjectIds = Array.append (Array.append (Array.append keel hab) radiation) reactor; Changes = reactorChanges }
- { StepId = "ship-05-power"; Index = 4; ObjectIds = Array.append (Array.append (Array.append (Array.append keel hab) radiation) reactor) power; Changes = powerChanges }
- { StepId = "ship-06-cabin"; Index = 5; ObjectIds = Array.append (Array.append (Array.append (Array.append (Array.append keel hab) radiation) reactor) power) cabin; Changes = cabinChanges }
- { StepId = "ship-07-livery"; Index = 6; ObjectIds = Array.append (Array.append (Array.append (Array.append (Array.append (Array.append keel hab) radiation) reactor) power) cabin) [||]; Changes = liveryChanges } |]
+ { StepId = "ship-02-hab"; Index = 1; ObjectIds = prior keel hab; Changes = habChanges }
+ { StepId = "ship-03-radiation"; Index = 2; ObjectIds = prior (prior keel hab) radiation; Changes = radiationChanges }
+ { StepId = "ship-04-reactor"; Index = 3; ObjectIds = prior (prior (prior keel hab) radiation) reactor; Changes = reactorChanges }
+ { StepId = "ship-05-power"; Index = 4; ObjectIds = prior (prior (prior (prior keel hab) radiation) reactor) power; Changes = powerChanges }
+ { StepId = "ship-06-cabin"; Index = 5; ObjectIds = prior (prior (prior (prior (prior keel hab) radiation) reactor) power) cabin; Changes = cabinChanges }
+ { StepId = "ship-07-livery"; Index = 6; ObjectIds = prior (prior (prior (prior (prior (prior keel hab) radiation) reactor) power) cabin) livery; Changes = liveryChanges } |]
let forProject (projectId: string) : DesignStep array =
if projectId.StartsWith("probe-") then probeSteps