Python 如何从椭圆上的四个点确定椭圆参数,如中心、方向?
我有四个点从椭圆图,我想知道椭圆参数,如中心,方向。这些点是(x1,y1),(x2,y2),(x3,y3),(x4,y4) 使用公式生成椭圆参数的代码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
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)