code wiki / (root) / nx_beauty_score_test.nx

nx_beauty_score_test.nx source

↩ module page · 66 lines · 2883 B

1import "nx_syscalls.nx" 2import "nx_phi.nx" 3import "nx_canon_proportions.nx" 4import "nx_beauty_score.nx" 5 6// Helper to write a (axis, value_px) pair into a measurement buffer. 7func meas_put(meas: *i64, i: i64, axis: i64, value_px: i64) -> i64 { 8 meas[i * NX_MEAS_FIELDS] = axis 9 meas[i * NX_MEAS_FIELDS + 1] = value_px 10 return 0 11} 12 13func main() -> i64 { 14 let canon: *i64 = (sys_mmap(NX_CANON_ENTRY_COUNT * NX_CANON_FIELDS * 8 + 16)) as *i64 15 nx_canon_build(canon) 16 let result: *i64 = (sys_mmap((NX_RES_PER_ENTRY_BASE + NX_CANON_ENTRY_COUNT) * 8 + 16)) as *i64 17 18 // T1: S-class canonical measurement bundle. 19 // eye_width=20px -> face_width=100 face_height=140 face_height/face_width=1.4 ~phi 20 // bust=180 waist=111 hip=180 => bust/waist=1.62 hip/waist=1.62 ~phi 21 // total_height=1050 navel=649 (1050/649=1.618 ~phi) 22 let meas: *i64 = (sys_mmap(32 * NX_MEAS_FIELDS * 8 + 16)) as *i64 23 meas_put(meas, 0, NX_AXIS_EYE_WIDTH, 20) 24 meas_put(meas, 1, NX_AXIS_EYE_TO_EYE, 20) 25 meas_put(meas, 2, NX_AXIS_MOUTH_WIDTH, 40) 26 meas_put(meas, 3, NX_AXIS_FACE_WIDTH, 100) 27 meas_put(meas, 4, NX_AXIS_FACE_HEIGHT, 140) 28 meas_put(meas, 5, NX_AXIS_SHOULDER_WIDTH, 300) 29 meas_put(meas, 6, NX_AXIS_BUST_WIDTH, 180) 30 meas_put(meas, 7, NX_AXIS_WAIST_WIDTH, 111) 31 meas_put(meas, 8, NX_AXIS_HIP_WIDTH, 180) 32 meas_put(meas, 9, NX_AXIS_NAVEL_HEIGHT, 649) 33 meas_put(meas, 10, NX_AXIS_TOTAL_HEIGHT, 1050) 34 meas_put(meas, 11, NX_AXIS_ARM_SPAN, 1050) 35 meas_put(meas, 12, NX_AXIS_FEMUR_LENGTH, 280) 36 meas_put(meas, 13, NX_AXIS_SHIN_LENGTH, 210) 37 meas_put(meas, 14, NX_AXIS_HAND_LENGTH, 140) 38 meas_put(meas, 15, NX_AXIS_FOOT_LENGTH, 140) 39 nx_beauty_score(canon, meas, 16, result) 40 let comp: i64 = result[NX_RES_COMPOSITE] 41 let verdict: i64 = result[NX_RES_VERDICT] 42 let matched: i64 = result[NX_RES_MATCHED] 43 if matched < 10 { return 1 } 44 if verdict != NX_BEAUTY_S_CLASS { 45 if verdict != NX_BEAUTY_A_CLASS { return 2 } 46 } 47 48 // T2: Off-canon bundle -- waist same as bust, hip same as waist (no hourglass). 49 let meas2: *i64 = (sys_mmap(8 * NX_MEAS_FIELDS * 8 + 16)) as *i64 50 meas_put(meas2, 0, NX_AXIS_EYE_WIDTH, 20) 51 meas_put(meas2, 1, NX_AXIS_FACE_WIDTH, 100) 52 meas_put(meas2, 2, NX_AXIS_FACE_HEIGHT, 140) 53 meas_put(meas2, 3, NX_AXIS_BUST_WIDTH, 150) 54 meas_put(meas2, 4, NX_AXIS_WAIST_WIDTH, 150) // BAD: equal to bust 55 meas_put(meas2, 5, NX_AXIS_HIP_WIDTH, 150) // BAD: equal to waist 56 nx_beauty_score(canon, meas2, 6, result) 57 let v2: i64 = result[NX_RES_VERDICT] 58 if v2 == NX_BEAUTY_S_CLASS { return 10 } 59 60 // T3: Empty measurement -> UNKNOWN 61 nx_beauty_score(canon, meas, 0, result) 62 let v3: i64 = result[NX_RES_VERDICT] 63 if v3 != NX_BEAUTY_UNKNOWN { return 20 } 64 65 return 0 66}