Реализовать рекурсивный алгоритм построения кривых Гильберта - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д