代码中x1 y1是端点1 ,x3 y3是端点2,x2 y2是中点。
# -*- coding:utf-8 -*-
#use to caculator the arc center from the three point
def getCenter(x1,y1,x2,y2,x3,y3):
# x1 = 55.962697
# y1 = 12.807461
# x2 = 53.49
# y2 = 25.11
# x3 = 43.0
# y3 = 32.0
a = (x1 -x2)*(x1-x2)*(x1-x3)
b = (x1 -x2)*2*y2*(y1-y3)
c = a - b
d = (pow(y2,2)-pow(y1,2))*(x1-x3)
e = (y1-y2)*(x1-x3)
f = (y1-y3)*(x2-x1)
g = 2*(e+f)
if g == 0:
print "Caculator error"
return False
y0 = (c-d) / g
print "y0",y0
i = 2*y0*(y1-y2)
j = (pow(y2,2)-pow(y1,2)) + (pow(x2,2)-pow(x1,2))
k = i + j
l = 2*(x2-x1)
if l == 0:
print "Caculator error"
return False
x0 = k / l
print "x0",x0
return (x0,y0)
# 程序入口
if (__name__=="__main__"):
getCenter(1,0,0,1,-1,0)