计算外接圆的圆心有3个点坐标就够了。来自维基百科,Cartesian coordinates of Circumscribed circle:
然后中心是S/a
正如提到的任何语言一样,Python 中都有实现:
import numpy as np
A = np.array([0, 0])
B = np.array([2, 0])
C = np.array([0, 2])
lenASquare = A.dot(A)
lenBSquare = B.dot(B)
lenCSquare = C.dot(C)
SxMatrix = np.array([
[lenASquare, A[1], 1],
[lenBSquare, B[1], 1],
[lenCSquare, C[1], 1]
])
SyMatrix = np.array([
[A[0], lenASquare, 1],
[B[0], lenBSquare, 1],
[C[0], lenCSquare, 1]
])
SxDet = np.linalg.det(SxMatrix)
SyDet = np.linalg.det(SyMatrix)
Sx = 0.5 * SxDet
Sy = 0.5 * SyDet
aMatrix = np.array([
[A[0], A[1], 1],
[B[0], B[1], 1],
[C[0], C[1], 1]
])
a = np.linalg.det(aMatrix)
S = np.array([Sx/a, Sy/a])
print('A: ', A)
print('B: ', B)
print('C: ', C)
print('Circumcircle center: ', S)
输出:
A: [0 0]
B: [2 0]
C: [0 2]
Circumcircle center: [1. 1.]