# Biometric field art — rectified device photography, dipole line fields, one lime node

Learned 2026-08-13 replicating reference R#8 (node 216:4903, a two-image
set for a "Neka" heart-health product: a hand-held phone and a tilted
desktop monitor → replicas `R#8-replica / Screen 1 — Heart Health`
(390×844) and `R#8-replica / Screen 2 — Heart & Circulation` (1600×900),
page Glass Morphism, Quorra v.0). Both references are photographs of
screens in perspective, so the whole serialization had to be un-projected
before a single value could be trusted.

- **Rectify a perspective mockup before serializing it — the rectified
  image, not the photo, is the diff target.** R#7's entry established
  that Figma is affine-only and a projective composite cannot be
  rebuilt; the counter-move is to invert the projection on the
  *reference* instead. Find the screen quad by walking outward from a
  point inside the screen until the bezel's dark pixels start (per row
  for the side edges, per column for top/bottom), fit a line to each
  edge — the phone's left edge fit `x = 670 − 0.2525(y − 310)` across
  800px — and intersect them for the corners. Then map that quad to a
  rectangle with a homography (8×8 solve; PIL's
  `Image.transform(..., PERSPECTIVE, coeffs)` takes the inverse
  mapping). Two rectifications took minutes and turned an unmeasurable
  photograph into a flat spec with directly usable px coordinates.
- **Verify the rectified aspect ratio on round elements, not on the
  device's nominal spec.** Small circular markers must come out
  circular: the monitor rectified to 16:9 produced 9×8 and 11×10 dots
  (correct), while the phone forced to 19.5:9 kept its dots round but
  left every glyph ~30% narrower than the same face at the same cap
  height — a sign the assumed screen aspect was wrong. Where the two
  disagree, the dots are the honest witness.
- **Set display type by measured ink width, never by eye.** Compare the
  bounding box of the rendered glyph run in both images and scale the
  font by the width ratio. The same session, judged by eye, overshot
  the phone's title by 34% (26px where 21 measured) and undershot the
  dashboard's by 10% (47px where 52 measured) — the error went in both
  directions, which is exactly what "the prior fills the gap" predicts.
  On a soft photographic reference, match on **width**: blur inflates
  the ink box more in the short dimension, so height overstates size.
- **The dipole field is a family of self-similar ellipses tangent at one
  point, not a family of constant height.** The signature drawing (two
  lobes meeting at the lime node) is built from N ellipses per lobe with
  the inner vertex pinned to the centre: `w = WMAX·u^1.8`,
  `h = HMAX·u^0.45` (horizontal lobes), mirrored for the other side,
  plus a single hairline axis through the centre. Constant-height lobes
  — the first guess — render as two circles and read as a different
  drawing. Measure the envelope first by scanning for pixels brighter
  than their neighbours 8px above and below: the phone's field measured
  304×107 with the max height reached 55–110px out from the centre,
  which is the lens envelope a self-similar family produces and a
  constant-height family cannot.
- **Both the reference's braid and its arc chart are line families over
  an envelope, drawn as polylines**: the oxygen braid is 4–5 sine
  harmonics (f ≈ 1.35–2.45) under a spindle envelope
  `A·sin(πu)^0.5`, over a faint full-width baseline; the inflammation
  chart is 4 arcs rising from the same lime node with
  `h·sin(πu)^0.78` and landing on white dots. `vectorPaths` has no arc
  command (this ledger's oldest recurring lesson), so both are emitted
  as 80–120 segment `L` polylines, which is visually indistinguishable
  at these radii.
- **Two blind rounds on a photographed reference will contradict each
  other, and the tiebreak is a 10× crop, not a third opinion.** Rounds
  one and two disagreed on four separate elements of the same
  dashboard: whether the header icons were filled or outlined, whether
  the reading node carried a drawn ring or a soft halo, whether the
  "+2000" drawing was a rosette of tilted ellipses or a lantern of
  equal-height ones, and whether the oxygen braid's envelope peaked
  left or mid-right. Every one of them was settled in a single look at
  a 4–10× crop of the reference — and in two cases round one had been
  wrong, so acting on it had *introduced* the defect round two then
  reported. The rule this earns: on a soft reference, a blind finding
  about fill polarity or small-element shape is a *hypothesis to
  verify at magnification*, never an instruction to execute. Findings
  about position, size and luminance stayed reliable across both
  rounds; findings about what a small thing *is* did not.
- **Reassigning `vectorPaths` on an existing node adds the old origin to
  the new one — create a fresh node instead.** R#7's entry warned that
  assignment auto-derives `x`/`y` from the path's bounding box and that
  overriding them afterward re-offsets the shape. The trap has a second
  mouth: mutate the path of a node that already carries a non-zero
  `x`/`y` and the two offsets *sum*. Four oxygen-braid strands authored
  at `x=42, y≈121` in frame coordinates landed at `x=84, y=235` — the
  drawing vanished off the bottom of its tile and read as "the chart is
  gone", not as "the chart moved". When a path is authored in the
  parent's coordinate space, delete the node and build a new one so the
  origin derives exactly once.
- **Photographic content stays excluded and abstracted, and one
  continuous shape beats two primitives.** No `createImageAsync`, so the
  hand, the phone body, the monitor, the neck-skin tile and the 3D bust
  are all out. Built as a head ellipse plus a torso ellipse, the bust
  read as a snowman — R#5's hero-silhouette lesson repeating verbatim.
  One `vectorPaths` bust in right-facing profile, with the luminance
  ramp sampled off the reference at 16 heights (L23 at the crown → L109
  mid-torso → L213 at the fade), landed within ±5 luminance levels down
  the whole centreline.
- **Connotes**: a body dissolving into the page — dark at the head, gone
  by the waist — says the product reads the inside of you and returns
  only what it measured; nothing is staged as a portrait. The lime node
  is this ledger's "one accent = the signal" discipline again
  (*Edge-lit active row*, *Clinical wellness*, *Product hero*), but here
  the accent is always a *point on a curve* rather than a fill: the
  reading is a position in a field, not a badge. Field-line drawings
  borrow physics-diagram vocabulary — magnetism, flux, orbit — so a
  heart-age number arrives looking like a natural constant rather than a
  score, and the "Younger / Older" axis under it is the only place the
  design admits a judgement. Two devices in one reference, one phone in
  a hand and one monitor on a desk, stage the same data as both
  intimate and clinical.
