code wiki / _hdl_build / nx_curvebench.nx

nx_curvebench.nx

buildroot/runtime/_hdl_build/nx_curvebench.nx

28587 B469 linesdepth 3pulls 4 transitivereach 0 importersview sourcekind bench
docsdependenciesstructsconstsfunctions

about

nx_curvebench.nx -- ★★★OUTLINE CURVATURE: the metric that replaces waist-to-hip ratio. WHY WHR IS GONE, and it was not an aesthetic judgement -- it was arithmetic. Parsing ANSUR II, the US Army anthropometric survey: **0.0% of 1,986 women are at or below WHR 0.70. The minimum in the entire sample is 0.701.** A target that no member of a 2,000-person population reaches is not a target, it is a number that got repeated. Independently: Hubner & Ufken 2024 measured outline CURVATURE explaining ~65% of attractiveness variance against WHR's ~28%, and Lidborg & Boothroyd 2025 (N=125,062) found most significant WHR-fertility associations running the WRONG WAY, which removes the mechanism WHR was supposed to have. ★★THE POINT IS NOT THAT CURVATURE IS A *LOWER* TARGET -- it is a BETTER-MEASURING one. It captures the same visual quality more faithfully, so aiming at an idealised figure becomes a NUMBER on this axis rather than an argument about a ratio nobody meets. ★★★AND THAT REFRAMES WHAT A "MUSE" IS. What a generator needs from a reference figure is not pixels, it is AN AIM POINT ON A METRIC. Extract the number, aim at the number: it composes with the fitter, it survives the reference going away, and it is not a likeness of anybody. A stored image is a liability with an expiry date; a curvature target is a parameter. WHAT IT MEASURES: the front-view silhouette as a half-width profile w(y), then the BEND in that profile. ★DIMENSIONLESS BY CONSTRUCTION -- both w and y are normalised by stature before differencing, so the index describes SHAPE and not SIZE. A metric that grows with the body is measuring the body, not its form, and T3 exists to prove this one does not. nx_curvebench measure <body.nxmesh> [stature_mm] -> curvature index + WHR, side by side nx_curvebench selftest license_tier: ORIGINAL expect_exit: 0 No hw writes (Rule 26).

dependencies 2 imports · 0 importers

nx_gate_verdict.nx nx_itoa_lib.nx nx_curvebench.nx

imports: nx_gate_verdict.nxnx_itoa_lib.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main cb_streq cb_gate gv_ctr sys_mmap gv_head gv_puts sys_write cb_fx_cylinder cb_measure cb_band cb_abs gv_check gv_puts ↻ cb_fx_cone cb_fx_hourglass cb_band ↻ cb_band ↻ gv_verdict gv_puts ↻ gv_num sys_mmap ↻ sys_write ↻ sys_munmap gv_journal sys_openat_append sys_mmap ↻ gv_catn sys_mmap ↻ sys_munmap ↻ sys_now_realtime_sec sys_mmap ↻ sys_clock_gettime_real gv_cat sys_write ↻ sys_close sys_munmap ↻ cb_puts sys_read_file sys_openat_rd

structs

none

consts

28const CB_MAGIC_100000: i64 = 100000
30const CB_M8388607: i64 = 8388607
31const CB_M8388608: i64 = 8388608
32const CB_HDR: i64 = 16
33const CB_LAYENT: i64 = 24
34const CB_TRI: i64 = 84
35const CB_LID: i64 = 4
36const CB_SCALE: i64 = 1024
37const CB_MM: i64 = 1000
38const CB_STATURE: i64 = 1750
39const CB_MAXTRI: i64 = 400000
42const CB_BANDS: i64 = 128
45const CB_LO: i64 = 470
46const CB_HI: i64 = 760
48const CB_WAIST: i64 = 615
49const CB_HIP: i64 = 530
50const CB_BIG: i64 = 4611686018427387903
51const CB_OUT: i64 = 16
60const CB_PREC: i64 = 100000

functions

62func cb_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
called by 1: main
67func cb_pn(v: i64) -> i64 { nxi_out(v); return 0 }
called by 1: main calls 1: nxi_out
68func cb_streq(a: *u8, b: *u8) -> i64
called by 1: main
73func cb_atoi(s: *u8) -> i64
called by 1: main
79func cb_rd32(b: *u8, o: i64) -> i64
called by 2: cb_f32mulcb_profile
82func cb_f32mul(b: *u8, o: i64, mul: i64) -> i64
called by 1: cb_profile calls 1: cb_rd32
95func cb_abs(v: i64) -> i64 { if v < 0 { return 0-v } return v }
100func cb_profile(path: *u8, W: *i64, stature: i64) -> i64
181func cb_band(permil: i64) -> i64
188func cb_measure(W: *i64, out: *i64) -> i64
called by 2: cb_gatemain calls 2: cb_bandcb_abs
284func cb_fx_cylinder(W: *i64, w: i64) -> i64
called by 1: cb_gate
290func cb_fx_cone(W: *i64, w0: i64, w1: i64) -> i64
called by 1: cb_gate
299func cb_fx_hourglass(W: *i64, wideR: i64, waistR: i64) -> i64
called by 1: cb_gate calls 1: cb_band
315func cb_gate() -> i64
393func main(argc: i64, argv: *i64) -> i64