diff --git a/src/geo/base.js b/src/geo/base.js index 38180d4b..7e874ebf 100644 --- a/src/geo/base.js +++ b/src/geo/base.js @@ -321,12 +321,15 @@ */ function circleCenter(A,B,C) { + let denominator = 2*determinant33([[A.x, A.y, 1], [B.x, B.y, 1], [C.x, C.y, 1]]); let xmat = [[A.x*A.x + A.y*A.y, A.y, 1],[B.x*B.x + B.y*B.y, B.y, 1],[C.x*C.x + C.y*C.y, C.y, 1]]; let ymat = [[A.y, A.x*A.x + A.y*A.y, 1],[B.y, B.x*B.x + B.y*B.y, 1],[C.y, C.x*C.x + C.y*C.y, 1]]; - let center = {x:determinant33(xmat), y:determinant33(ymat), z:A.z}; + let center = {x:determinant33(xmat)/denominator, y:determinant33(ymat)/denominator, z:A.z}; - return center; + if (denominator !== 0) { + return center; + } } /**