nx_tfl_decimate_gate.nx source
↩ module page · 30 lines · 1684 B
1// nx_tfl_decimate_gate.nx -- NXMSH2 TFL reducer gate
2import "nx_syscalls.nx"
3import "nx_gate_verdict.nx"
4import "nx_tissuefield_lib.nx"
5
6func td_atoi(s: *u8) -> i64 { var i: i64 = 0; var v: i64 = 0; while s[i] != (0 as u8) { let c: i64 = s[i] as i64; if c >= 48 { if c <= 57 { v = v * 10 + c - 48 } }; i = i + 1 }; return v }
7const TD_DEFAULT_IN: *u8 = "/volume1/homes/elderwesto/nishihost/buildroot/knowledge/gates/beach-skin-t375.nxmesh"
8const TD_DEFAULT_OUT: *u8 = "/tmp/nx_tfl_lod_default.nxmesh"
9const TD_DEFAULT_CELL: *u8 = "50"
10func main(argc: i64, argv: *i64) -> i64 {
11 let ctr: *i64 = sys_mmap(64) as *i64
12 gv_head("=== nx_tfl_decimate_gate -- NXMSH2 load/decimate/write ===" as *u8)
13 var inp: *u8 = TD_DEFAULT_IN
14 var outp: *u8 = TD_DEFAULT_OUT
15 var cells: *u8 = TD_DEFAULT_CELL
16 if argc >= 4 { inp = argv[1] as *u8; outp = argv[2] as *u8; cells = argv[3] as *u8 }
17 let M: *i64 = tfl_mesh_new()
18 let loaded: i64 = tfl_mesh_load(inp, M)
19 gv_check("input-loads" as *u8, loaded, ctr)
20 if loaded == 0 { sys_exit(gv_verdict("TFL-DECIMATE-GATE" as *u8, ctr, "load" as *u8)); return 1 }
21 let cell: i64 = td_atoi(cells)
22 let D: *i64 = tfl_mesh_decimate(M, cell)
23 gv_check("decimator-returns" as *u8, (D as i64) != 0, ctr)
24 if (D as i64) == 0 { sys_exit(gv_verdict("TFL-DECIMATE-GATE" as *u8, ctr, "decimate" as *u8)); return 1 }
25 gv_check("vertices-reduced" as *u8, D[TFL_M_NV] < M[TFL_M_NV], ctr)
26 gv_check("triangles-reduced" as *u8, D[TFL_M_NT] < M[TFL_M_NT], ctr)
27 let wrote: i64 = tfl_mesh_write(D, outp, 900, 880, 840)
28 gv_check("output-written" as *u8, wrote > 0, ctr)
29 sys_exit(gv_verdict("TFL-DECIMATE-GATE" as *u8, ctr, "complete" as *u8)); return 0
30}