nx_bvh_nearest_query_gate_t284.nx source
↩ module page · 21 lines · 1263 B
1import "nx_bvh_nearest_candidate_t284.nx"
2import "nx_gate_verdict.nx"
3func bq_run_test(ctr:*i64,b:*NxBvh,m:*NxMesh,stack:*i64,out:*f64,s:*f64,meta:*i64,x:i64,y:i64,z:i64,d:i64)->i64{
4 let rc:i64=nx_bvh_nearest_query(b,m,x,y,z,stack,b.n_nodes,out,4,s,8,meta,4)
5 gv_check_eq("query status" as *u8,rc,0,ctr)
6 gv_check_eq("known squared distance" as *u8,nx_f64_to_i64(out[3] as i64),d,ctr)
7 return 0
8}
9func main()->i64{
10 let ctr:*i64=gv_ctr();let m:*NxMesh=nx_mesh_make_cube(10,0)
11 let b:*NxBvh=nx_bvh_build(m)
12 let stack:*i64=sys_mmap(b.n_nodes*8) as *i64
13 let o:*f64=sys_mmap(32) as *f64;let s:*f64=sys_mmap(64) as *f64;let meta:*i64=sys_mmap(32) as *i64
14 bq_run_test(ctr,b,m,stack,o,s,meta,20,0,0,100)
15 bq_run_test(ctr,b,m,stack,o,s,meta,0,0,0,100)
16 bq_run_test(ctr,b,m,stack,o,s,meta,10,10,10,0)
17 bq_run_test(ctr,b,m,stack,o,s,meta,0-20,0-20,0-20,300)
18 gv_check_eq("short stack is explicit failure" as *u8,nx_bvh_nearest_query(b,m,0,0,0,stack,b.n_nodes-1,o,4,s,8,meta,4),0-2,ctr)
19 gv_check_eq("short result is explicit failure" as *u8,nx_bvh_nearest_query(b,m,0,0,0,stack,b.n_nodes,o,3,s,8,meta,4),0-2,ctr)
20 return gv_verdict("nx_bvh_nearest_query_gate_t284" as *u8,ctr,"known cube distances and workspace admission; immutable same-epoch mesh required" as *u8)
21}