设椭圆中心在原点x,y.轴长度为a,b那么
记 u = (x*cosθ+y*sinθ)/a; (1)
v = (x*sinθ-y*cosθ)/b; (2)
椭圆方程为
u^2 + v^2 = 1
变换方程(1),(2)为
x1 = a*cosθ*u - b*sinθ*v;
y1 = -a*sinθ*u-b*cosθ*v;
我用点表示这个椭圆,为什么图形变形了,大家帮我看看好不

解决方案 »

  1.   

    把数据类型声明为double,到输出的时候再转换成整形
      

  2.   

    变换方程是不是出错了?
    x1 = a*cosθ*u - b*sinθ*v;这个应该改为x1 = a*cosθ*u + b*sinθ*v;吧,我对程序不懂,不过刚看一下好像是方程有错了!不好意思,如果有说错了的话请原谅!
      

  3.   

    标准公式:
    (x-a)/(m^2)+(y-b)/(n^2)=1(a,b)椭圆中心
    m为半长轴长
    n为半短轴长还有,如果你要画椭圆,用circle方法就可以了。
      

  4.   

    然后
    x=m*cosθ+a
    y=n*sinθ+b
      

  5.   

    不能用circle,我要用点走椭圆的轨迹,而且你这个公式的角度是偏心角,是怎么算来的
      

  6.   

    推导:
    标准公式:
    (x-a)^2/(m^2)+(y-b)^2/(n^2)=1  ==>注意,上面的标准公式错了,这个是对的,但上面的最终结果没错故,设(x-a)/m=cosθ (y-b)/n=sinθ (因为cosθ^2+sincθ^2=1)
    然后可求得,
    x=m*cosθ+a
    y=n*sinθ+b
      

  7.   

    偏心角就是要求的点到椭圆弧和X轴的交点型成的直线和X轴的夹角,你这个公式只能画标准椭圆,如果是旋转了的椭圆弧呢,而且这个公式并不是所有的图形都行,非常感谢你,能帮我再算下吗,我给的角是要求的点到圆心型成的直线跟X轴形成的角
      

  8.   

    Private Sub Command1_Click()
    Dim x As Single, y As Single, a As Single, b As Single, m As Single, n As Single
    Dim i As Integer
    Dim theta As Integer
    Const PI = 3.14159Me.Scale (-5, 5)-(5, -5)
    a = 0
    b = 0
    m = 3
    n = 2Me.CurrentX = m + a
    Me.CurrentY = b
    For i = 0 To 360
       x = m * Cos(i * PI / 180) + a
       y = n * Sin(i * PI / 180) + b
       Me.Line -(x, y)
    Next iEnd Sub调试通过
      

  9.   

    分数继续累加,问题还没解决,就是已知圆心和长,短轴,和要求的点P到圆心形成的直线跟X轴所形成的夹角,求那个点P的坐标。应该是一个非常长的公式,我的那个不知道错在那?
      

  10.   

    你可以增加几个空间啊
    或者运行的时候用input接收几个变量啊 
    然后把他里面的常数直接用接受的数局代替啊
    Private Sub Command1_Click()
    Dim x As Single, y As Single, a As Single, b As Single, m As Single, n As Single
    Dim i As Integer
    Dim theta As Integer
    Const PI = 3.14159Me.Scale (-5, 5)-(5, -5)
    a = 0
    b = 0
    m = 3
    n = 2Me.CurrentX = m + a
    Me.CurrentY = b
    For i = 0 To 360
       x = m * Cos(i * PI / 180) + a
       y = n * Sin(i * PI / 180) + b
       Me.Line -(x, y)
    Next iEnd Sub
      

  11.   

    晕,别计算了,直接使用API函数Private Declare Function Ellipse Lib "gdi32" Alias "Ellipse" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
    Ellipse VB声明 
    Declare Function Ellipse Lib "gdi32" Alias "Ellipse" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long 
    说明 
    描绘一个椭圆,由指定的矩形围绕。椭圆用当前选择的画笔描绘,并用当前选择的刷子填充 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hdc Long,设备场景的句柄 
    X1,Y1 Long,约束矩形采用逻辑坐标的左上角位置 
    X2,Y2 Long,约束矩形采用逻辑坐标的右下角位置 
      

  12.   

    我做的是数控软件中用的,用API可以画但跟其他的就不兼容了