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"