code wiki / _hdl_build / nx_viz_geo_gate.nx

nx_viz_geo_gate.nx source

↩ module page · 55 lines · 2314 B

1// nx_viz_geo_gate.nx -- REFEREE for the geo-project layer. 2// equirect(0,0,720,360)=(360,180) equirect(-180,90)=(0,0) equirect(180,-90)=(720,360) 3// ortho(90,0,0,1000)=(1000,0) on limb ortho(180,0,0,1000) culled (return 0) ortho(0,0,0,1000) visible (return 1) 4// GREEN iff all. Sovereign: nx_viz_geo (-> nx_viz_trig). license_tier: ORIGINAL 5import "nx_viz_geo.nx" 6import "nx_syscalls.nx" 7import "nx_gate_verdict.nx" 8 9func g_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 10func g_row(name: *u8, ok: i64) -> i64 { 11 if ok == 1 { g_w(" PASS " as *u8) } 12 if ok != 1 { g_w(" FAIL " as *u8) } 13 g_w(name); g_w("\n" as *u8) 14 return ok 15} 16 17func main() -> i64 { 18 g_w("viz-geo gate (equirectangular + orthographic projections)\n" as *u8) 19 let p: *i64 = sys_mmap(64) as *i64 20 var pass: i64 = 0 21 22 vg_equirect(0, 0, 720, 360, p) 23 var t1: i64 = 0 24 if p[0] == 360 { if p[1] == 180 { t1 = 1 } } 25 pass = pass + g_row("T1 equirect(0,0) = centre (360,180)\x00" as *u8, t1) 26 27 var c1: i64 = 0 28 vg_equirect(0 - 180, 90, 720, 360, p) 29 if p[0] == 0 { if p[1] == 0 { c1 = 1 } } 30 var c2: i64 = 0 31 vg_equirect(180, 0 - 90, 720, 360, p) 32 if p[0] == 720 { if p[1] == 360 { c2 = 1 } } 33 var t2: i64 = 0 34 if c1 == 1 { if c2 == 1 { t2 = 1 } } 35 pass = pass + g_row("T2 equirect corners (0,0) and (720,360)\x00" as *u8, t2) 36 37 vg_ortho(90, 0, 0, 1000, p) 38 var t3: i64 = 0 39 if p[0] == 1000 { if p[1] == 0 { t3 = 1 } } 40 pass = pass + g_row("T3 ortho(90,0) = limb (1000,0)\x00" as *u8, t3) 41 42 var t4: i64 = 0 43 if vg_ortho(180, 0, 0, 1000, p) == 0 { if vg_ortho(0, 0, 0, 1000, p) == 1 { t4 = 1 } } 44 pass = pass + g_row("T4 ortho cull: far side hidden, near side shown\x00" as *u8, t4) 45 46 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 47 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 48 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 49 let ctr__dry: *i64 = gv_ctr() 50 ctr__dry[0] = pass 51 ctr__dry[1] = 4 52 let rc__dry: i64 = gv_verdict("VIZ-GEO-GATE" as *u8, ctr__dry, "4/4 (equirect + ortho projections, bits-up)" as *u8) 53 sys_exit(rc__dry) 54 return rc__dry 55}