nx_body_rest_frame_gate_t345.nx source
↩ module page · 29 lines · 3112 B
1import "nx_body_rest_frame_candidate_t345.nx"
2import "nx_gate_verdict.nx"
3func main()->i64{
4 let ctr:*i64=gv_ctr();gv_head("BODY-REST-FRAMES")
5 let parsed:*NxBufOwned=sys_mmap(NX_BO_BYTES) as *NxBufOwned;var size:i64=0;let raw:*u8=sys_read_file("/volume1/homes/elderwesto/nishihost/buildroot/knowledge/gates/rest-reference-t345.dat",&size)
6 let rc:i64=br_parse(raw,size,size*BR_ROW_BYTES,10000,parsed);let rows:*i64=parsed.buf as *i64;let count:i64=parsed.len/BR_ROW_BYTES
7 let root:*i64=sys_mmap(24) as *i64;root[1]=1;let ref:*i64=sys_mmap(24) as *i64;ref[2]=1
8 let scratch:*i64=sys_mmap(200) as *i64;let bind:*i64=sys_mmap(128) as *i64;let target:*i64=sys_mmap(128) as *i64;let delta:*i64=sys_mmap(128) as *i64;let normal:*i64=sys_mmap(72) as *i64;let work:*i64=sys_mmap(328) as *i64;let report:*i64=sys_mmap(16) as *i64
9 var i:i64=0;var failures:i64=0;var worst:i64=0
10 while i<count{var r:i64=brf_segment(rows,count,i,1000,root,ref,bind,scratch);if r==0{r=brf_delta(bind,bind,delta,normal,16384,work,report)};if r!=0{failures=failures+1}else{var k:i64=0;while k<16{var expected:i64=0;if k==0||k==5||k==10||k==15{expected=FBB_Q};let error:i64=vm_abs(delta[k]-expected);if error>worst{worst=error};k=k+1}};i=i+1}
11 gv_check("actual21 fullXYZ segment frames invert through shared affineowner",rc==0&&count==21&&failures==0,ctr)
12 gv_check("reference-to-self identity within admittedQ20 rounding",worst<=16,ctr)
13 let idx:i64=br_joint_index(rows,count,6);brf_segment(rows,count,idx,1000,root,ref,bind,scratch)
14 let start:i64=idx*6;let ox:i64=rows[start+3];let oy:i64=rows[start+4];let oz:i64=rows[start+5]
15 rows[start+3]=ox+100;rows[start+4]=oy+50;rows[start+5]=oz+80
16 let changed:i64=brf_segment(rows,count,idx,1000,root,ref,target,scratch);let transformed:i64=brf_delta(bind,target,delta,normal,16384,work,report)
17 gv_check("XYZ joint perturbation changes actual affine registration",changed==0&&transformed==0&&delta[4]!=0&&delta[6]!=0&&delta[5]!=FBB_Q,ctr)
18 rows[start+3]=ox;rows[start+4]=oy;rows[start+5]=oz
19 let parent:i64=rows[start+1];rows[start+1]=0;brf_segment(rows,count,idx,1000,root,ref,target,scratch)
20 gv_check("parent change changes segment origin andaxis",target[13]!=bind[13]&&target[5]!=bind[5],ctr);rows[start+1]=parent
21 let sentinel:i64=1234567;target[0]=sentinel;ref[0]=0;ref[1]=1;ref[2]=0
22 let parallel:i64=brf_segment(rows,count,idx,1000,root,ref,target,scratch)
23 gv_check("parallel roll reference refuses unchangedoutput",parallel!=0&&target[0]==sentinel,ctr)
24 ref[1]=0;ref[2]=1;rows[start+3]=rows[br_joint_index(rows,count,parent)*6+3];rows[start+4]=rows[br_joint_index(rows,count,parent)*6+4];rows[start+5]=rows[br_joint_index(rows,count,parent)*6+5]
25 gv_check("zero length segment refuses unchangedoutput",brf_segment(rows,count,idx,1000,root,ref,target,scratch)!=0&&target[0]==sentinel,ctr)
26 rows[start+3]=ox;rows[start+4]=oy;rows[start+5]=oz
27 gv_check("undeclared units refuse unchangedoutput",brf_segment(rows,count,idx,0,root,ref,target,scratch)!=0&&target[0]==sentinel,ctr)
28 return gv_verdict("BODY-REST-FRAMES",ctr,"rest frame math only; no anatomy or skin weight qualification")
29}