设椭圆中心在原点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;
我用点表示这个椭圆,为什么图形变形了,大家帮我看看好不
记 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;
我用点表示这个椭圆,为什么图形变形了,大家帮我看看好不
x1 = a*cosθ*u - b*sinθ*v;这个应该改为x1 = a*cosθ*u + b*sinθ*v;吧,我对程序不懂,不过刚看一下好像是方程有错了!不好意思,如果有说错了的话请原谅!
(x-a)/(m^2)+(y-b)/(n^2)=1(a,b)椭圆中心
m为半长轴长
n为半短轴长还有,如果你要画椭圆,用circle方法就可以了。
x=m*cosθ+a
y=n*sinθ+b
标准公式:
(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
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调试通过
或者运行的时候用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
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,约束矩形采用逻辑坐标的右下角位置