centerFromTwoPointsAndPrevCenter = function(x1, y1, x2, y2, xpc, ypc){
let a = (y1 - ypc) / (x1 - xpc);
let c = y1 - a * x1;
let b = (y2 - y1) / (x2 - x1);
let d = y1 - b * x1;
let mx = (x2+x1)/2
let my = (y2+y1)/2
let b1 = -1/b;
let d1 = my - b1 * mx;
let xc = (d1-c)/(a-b1);
let yc = a * xc + c;
let r = Math.sqrt(Math.pow(xc-x1,2)+Math.pow(yc-y1,2))
let alpha = Math.atan2(y1 - yc, x1 - xc)
let beta = Math.atan2(y2 - yc, x2 - xc)
alpha = alpha < 0 ? (2 * Math.PI) + alpha : alpha;
beta = beta < 0 ? (2 * Math.PI) + beta : beta;
let angleCW = alpha > beta ? alpha - beta : Math.PI*2 - (beta - alpha)
let angleCCW = Math.PI*2 - angleCW
return {
x:xc,
y:yc,
r:r,
angleStart: alpha * 180 / Math.PI,
angleEnd: beta * 180 / Math.PI,
angleCW:angleCW * 180 / Math.PI,
angleCCW:angleCCW * 180 / Math.PI,
middle:{x:mx, y:my},
line1:{x1:0, y1:c, x2:width, y2:a*width+c},
line2:{x1:0, y1:d, x2:width, y2:b*width+d},
line3:{x1:0, y1:d1, x2:width, y2:b1*width+d1},
}
}