code wiki / (root) / nx_surface_anchor_gate_t140.nx

nx_surface_anchor_gate_t140.nx source

↩ module page · 57 lines · 7428 B

1import "nx_syscalls.nx" 2import "nx_nxa_surface_anchor_t140.nx" 3func sa_put(s:*u8)->i64{var n:i64=0;while s[n]!=0{n=n+1};return sys_write(1,s,n)} 4func sa_num(x:i64)->i64{let p:*u8=sys_mmap(32) as *u8;if (p as i64)<=0{return -1};var n:i64=x;var i:i64=31;if n<0{sa_put("-");n=0-n};p[i]=0;i=i-1;if n==0{p[i]=48;i=i-1};while n>0{p[i]=(48+n%10) as u8;n=n/10;i=i-1};sa_put(((p as i64)+i+1) as *u8);return sys_munmap(p,32)} 5func sa_check(ok:i64,name:*u8,c:*i64)->i64{c[0]=c[0]+1;if ok==1{sa_put("PASS ")}else{sa_put("FAIL ");c[1]=c[1]+1};sa_put(name);sa_put(" 6");return ok} 7func main(argc:i64,argv:*i64)->i64{ 8 if argc!=2{return 2};let fd:i64=sys_openat_rd(argv[1] as *u8);if fd<0{return 3};let n:i64=sys_lseek(fd,0,2);if n<=0{sys_close(fd);return 3};if sys_lseek(fd,0,0)<0{sys_close(fd);return 3} 9 let b:*u8=sys_mmap(n) as *u8;if (b as i64)<=0{sys_close(fd);return 3};var got:i64=0;while got<n{let r:i64=sys_read(fd,((b as i64)+got) as *u8,n-got);if r<=0{sys_close(fd);sys_munmap(b,n);return 3};got=got+r};if sys_close(fd)<0{sys_munmap(b,n);return 3} 10 let mem:*i64=sys_mmap(512) as *i64;if (mem as i64)<=0{sys_munmap(b,n);return 3};let out:*i64=mem;let work:*i64=((mem as i64)+64) as *i64;let c:*i64=((mem as i64)+192) as *i64;let p:*i64=((mem as i64)+224) as *i64;let idx:*i64=((mem as i64)+304) as *i64;let r:*i64=((mem as i64)+368) as *i64;c[0]=0;c[1]=0 11 sa_check(nsa_ratio_cmp(1,3,2,5)==-1,"fraction order without cross product",c);sa_check(nsa_ratio_cmp(-1,3,-2,5)==1,"negative fraction order",c) 12 sa_check(nsa_ratio_cmp(9223372036854775806,9223372036854775807,9223372036854775805,9223372036854775806)==1,"near i64 boundary exact order",c) 13 sa_check(nsa_ratio_cmp(2,6,1,3)==0,"equivalent rational identity",c) 14 p[0]=0;p[1]=0;p[2]=0;p[3]=10;p[4]=10;p[5]=0;p[6]=0;p[7]=20;p[8]=10;idx[0]=0;idx[1]=1;idx[2]=2 15 sa_check(nsa_triangle_y_v1(p,idx,0,2,2,r)==0&&r[0]==3&&r[1]==1&&r[2]==1&&r[3]==5&&r[4]==30,"exact triangle barycentric and depth numerator",c) 16 sa_check(nsa_triangle_y_v1(p,idx,0,20,20,r)==NSA_E_MISS,"outside triangle refused",c) 17 idx[1]=2;idx[2]=1;sa_check(nsa_triangle_y_v1(p,idx,0,2,2,r)==0&&r[3]==5&&r[4]==30,"reverse winding same surface",c);idx[1]=1;idx[2]=2 18 p[8]=0;sa_check(nsa_triangle_y_v1(p,idx,0,2,2,r)==NSA_E_MISS,"parallel projected triangle refused",c) 19 p[8]=10;idx[3]=0;idx[4]=1;idx[5]=2;out[0]=991;out[4]=991;sa_check(nsa_landmark_mesh_y_v1(p,idx,2,2,2,-1,out,work)==NSA_E_AMBIGUOUS&&out[0]==991&&out[4]==991,"equal-depth duplicate faces refuse without output",c) 20 p[0]=0;p[1]=NGB_ATTACH_COORD_MAX;p[2]=0;p[3]=NGB_ATTACH_COORD_MAX;p[4]=NGB_ATTACH_COORD_MAX;p[5]=1;p[6]=1;p[7]=NGB_ATTACH_COORD_MAX;p[8]=NGB_ATTACH_COORD_MAX;sa_check(nsa_triangle_y_v1(p,idx,0,2,3,r)==NSA_E_RANGE,"checked depth numerator overflow refuses",c) 21 var k:i64=0;while k<5{out[k]=991;k=k+1};sa_check(nsa_landmark_y_v1(b,n,0,0,0,out,5,work,12)==NSA_E_INPUT&&out[0]==991&&out[4]==991,"invalid direction leaves output untouched",c) 22 sa_check(nsa_landmark_y_v1(b,n,NGB_ATTACH_COORD_MAX, NGB_ATTACH_COORD_MAX,-1,out,5,work,12)==NSA_E_MISS&&out[0]==991&&out[4]==991,"real asset miss leaves output untouched",c) 23 let left:i64=nsa_landmark_y_v1(b,n,-3156,163055,-1,out,5,work,12);sa_check(left==0&&out[0]==3170,"real left query selects projected surface triangle",c);sa_put("LEFT ");k=0;while k<5{sa_num(out[k]);sa_put(" ");k=k+1};sa_put(" 24") 25 let right:i64=nsa_landmark_y_v1(b,n,3156,163055,-1,out,5,work,12);sa_check(right==0&&out[0]==7277,"real right query selects projected surface triangle",c);sa_put("RIGHT ");k=0;while k<5{sa_num(out[k]);sa_put(" ");k=k+1};sa_put(" 26") 27 sa_check(nsa_landmark_y_v1(b,n,3156,163055,1,out,5,work,12)==0&&out[0]==4282,"opposite ray selects back surface",c) 28 sa_check(nsa_landmark_y_v1(b,n,3156,163055,-1,out,5,out,12)<0,"overlapping workspace refused",c) 29 let va2:i64=nxa_counted_section(b,n,nxa_tag4("VERT"),3);let hw:*i64=b as *i64;let nv2:i64=hw[va2] 30 let labels:*i64=sys_mmap(nv2*8) as *i64;if (labels as i64)<=0{return 3} 31 labels[0]=991;sa_check(nsa_component_labels_v1(b,n,labels,nv2-1)==NSA_E_INPUT&&labels[0]==991,"component capacity refusal preserves output",c) 32 sa_check(nsa_component_labels_v1(b,n,b as *i64,nv2)<0,"component source alias refused",c) 33 let components:i64=nsa_component_labels_v1(b,n,labels,nv2) 34 sa_check(components==7,"actual asset has seven distinct mesh components",c) 35 sa_check(labels[0]==0&&labels[13510]==13510&&labels[13862]==13862&&labels[13411]==13411&&labels[13763]==13763&&labels[11012]==11012&&labels[13110]==13110,"actual component representatives match retained topology audit",c) 36 sa_check(labels[13512]==labels[13510]&&labels[13412]==labels[13411]&&labels[13510]!=labels[13411],"bilateral eye-region parts stay distinct from body and each other",c) 37 if components==7{var root:i64=0;while root<nv2{if labels[root]==root{var members:i64=0;var v:i64=0;while v<nv2{if labels[v]==root{members=members+1};v=v+1};sa_put("COMPONENT root=");sa_num(root);sa_put(" vertices=");sa_num(members);sa_put("\n")};root=root+1}} 38 39 let ske:i64=nxa_counted_section(b,n,nxa_tag4("SKEL"),8);let ski:i64=nxa_counted_section(b,n,nxa_tag4("SKIN"),8); 40 if ske<0||ski<0||hw[ski]!=nv2{sa_put("SKIN-AUDIT source section contract refused\n");return 3} 41 let nj:i64=hw[ske];let joints:*i64=sys_mmap(nj*8) as *i64;if (joints as i64)<=0{return 3} 42 var root2:i64=1;while root2<nv2{if labels[root2]==root2{var j:i64=0;while j<nj{joints[j]=0;j=j+1};var members2:i64=0;var v2:i64=0;while v2<nv2{if labels[v2]==root2{members2=members2+1;var sum:i64=0;var q:i64=0;while q<4{let joint:i64=hw[ski+1+v2*8+q];let weight:i64=hw[ski+1+v2*8+4+q];if joint<0||joint>=nj||weight<0||weight>4096{sa_put("SKIN-AUDIT invalid source joint/weight\n");return 3};joints[joint]=joints[joint]+weight;sum=sum+weight;q=q+1};if sum!=4096{sa_put("SKIN-AUDIT source weights not normalized\n");return 3}};v2=v2+1};j=0;while j<nj{if joints[j]>0{sa_put("SKIN-COMPONENT root=");sa_num(root2);sa_put(" vertices=");sa_num(members2);sa_put(" joint=");sa_num(j);sa_put(" weight_q12_sum=");sa_num(joints[j]);sa_put("\n")};j=j+1}};root2=root2+1};sys_munmap(joints as *u8,nj*8) 43 44 sa_check(nsa_rigid_component_joint_v1(b,n,11012,labels,nv2)==43,"source component11012 derives rigid joint43",c) 45 sa_check(nsa_rigid_component_joint_v1(b,n,13110,labels,nv2)==43,"source component13110 derives rigid joint43",c) 46 sa_check(nsa_rigid_component_joint_v1(b,n,13411,labels,nv2)==43,"source component13411 derives rigid joint43",c) 47 sa_check(nsa_rigid_component_joint_v1(b,n,13510,labels,nv2)==43,"source component13510 derives rigid joint43",c) 48 sa_check(nsa_rigid_component_joint_v1(b,n,13763,labels,nv2)==43,"source component13763 derives rigid joint43",c) 49 sa_check(nsa_rigid_component_joint_v1(b,n,13862,labels,nv2)==43,"source component13862 derives rigid joint43",c) 50 sa_check(nsa_rigid_component_joint_v1(b,n,0,labels,nv2)==NSA_E_MIXED_SUPPORT,"mixed body component refuses guessed rigid joint",c) 51 sa_check(nsa_rigid_component_joint_v1(b,n,-1,labels,nv2)==NSA_E_INPUT,"negative component seed refused",c) 52 sa_check(nsa_rigid_component_joint_v1(b,n,nv2,labels,nv2)==NSA_E_INPUT,"one-past component seed refused",c) 53 sa_check(nsa_rigid_component_joint_v1(b,n,13411,labels,nv2-1)==NSA_E_INPUT,"rigid support respects workspace capacity",c) 54 sys_munmap(labels as *u8,nv2*8) 55 sa_put("GATE total=");sa_num(c[0]);sa_put(" fail=");sa_num(c[1]);sa_put(" 56");let fail:i64=c[1];sys_munmap(mem as *u8,512);sys_munmap(b,n);if fail!=0{return 1};return 0 57}