我一直在努力解决这个问题:如何获得三角形外接圆的中心和半径(2D)? 到目前为止我做了什么:
我的代码(在python中,为方便起见使用numpy):
def cercle_circonscrit(T):
A = np.array([[x3-x1,y3-y1],[x3-x2,y3-y2]])
Y = np.array([(x3**2 + y3**2 - x1**2 - y1**2),(x3**2+y3**2 - x2**2-y2**2)])
if np.linalg.det(A) == 0:
return False
Ainv = np.linalg.inv(A)
X = 0.5*np.dot(Ainv,Y)
x,y = X[0],X[1]
r = sqrt((x-x1)**2+(y-y1)**2)
return (x,y),r
到目前为止,这会带来莫名其妙的结果......但是我并没有试图证明上述公式,这可能是错误的...... 感谢
答案 0 :(得分:0)
你可能忘了把(x1,y1)等作为函数的参数。
这应该有效:
import numpy as np
from math import sqrt
def cercle_circonscrit(T):
(x1, y1), (x2, y2), (x3, y3) = T
A = np.array([[x3-x1,y3-y1],[x3-x2,y3-y2]])
Y = np.array([(x3**2 + y3**2 - x1**2 - y1**2),(x3**2+y3**2 - x2**2-y2**2)])
if np.linalg.det(A) == 0:
return False
Ainv = np.linalg.inv(A)
X = 0.5*np.dot(Ainv,Y)
x,y = X[0],X[1]
r = sqrt((x-x1)**2+(y-y1)**2)
return (x,y),r
T = ((0, 0), (1, 0), (0, 1))
cercle_circonscrit(T)
#--> ((0.5, 0.5), 0.7071067811865476)