proto: liminal pass 2 - hills to the horizon, swept road over a cloud floor, pillar grid (L142)

Captures stream LOD0-8 (hills repeat at 80 m to the horizon). Road: cubic swept solid deck, 376.8 m, 8 m wide, max
12.06 deg, 17 supports, cloud floor ~45 m below; walk audit 0 blocked/unsupported, 300 m negative control fails as
expected. 15x15 identical pillar grid at 76 m. Owner canonical hashes unchanged; fast tier, Clang/GCC green.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
Fr0zkaandClaude Opus 5.5 committed 2026-11-01 09:31:56 +01:00
1 parent 9c6d261d01
commit 6cd9e4da76
17 files changed
+1129 -98

No files matched your search

+36
View File
@@ -3535,6 +3535,7 @@ private:
{
const VoxelForgeCore::ResolvedLayoutStampV1* record=nullptr;
std::array<float,3> positionVoxels{},halfExtentsVoxels{};
std::array<std::array<float,3>,2> sweepEndpointsVoxels{};
float smoothWidthVoxels=0.0f;
float irregularityAmplitudeVoxels=0.0f;
float irregularityWavelengthVoxels=0.0f;
@@ -3700,9 +3701,15 @@ private:
StampSpatialBounds.push_back(bound);
FStampRuntime runtime;runtime.record=&stamp;
for(std::size_t axis=0;axis<3;++axis)
{
runtime.positionVoxels[axis]=static_cast<float>(
static_cast<double>(stamp.positionMicrometres[axis])
/Owner->CoreVoxelSizeMicrons);
for(std::size_t endpoint=0;endpoint<2;++endpoint)
runtime.sweepEndpointsVoxels[endpoint][axis]=static_cast<float>(
static_cast<double>(stamp.sweepEndpointsMicrometres[endpoint][axis])
/Owner->CoreVoxelSizeMicrons);
}
const std::size_t xAxis=stamp.yawQuarterTurns%2?1:0;
const std::size_t yAxis=stamp.yawQuarterTurns%2?0:1;
runtime.halfExtentsVoxels={
@@ -7152,6 +7159,35 @@ private:
std::min(0.35f,std::min({stamp.halfExtentsVoxels[0],
stamp.halfExtentsVoxels[1],stamp.halfExtentsVoxels[2]})*0.15f));
break;
case VoxelForgeCore::ResolvedSdfStampKindV1::fillSweptDeckSegment:
{
std::array<float,3> tangent{},side{},up{},delta{};
float lengthSquared=0.0f,horizontalSquared=0.0f;
for(std::size_t axis=0;axis<3;++axis)
{
delta[axis]=stamp.sweepEndpointsVoxels[1][axis]
-stamp.sweepEndpointsVoxels[0][axis];
lengthSquared+=delta[axis]*delta[axis];
if(axis<2)horizontalSquared+=delta[axis]*delta[axis];
}
const float segmentLength=std::sqrt(lengthSquared);
const float horizontalLength=std::sqrt(horizontalSquared);
if(!(segmentLength>1.0e-5f&&horizontalLength>1.0e-5f))
return std::numeric_limits<float>::infinity();
for(std::size_t axis=0;axis<3;++axis)tangent[axis]=delta[axis]/segmentLength;
side={-delta[1]/horizontalLength,delta[0]/horizontalLength,0.0f};
up={-tangent[2]*side[1],tangent[2]*side[0],
tangent[0]*side[1]-tangent[1]*side[0]};
const std::array<float,3> offset={
x-stamp.positionVoxels[0],y-stamp.positionVoxels[1],z-stamp.positionVoxels[2]};
const auto dot=[&](const std::array<float,3>& axis)
{return offset[0]*axis[0]+offset[1]*axis[1]+offset[2]*axis[2];};
const float rounded=std::min(0.35f,
std::min(stamp.halfExtentsVoxels[1],stamp.halfExtentsVoxels[2])*0.15f);
distance=StampRoundedBoxSdf(dot(tangent),dot(side),dot(up),
stamp.halfExtentsVoxels,rounded);
break;
}
default:return std::numeric_limits<float>::infinity();
}
if(stamp.irregularityAmplitudeVoxels>0.0f)