function circle_through_points([ax, ay], [bx, by], [cx, cy]) {
const na = ax * ax + ay * ay;
const nb = bx * bx + by * by;
const nc = cx * cx + cy * cy;
const dy = 2 * (by - ay) * (bx - cx) - 2 * (ax - bx) * (cy - by);
const y = ((ax - bx) * (nb - nc) - (bx - cx) * (na - nb)) / dy;
const x = (na - nb + 2 * (by - ay) * y) / (2 * (ax - bx));
const r = Math.hypot(x - ax, y - ay);
return [x, y, r];
}