當前位置:編程學習大全網 - 源碼下載 - 橢圓成生算法

橢圓成生算法

設已知壹長軸為len,及另壹長軸的端點坐標(x1,y1)和(x2,y2)

求橢圓步驟:

1、求a,b: a=len/2 b=sqr((x1-x2)^2+(y1-y2)^2)

2、求旋轉角α :求出(y1-y2)/(x1-x2)的反正切值即為α

3、求橢圓中心坐標(x0,y0): x0=(x1+x2)/2 y0=(y1+y2)/2

3、計算橢圓上點的坐標(x,y):

x=acosθ , y=bsinθ ( 0<=θ< 2*π)

4、計算圖形繞原點旋轉α 弧度後的坐標(xx,yy):

xx=x*cos(-α )+y*sin(-α )

yy=-x*sin(-α )+y*cos(-α )

5、計算橢圓中心從原點平移到(x0,y0)後橢圓上點的坐標(xxx,yyy):

xxx=xx+x0

yyy=yy+y0

6、在坐標(xxx,yyy)處畫壹各點

7、在( 0<=θ< 2*π)範圍內,按壹定間隔取值,重復3-7步驟,即得所要求的橢圓。

以下是vb寫的簡單示例,新建壹各工程,把代碼粘貼進去替換原來的所有代碼,運行即可看效果

Option Explicit

Dim X1, Y1, X0, Y0, X2, Y2 As Double

Dim A, B, PI As Double

Dim F As Boolean

Private Sub Form_Load()

PI = 3.14159265358979

F = False

DrawWidth = 2

Width = 10000

Height = 8000

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

X1 = X

Y1 = Y

B = 1000

F = True

End Sub

Public Sub tuoYuan()

Dim Jiao As Double

Dim i, m, n, m1, n1 As Double

Cls

X0 = (X1 + X2) / 2

Y0 = (Y1 + Y2) / 2

A = Sqr((X0 - X2) ^ 2 + (Y0 - Y2) ^ 2)

If X1 <> X2 Then

Jiao = Atn((Y1 - Y2) / (X1 - X2))

Else

Jiao = PI / 2

End If

Form1.PSet (X1, Y1), RGB(255, 0, 0)

Form1.PSet (X0, Y0), RGB(255, 0, 0)

Form1.PSet (X2, Y2), RGB(255, 0, 0)

For i = 0 To PI * 2 Step 0.01

m = A * Cos(i)

n = B * Sin(i)

'Form1.PSet (m + X0, n + Y0), RGB(255, 0, 0)

m1 = m * Cos(-Jiao) + n * Sin(-Jiao)

n1 = -m * Sin(-Jiao) + n * Cos(-Jiao)

Form1.PSet (m1 + X0, n1 + Y0), RGB(0, 255, 0)

Next i

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If F = True Then

X2 = X

Y2 = Y

Call tuoYuan

End If

End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

F = False

X2 = X

Y2 = Y

Call tuoYuan

End Sub

  • 上一篇:微信小程序開發選修課難嗎
  • 下一篇:如何安裝運行PHP網站
  • copyright 2024編程學習大全網