wip(assembler): round L35 -- smooth passage walls without regular ribs (evaluator v21)
The shared passage carve took the minimum of piecewise-linear capsules (scallops at joins) and added wall relief on regular 8 m / 4 m octaves, which read as evenly spaced ribs. Interior sweep joins are now Catmull-Rom smoothed and the relief uses irregular rotated 43/29/19 m scales; the natural wobble remains. New axial ripple audit (0.125 m radius samples, 0.5-8 m periods): beaded control and L34 geometry fail, all 24 passage rows pass. FI mouth tread apron tapered. 30/30 determinism, 16/16 invariants, ring audits LOD0-8 pass; cost within noise. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
This commit is contained in:
1 parent
49e29fcd36
commit
ba017077d1
28 files changed
+1727
-17
No files matched your search
@@ -965,7 +965,32 @@ bool PlanResolvedLayoutPassagesV1(ResolvedLayoutSnapshotV3& layout,std::int32_t
|
||||
const double ledge=std::min<double>(ringRadius/4,
|
||||
static_cast<double>(cfg?std::max<std::int64_t>(0,
|
||||
cfg->cascadeLedgeSubvoxels):0));
|
||||
radius-=ledge*(0.5-0.5*std::cos(angle*steps));
|
||||
// Give each turn a seeded, shallow angular profile so the same cosine
|
||||
// scallop cannot repeat at full ledge depth on every revolution.
|
||||
const std::uint32_t controlCount=std::clamp(steps*2u,8u,
|
||||
segments/2u);
|
||||
const double coordinate=angle*controlCount
|
||||
/(2.0*3.14159265358979323846);
|
||||
const std::uint32_t control0=static_cast<std::uint32_t>(std::floor(coordinate));
|
||||
const std::uint32_t control1=(control0+1u)%controlCount;
|
||||
const double blend=coordinate-std::floor(coordinate);
|
||||
const auto controlValue=[&](std::uint32_t control)
|
||||
{
|
||||
const std::uint32_t salt=0x43415343u
|
||||
^(loopIndex*0x9e3779b9u)^(control*0x85ebca6bu);
|
||||
const std::uint32_t bits=static_cast<std::uint32_t>(PassageSeed(seed,
|
||||
upper.strateIndex,lower.strateIndex,connection,salt)>>40);
|
||||
return 2.0*static_cast<double>(bits)/16777215.0-1.0;
|
||||
};
|
||||
const double smooth=blend*blend*(3.0-2.0*blend);
|
||||
const double irregular=std::lerp(controlValue(control0),
|
||||
controlValue(control1),smooth);
|
||||
const std::uint32_t loopHash=static_cast<std::uint32_t>(PassageSeed(seed,
|
||||
upper.strateIndex,lower.strateIndex,connection,
|
||||
0x4c454447u+loopIndex)>>40);
|
||||
const double amplitude=0.60+0.40
|
||||
*static_cast<double>(loopHash)/16777215.0;
|
||||
radius-=ledge*amplitude*(0.24+0.10*irregular);
|
||||
}
|
||||
if(pathStyle!=1u&&anchoredIslandPassage&&passageAnchor)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user