code wiki / (root) / nx_bvh_nearest_query_gate_t284.nx

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}