nx_phys3d_toi_gate.nx
buildroot/runtime/nx_phys3d_toi_gate.nx
about
nx_phys3d_toi_gate.nx -- PG26: CAN A FAST MOVER EVER END A TICK INSIDE A WALL? (the 2D sweep tooth lifted to 3D)
SUBJECT: nx_phys3d.ph_toi through ph_step (in-process). The rung's done-rule in its own words: a 400-per-tick
mover stops AT a 4-unit wall, lifted to 3D, and a fast mover can never end a tick inside. Every tooth reads the
engine's own positions; the overlap oracle is ph_max_overlap. The neg-control switches CCD OFF and must TUNNEL --
it proves the fixture reaches the condition and that the advancement, not the wall, is doing the stopping.
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_phys3d.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 10 | const TG_WALL_X: i64 = 20000 // fx256 (78 m) |
| 11 | const TG_WALL_HX: i64 = 512 // 4-unit wall: half-thickness 2 units |
| 12 | const TG_WALL_HY: i64 = 4096 |
| 13 | const TG_WALL_HZ: i64 = 4096 |
| 14 | const TG_FLOOR_Y: i64 = 0 - 512 // top face at -256, so a unit sphere at y=0 rests on it |
| 15 | const TG_FLOOR_HX: i64 = 60000 |
| 16 | const TG_FLOOR_HY: i64 = 256 |
| 17 | const TG_FLOOR_HZ: i64 = 8192 |
| 18 | const TG_R: i64 = 256 // the mover: a unit sphere |
| 19 | const TG_SPEED: i64 = 400 // pos units per tick (400 > r: a FAST mover) |
| 20 | const TG_START_GAP: i64 = 200 // it starts 200 units short of the wall face: one discrete step tunnels |
| 21 | const TG_TICKS: i64 = 12 |
| 22 | const TG_SPH_X: i64 = 30000 |
| 23 | const TG_SPH_R: i64 = 512 |
| 24 | const TG_OBL_VX: i64 = 300 |
| 25 | const TG_OBL_VZ: i64 = 200 |
| 26 | const TG_INVM: i64 = 256 |
| 27 | const TG_REST: i64 = 0 |
| 28 | const TG_FRIC: i64 = 64 |
functions
| 30 | func tg_world(add_sphere: i64) -> i64 |
| 38 | func tg_face() -> i64 { return TG_WALL_X - TG_WALL_HX } called by 1: main |
| 40 | func main() -> i64 |