Реализовать рекурсивный алгоритм построения кривых Гильберта - VB
Формулировка задачи:
Реализовать рекурсивный алгоритм построения кривых Гильберта.
Решение задачи: «Реализовать рекурсивный алгоритм построения кривых Гильберта»
textual
Листинг программы
- ' Кривая Гильберта состоит из четырех соединенных прямыми
- ' элементов: a, b, c и d. Каждый элемент строит
- ' соответствующая процедура.
- Dim p As Integer ' порядок кривой
- Dim u As Integer ' длина штриха
- Dim size As Integer ' размер кривой
- ' процедура рисует элемент a
- Sub a(i As Integer)
- If i > 0 Then
- Call d(i - 1)
- Line -(CurrentX + u, CurrentY)
- Call a(i - 1)
- Line -(CurrentX, CurrentY + u)
- Call a(i - 1)
- Line -(CurrentX - u, CurrentY)
- Call c(i - 1)
- End If
- End Sub
- ' процедура рисует элемент b
- Sub b(i As Integer)
- If i > 0 Then
- Call c(i - 1)
- Line -(CurrentX - u, CurrentY)
- Call b(i - 1)
- Line -(CurrentX, CurrentY - u)
- Call b(i - 1)
- Line -(CurrentX + u, CurrentY)
- Call d(i - 1)
- End If
- End Sub
- ' процедура рисует элемент c
- Sub c(i As Integer)
- If i > 0 Then
- Call b(i - 1)
- Line -(CurrentX, CurrentY - u)
- Call c(i - 1)
- Line -(CurrentX - u, CurrentY)
- Call c(i - 1)
- Line -(CurrentX, CurrentY + u)
- Call a(i - 1)
- End If
- End Sub
- ' процедура рисует элемент d
- Sub d(i As Integer)
- If i > 0 Then
- Call a(i - 1)
- Line -(CurrentX, CurrentY + u)
- Call d(i - 1)
- Line -(CurrentX + u, CurrentY)
- Call d(i - 1)
- Line -(CurrentX, CurrentY - u)
- Call b(i - 1)
- End If
- End Sub
- ' инициализация формы
- Private Sub Form_Initialize()
- p = 5
- u = 7
- ' размер кривой (количество элементов по длине или ширине)
- ' определяется как 2 в степени p минус 1 (2^p - 1)
- size = 2
- For i = 1 To (p - 1)
- size = size * 2
- Next i
- size = size - 1
- Form1.Height = (Form1.Height - Form1.ScaleHeight) + _
- (size + 2) * u * Screen.TwipsPerPixelY
- Form1.Width = (Form1.Width - Form1.ScaleWidth) + _
- (size + 2) * u * Screen.TwipsPerPixelX
- Form1.ScaleMode = 3
- End Sub
- ' обработка события Paint
- Private Sub Form_Paint()
- Form1.CurrentX = u
- Form1.CurrentY = u
- ' вычерчивание кривой Гильберта
- Call a(p)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д