wip: cave planner route support fixed (L134 design 3); clearance at edge joints open
Arrival edge floor aligned to the passage mouth, 0.75 m backbone floor-support budget, anchors on the planned floor: 0 unsupported, 0 grade failures. Open: 196/50,967 capsule samples blocked where a higher descending edge's floor backing meets the next edge (route-edge-6/7). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
75c6ad251d
commit
379093401e
8 files changed
+102
-54
No files matched your search
@@ -2048,6 +2048,8 @@ bool PlanResolvedCavernNetworkV1(const ResolvedLayoutSnapshotV3& layout,
|
||||
||settings.maximumRoomRadiusMicrometres>100000000
|
||||
||settings.destinationRadiusMicrometres<settings.maximumRoomRadiusMicrometres
|
||||
||settings.destinationRadiusMicrometres>100000000
|
||||
||settings.floorSupportDepthMicrometres<250000
|
||||
||settings.floorSupportDepthMicrometres>2000000
|
||||
||settings.maximumTunnelLengthMicrometres<=0
|
||||
||settings.minimumTunnelRadiusMicrometres<0
|
||||
||settings.maximumTunnelRadiusMicrometres<settings.minimumTunnelRadiusMicrometres
|
||||
@@ -2081,7 +2083,6 @@ bool PlanResolvedCavernNetworkV1(const ResolvedLayoutSnapshotV3& layout,
|
||||
constexpr std::int64_t MinimumBoreHeight=2200000;
|
||||
constexpr std::int64_t PlannedBoreHeight=4500000;
|
||||
constexpr std::int64_t MouthOverlap=3000000;
|
||||
constexpr std::int64_t MouthFloorOffset=750000;
|
||||
constexpr std::int64_t MaximumBoreRadius=10000000;
|
||||
constexpr std::int64_t MaximumWalkGradeDenominator=5; // 1:5 = 11.31 degrees.
|
||||
const auto integerSqrt=[](std::uint64_t value)
|
||||
@@ -2113,7 +2114,6 @@ bool PlanResolvedCavernNetworkV1(const ResolvedLayoutSnapshotV3& layout,
|
||||
for(std::size_t axis=0;axis<3;++axis)
|
||||
point[axis]=qToMicrometres(lowerSide?passage.lowerMouthSubvoxels[axis]
|
||||
:passage.upperMouthSubvoxels[axis]);
|
||||
point[2]-=MouthFloorOffset;
|
||||
if(passage.controlPoints.size()<2)return false;
|
||||
const std::size_t mouthIndex=lowerSide
|
||||
?std::min(passage.lowerMouthControlIndex,passage.controlPoints.size()-1):0;
|
||||
@@ -2381,7 +2381,7 @@ bool PlanResolvedCavernNetworkV1(const ResolvedLayoutSnapshotV3& layout,
|
||||
edge.endRoomStableId=componentRoomId(endNode);edge.strateIndex=strateIndex;
|
||||
edge.boreRadiusMicrometres=boreRadius;
|
||||
edge.boreHeightMicrometres=std::max(PlannedBoreHeight,MinimumBoreHeight);
|
||||
edge.floorSupportDepthMicrometres=0;
|
||||
edge.floorSupportDepthMicrometres=settings.floorSupportDepthMicrometres;
|
||||
edge.smoothWidthMicrometres=smooth;
|
||||
edge.irregularityAmplitudeMicrometres=irregularity;
|
||||
edge.irregularityWavelengthMicrometres=settings.irregularityWavelengthMicrometres;
|
||||
@@ -2447,12 +2447,17 @@ bool PlanResolvedCavernNetworkV1(const ResolvedLayoutSnapshotV3& layout,
|
||||
makeCompound(branch,false,rooms);
|
||||
const std::string branchEdgeId="tunnel-network/strate-"
|
||||
+std::to_string(strateIndex)+"/side-edge-"+std::to_string(branchCount);
|
||||
ResolvedCavernEdgeV1 branchEdge;
|
||||
if(settings.tunnelsFlowTowardOrigin)
|
||||
edges.push_back(makeEdge(branchEdgeId,componentRoomId(branch),
|
||||
branch.point,parent,selectedBoreRadius(branchEdgeId)));
|
||||
branchEdge=makeEdge(branchEdgeId,componentRoomId(branch),
|
||||
branch.point,parent,selectedBoreRadius(branchEdgeId));
|
||||
else
|
||||
edges.push_back(makeEdge(branchEdgeId,componentRoomId(parent),
|
||||
parent.point,branch,selectedBoreRadius(branchEdgeId)));
|
||||
branchEdge=makeEdge(branchEdgeId,componentRoomId(parent),
|
||||
parent.point,branch,selectedBoreRadius(branchEdgeId));
|
||||
// Side branches retain their cave floor SDF, but they do not cap the
|
||||
// descending backbone when their tubes overlap it near a junction.
|
||||
branchEdge.floorSupportDepthMicrometres=0;
|
||||
edges.push_back(std::move(branchEdge));
|
||||
++branchCount;
|
||||
}
|
||||
if(nodes.empty()||rooms.empty()||edges.empty())
|
||||
|
||||
Reference in new issue
Block a user