beveled = (p1, p2, {context = d3.path(), start = true, sweep = true, corner_radius = 25} = {}) => {
let r = clamped_radius(corner_radius, p1, p2)
let [rx, ry] = signed_radii(r, p1, p2)
if(start)
context.moveTo(p1.x, p1.y)
if(sweep) {
context.lineTo(p2.x-rx, p1.y)
context.lineTo(p2.x, p1.y+ry)
}
else {
context.lineTo(p1.x, p2.y-ry)
context.lineTo(p1.x+rx, p2.y)
}
context.lineTo(p2.x, p2.y)
return context
}