code wiki / (root) / nx_morf_draw_core_gate.nx

nx_morf_draw_core_gate.nx source

↩ module page · 72 lines · 4292 B

1// ORIGINAL. Canonical geometry independently fixes the expected normal direction. 2import "nx_syscalls.nx" 3import "nx_gate_verdict.nx" 4import "nx_morf_draw_core.nx" 5 6func mrdg_equal(a: *i64, b: *i64, n: i64) -> i64 { 7 var i: i64 = 0 8 while i < n { if a[i] != b[i] { return 0 }; i = i+1 } 9 return 1 10} 11func main() -> i64 { 12 let ctr: *i64 = gv_ctr() 13 gv_head("MORF draw composes shared geometric normals" as *u8) 14 let v: *MvcView = sys_mmap(__size_of(MvcView)) as *MvcView 15 let a: *MrdAsset = sys_mmap(__size_of(MrdAsset)) as *MrdAsset 16 let bind: *i64 = sys_mmap(9*8) as *i64 17 let face: *i64 = sys_mmap(8) as *i64 18 let delta: *i64 = sys_mmap(3*8) as *i64 19 let tri: *i64 = sys_mmap(3*8) as *i64 20 let bn: *i64 = sys_mmap(9*8) as *i64 21 let weights: *i64 = sys_mmap(8) as *i64 22 let pos: *i64 = sys_mmap(9*8) as *i64 23 let norm: *i64 = sys_mmap(9*8) as *i64 24 let pos2: *i64 = sys_mmap(9*8) as *i64 25 let norm2: *i64 = sys_mmap(9*8) as *i64 26 var i: i64 = 0 27 while i < 9 { bind[i] = 0; bn[i] = 0; i = i+1 } 28 bind[3] = 100; bind[7] = 100 29 bn[2] = 1000; bn[5] = 1000; bn[8] = 1000 30 face[0] = 2; delta[0] = 0; delta[1] = 0; delta[2] = 100 31 tri[0] = 0; tri[1] = 1; tri[2] = 2; weights[0] = 1000 32 v.bind = bind; v.bind_words = 9; v.face = face; v.face_words = 1 33 v.delta = delta; v.delta_words = 3; v.vertices = 3; v.faces = 1; v.channels = 1; v.unit = 1000 34 a.morph = v; a.triangles = tri; a.triangle_words = 3; a.bind_normals = bn; a.normal_words = 9 35 gv_check_eq("one vertex morphs before normal generation" as *u8,mrd_prepare(a,weights,1,pos,9,norm,9),1,ctr) 36 gv_check_eq("morphed z" as *u8,pos[8],100,ctr) 37 gv_check_eq("normal x" as *u8,norm[0],0,ctr) 38 gv_check_eq("normal y analytical negative diagonal" as *u8,norm[1],0-707,ctr) 39 gv_check_eq("normal z analytical positive diagonal" as *u8,norm[2],707,ctr) 40 gv_check_eq("shared vertex gets same plane normal" as *u8,norm[7],0-707,ctr) 41 gv_check_eq("repeat preparation" as *u8,mrd_prepare(a,weights,1,pos2,9,norm2,9),1,ctr) 42 gv_check("repeat geometry exact" as *u8,mrdg_equal(pos,pos2,9),ctr) 43 gv_check("repeat normals exact" as *u8,mrdg_equal(norm,norm2,9),ctr) 44 weights[0] = 0 45 // Deliberately noncanonical incumbent normal proves the zero path copies it, 46 // rather than silently replacing the consumer's established representation. 47 bn[2] = 777 48 gv_check_eq("zero entity moves nothing" as *u8,mrd_prepare(a,weights,1,pos2,9,norm2,9),0,ctr) 49 gv_check("zero geometry is bind" as *u8,mrdg_equal(pos2,bind,9),ctr) 50 gv_check("zero retains incumbent normals exactly" as *u8,mrdg_equal(norm2,bn,9),ctr) 51 gv_check_eq("first entity normal remains isolated" as *u8,norm[2],707,ctr) 52 weights[0] = 1000 53 gv_check_eq("normal output may not alias positions" as *u8,mrd_prepare(a,weights,1,pos,9,pos,9),MRD_E_ALIAS,ctr) 54 tri[2] = 3 55 gv_check_eq("invalid triangle is refused before normal owner" as *u8,mrd_prepare(a,weights,1,pos2,9,norm2,9),MRD_E_TRIANGLE,ctr) 56 tri[2] = 2 57 delta[2] = 1000000000 58 gv_check_eq("unsafe normal arithmetic gets named refusal" as *u8,mrd_prepare(a,weights,1,pos2,9,norm2,9),MRD_E_NORMAL_RANGE,ctr) 59 delta[2] = 100 60 tri[0] = 0; tri[1] = 0; tri[2] = 0 61 gv_check_eq("degenerate geometry has defined shared fallback" as *u8,mrd_prepare(a,weights,1,pos2,9,norm2,9),1,ctr) 62 gv_check_eq("fallback y is named inherited value" as *u8,norm2[1],VN_FALLBACK_Y,ctr) 63 gv_check_eq("fallback z is named inherited value" as *u8,norm2[2],VN_FALLBACK_Z,ctr) 64 gv_check_eq("empty geometry envelope avoids division" as *u8,mrd_normal_envelope(0 as *i64,0 as *i64,0,0),0,ctr) 65 a.triangle_words = 0 66 gv_check_eq("morphed point cloud has finite shared fallback" as *u8,mrd_prepare(a,weights,1,pos2,9,norm2,9),1,ctr) 67 gv_check_eq("point cloud fallback y" as *u8,norm2[1],VN_FALLBACK_Y,ctr) 68 v.channels = 0; v.faces = 0; v.face_words = 0; v.delta_words = 0 69 gv_check_eq("absent MORF retains geometry" as *u8,mrd_prepare(a,0 as *i64,0,pos2,9,norm2,9),0,ctr) 70 gv_check("absent MORF retains every incumbent normal" as *u8,mrdg_equal(norm2,bn,9),ctr) 71 return gv_verdict("NX-MORF-DRAW-CORE" as *u8,ctr,"shared normals, ownership, range refusal and exact inactive path" as *u8) 72}