ktr is a DSL for parametric sewing patterns that compiles geometry and constraints into a diffable, runtime-independent IR.

armhole_curve.ktr

input bust = 92cm {
  assert bust > 60cm
  assert bust < 150cm
}

input target_armhole = 44cm {
  assert target_armhole > 30cm
  assert target_armhole < 60cm
}

fn armhole_curve(depth: Length) {
  let top = point(0cm, 0cm)
  let side = point(bust / 8, -depth)

  return bezier(
    top,
    top.down(depth / 2),
    side.up(depth / 3),
    side,
  )
}

let depth = search (d: Length) {
  bounds d [10cm .. 25cm]
  tolerance 0.5cm
  require armhole_curve(d).length == target_armhole
}

export armhole_curve(depth) as "Armhole"