Python 如何从椭圆上的四个点确定椭圆参数,如中心、方向?

Python 如何从椭圆上的四个点确定椭圆参数,如中心、方向?,python,parameters,ellipse,Python,Parameters,Ellipse,我有四个点从椭圆图,我想知道椭圆参数,如中心,方向。这些点是(x1,y1),(x2,y2),(x3,y3),(x4,y4) 使用公式生成椭圆参数的代码 for i in dat: line=i.strip() splt=line.split(',') x1=float(splt[1]) y1=float(splt[2]) x2=float(splt[3]) y2=float(splt[4]) x3=float(splt[5]) y3

我有四个点从椭圆图,我想知道椭圆参数,如中心,方向。这些点是(x1,y1),(x2,y2),(x3,y3),(x4,y4)

使用公式生成椭圆参数的代码

for i in dat:
    line=i.strip()
    splt=line.split(',')
    x1=float(splt[1])
    y1=float(splt[2])
    x2=float(splt[3])
    y2=float(splt[4])
    x3=float(splt[5])
    y3=float(splt[6])
    x4=float(splt[7])
    y4=float(splt[8])
    Amatrix = matrix([(y1-y2)/(x1-x2)-1,(y3-y4)/(x3-x4)-1]) #Amatrix
    Bvector = [((y1-y2)/(x1-x2))*(x1-y1), ((y3-y4)/(x3-x4))*(x3-y3)]
    A = sqrt((x1 - x2)**2 + (y1 - y2)**2);
    B = sqrt((x3 - x4)**2 + (y3 - y4)**2);
    center = (Amat.I)*Bvec;
    orientation = atan((y1-y2)/(x1-x2));
    print(center)

作为中锋,我得到了4分,但我应该只得到2分。

感谢乔纳森让我的比赛更有意义……阿玛崔克斯队vs阿玛特队???Bvector vs B vs Bvec???请展示你计算中心的代码。四个输入点是不够的-有一些对称的情况允许无限的椭圆族。相反,有些四个点的集合可能不在任何椭圆上-您想要最佳拟合吗?似乎如果您没有任何附加信息,您需要5个点。在这种情况下,您可以将这些点替换为方程式a11*x2+a22*y2+2*a12*x*y+2*a13*x+a23*y+a33=0,并从线性方程组中找到系数aij。
for i in dat:
    line=i.strip()
    splt=line.split(',')
    x1=float(splt[1])
    y1=float(splt[2])
    x2=float(splt[3])
    y2=float(splt[4])
    x3=float(splt[5])
    y3=float(splt[6])
    x4=float(splt[7])
    y4=float(splt[8])
    Amatrix = matrix([(y1-y2)/(x1-x2)-1,(y3-y4)/(x3-x4)-1]) #Amatrix
    Bvector = [((y1-y2)/(x1-x2))*(x1-y1), ((y3-y4)/(x3-x4))*(x3-y3)]
    A = sqrt((x1 - x2)**2 + (y1 - y2)**2);
    B = sqrt((x3 - x4)**2 + (y3 - y4)**2);
    center = (Amat.I)*Bvec;
    orientation = atan((y1-y2)/(x1-x2));
    print(center)