我推出了方程组
 ((x1*cos(angle) - y1*sin(angle) - cx)^2) / (ra^2) + 
 ((y1*cos(angle) + x1*sin(angle) - cy)^2) / (rb^2) = 1;  (1)
 ((x2*cos(angle) - y2*sin(angle) - cx)^2) / (ra^2) + 
 ((y2*cos(angle) + x2*sin(angle) - cy)^2) / (rb^2) = 1;  (2)
 ((x3*cos(angle) - y3*sin(angle) - cx)^2) / (ra^2) + 
 ((y3*cos(angle) + x3*sin(angle) - cy)^2) / (rb^2) = 1;  (3)
 ((x4*cos(angle) - y4*sin(angle) - cx)^2) / (ra^2) + 
 ((y4*cos(angle) + x4*sin(angle) - cy)^2) / (rb^2) = 1;  (4)
 ((x5*cos(angle) - y5*sin(angle) - cx)^2) / (ra^2) + 
 ((y5*cos(angle) + x5*sin(angle) - cy)^2) / (rb^2) = 1;  (5)
那位大哥能把它解出来啊!小弟万分感激啊!

解决方案 »

  1.   

    楼主用的是坐标旋转吧,无需!!!用定义: 
    “平面内与两个定点F1,F2的距离的和等于常数(在大于|F1F2|)的点的轨迹叫做椭圆,两个定点叫做椭圆的焦点,两焦点间的距离叫做焦距.”(定义搞忘了,才从网上查的,嘿嘿)
    令这两个定点的坐标(x1,y1),(x2,y2),定距离为d(d>0): 
    方程为:
     sqrt( (x-x1)^2 + (y-y1)^2 ) + sqrt( (x-x2)^2 + (y-y2)^2 ) = d;
    你恰好给出5个点,一一代入,就得到5个方程,就可以把它们解出来了。
      

  2.   

    把上面式子展开,尽量把平方项消掉,实在消不掉,将平方项设成单个未知数;
    应该还有一个方程:cos(angle)^2 + sin(angle)^2 = 1;
    然后将这些方程列成矩阵形式:AX=L,解炬阵应该是代数知识吧;
    看看《测量平差原理》,其中提到最小二乘法平差原理;
    是比较麻烦。
      

  3.   

    I_Love_CPP(我愛C++) ( )给出的方法应该在理论上可行,可是要解出这个方程组是比较蛮烦,可以看看数值计算里面的方法,我也好久没有用这些方法了。
      

  4.   

    只能求近似解,希望楼主没有犯低级错误
    比如
    float f= 0;
    ....
    if(f == 0.0)//这样永远不会解出来
      ...最好把简化的贴出来,大家帮你看看
      

  5.   

    The general form of a quadratic curve is:ax^2 + 2bxy + cy^2 + 2dx + 2fy + g = 0Assuming a = 1, Given 5 points, you just need to solve a linear equation system to find (b, c, d, f, g)http://mathworld.wolfram.com/QuadraticCurve.html
      

  6.   

    sqrt( (x-x1)^2 + (y-y1)^2 ) + sqrt( (x-x2)^2 + (y-y2)^2 ) = d;
    你恰好给出5个点,一一代入,就得到5个方程,就可以把它们解出来了。
    ======================================================================5个变量用5个方程就能解出吗?我怎么上学的时候不是这样学的
      

  7.   

    x*x + a*x*y + b*y*y + c*x + d*y + e = 0
    五个x和y数值带入,求解a,b,c,d,e 到是可行反正二次曲线都可以用这个通用公式来表达出来