21
Сентябрь
2011
Кривая Коха — как правильно построить рекурсию
Кривая Коха — как правильно построить рекурсию
Option Explicit Dim L, h, xstart, ystart, xend, yend As Double Dim level As Integer Private Sub scaling(xstart, ystart, xend, yend) Picture1.Scale (-xstart, xstart)-(xstart, -xstart) Picture1.DrawWidth = 2 End Sub Private Sub Command1_Click() xstart = -10: ystart = 0: xend = 10: yend = 0: level = Val(Text1.Text) If level < = 0 Or level > 10 Then MsgBox "Глибина інтерацій має бути в межах від 0 до 10! Повторіть введения...", vbInformation, "ERROR" Text1.Text = "" Exit Sub End If Picture1.Cls scaling xstart, ystart, xend, yend KokhCurve xstart, ystart, xend, yend, level End Sub Private Sub KokhCurve(xstart, ystart, xend, yend, level) Dim L, h, sina, cosa, x1, y1, x2, y2, x3, y3 As Double If level = 1 Then Picture1.Line (xstart, ystart)-(xend, yend), RGB(0, 255, 0) Else L = Sqr((xend - xstart) * (xend - xstart) + (yend - ystart) * (yend - ystart)) h = L / (2 * Sqr(3)) sina = (yend - ystart) / L cosa = (xend - xstart) / L x1 = xstart + (xend - xstart) / 3 x2 = (xstart + xend) / 2 + h * sina x3 = xstart + 2 * (xend - xstart) / 3 y1 = ystart + (yend - ystart) / 3 y2 = (ystart + yend) / 2 - h * cosa y3 = ystart + 2 * (yend - ystart) / 3 KokhCurve xstart, ystart, x1, y1, level - 1 KokhCurve x1, y1, x2, y2, level - 1 KokhCurve x2, y2, x3, y3, level - 1 KokhCurve x3, y3, xend, yend, level - 1 End If End Sub