nx_eye_surface_probe_t207.nx source
↩ module page · 10 lines · 2019 B
1import "nx_nxa_surface_anchor_t140.nx"
2import "nx_surface_anchor_gate_t140.nx"
3func main(argc:i64,argv:*i64)->i64{
4 if argc!=2{return 2};let len:*i64=sys_mmap(16) as *i64;let b:*u8=sys_map_file(argv[1] as *u8,len);if (b as i64)==0{return 3};let n:i64=len[0];let valid:i64=ngb_attach_source_v1(b,n);if valid<0{return 4}
5 let h:*i64=b as *i64;let va:i64=nxa_counted_section(b,n,nxa_tag4("VERT"),3);let ta:i64=nxa_counted_section(b,n,nxa_tag4("TRIS"),3);let nv:i64=h[va];let nt:i64=h[ta];let p:*i64=((b as i64)+(va+1)*8) as *i64;let idx:*i64=((b as i64)+(ta+1)*8) as *i64
6 let labels:*i64=sys_mmap(nv*8) as *i64;let nc:i64=nsa_component_labels_v1(b,n,labels,nv);if nc<0{return 5}
7 sa_put("SOURCE bytes=");sa_num(n);sa_put(" vertices=");sa_num(nv);sa_put(" triangles=");sa_num(nt);sa_put(" components=");sa_num(nc);sa_put("\n")
8 let bounds:*i64=sys_mmap(48) as *i64;var root:i64=0;while root<nv{if labels[root]==root{var k:i64=0;while k<3{bounds[k]=NGB_ATTACH_COORD_MAX;bounds[k+3]=0-NGB_ATTACH_COORD_MAX;k=k+1};var count:i64=0;var v:i64=0;while v<nv{if labels[v]==root{count=count+1;k=0;while k<3{let value:i64=p[v*3+k];if value<bounds[k]{bounds[k]=value};if value>bounds[k+3]{bounds[k+3]=value};k=k+1}};v=v+1};sa_put("COMPONENT root=");sa_num(root);sa_put(" vertices=");sa_num(count);sa_put(" bounds=");k=0;while k<6{sa_num(bounds[k]);sa_put(" ");k=k+1};sa_put(" rigid_joint=");sa_num(nsa_rigid_component_joint_v1(b,n,root,labels,nv));sa_put("\n")};root=root+1}
9 let out:*i64=sys_mmap(40) as *i64;let work:*i64=sys_mmap(96) as *i64;var side:i64=-1;while side<=1{let qx:i64=side*3156;let rc:i64=nsa_landmark_y_v1(b,n,qx,163055,-1,out,5,work,12);sa_put("QUERY x=");sa_num(qx);sa_put(" z=163055 rc=");sa_num(rc);if rc==0{sa_put(" record=");var k:i64=0;while k<5{sa_num(out[k]);sa_put(" ");k=k+1};sa_put(" vertices=");k=0;while k<3{let v:i64=idx[out[0]*3+k];sa_num(v);sa_put(":");sa_num(labels[v]);sa_put(":");var a:i64=0;while a<3{sa_num(p[v*3+a]);sa_put(",");a=a+1};sa_put(" ");k=k+1}};sa_put("\n");side=side+2};return 0
10}