Реализовать рекурсивный алгоритм построения кривых Гильберта - VB

Узнай цену своей работы

Формулировка задачи:

Реализовать рекурсивный алгоритм построения кривых Гильберта.

Решение задачи: «Реализовать рекурсивный алгоритм построения кривых Гильберта»

textual
Листинг программы
  1. ' Кривая Гильберта состоит из четырех соединенных прямыми
  2. ' элементов: a, b, c и d. Каждый элемент строит
  3. ' соответствующая процедура.
  4.  
  5. Dim p As Integer        ' порядок кривой
  6. Dim u As Integer        ' длина штриха
  7. Dim size As Integer     ' размер кривой
  8.  
  9. ' процедура рисует элемент a
  10. Sub a(i As Integer)
  11.    If i > 0 Then
  12.       Call d(i - 1)
  13.       Line -(CurrentX + u, CurrentY)
  14.       Call a(i - 1)
  15.       Line -(CurrentX, CurrentY + u)
  16.       Call a(i - 1)
  17.       Line -(CurrentX - u, CurrentY)
  18.       Call c(i - 1)
  19.    End If
  20. End Sub
  21.  
  22. ' процедура рисует элемент b
  23. Sub b(i As Integer)
  24.    If i > 0 Then
  25.       Call c(i - 1)
  26.       Line -(CurrentX - u, CurrentY)
  27.       Call b(i - 1)
  28.       Line -(CurrentX, CurrentY - u)
  29.       Call b(i - 1)
  30.       Line -(CurrentX + u, CurrentY)
  31.       Call d(i - 1)
  32.    End If
  33. End Sub
  34.  
  35. ' процедура рисует элемент c
  36. Sub c(i As Integer)
  37.    If i > 0 Then
  38.       Call b(i - 1)
  39.       Line -(CurrentX, CurrentY - u)
  40.       Call c(i - 1)
  41.       Line -(CurrentX - u, CurrentY)
  42.       Call c(i - 1)
  43.       Line -(CurrentX, CurrentY + u)
  44.       Call a(i - 1)
  45.    End If
  46. End Sub
  47.  
  48. ' процедура рисует элемент d
  49. Sub d(i As Integer)
  50.    If i > 0 Then
  51.       Call a(i - 1)
  52.       Line -(CurrentX, CurrentY + u)
  53.       Call d(i - 1)
  54.       Line -(CurrentX + u, CurrentY)
  55.       Call d(i - 1)
  56.       Line -(CurrentX, CurrentY - u)
  57.       Call b(i - 1)
  58.    End If
  59. End Sub
  60.  
  61. ' инициализация формы
  62. Private Sub Form_Initialize()
  63.    p = 5
  64.    u = 7
  65.    
  66.    ' размер кривой (количество элементов по длине или ширине)
  67.   ' определяется как 2 в степени p минус 1 (2^p - 1)
  68.   size = 2
  69.    For i = 1 To (p - 1)
  70.       size = size * 2
  71.    Next i
  72.    size = size - 1
  73.    
  74.    Form1.Height = (Form1.Height - Form1.ScaleHeight) + _
  75.                   (size + 2) * u * Screen.TwipsPerPixelY
  76.    Form1.Width = (Form1.Width - Form1.ScaleWidth) + _
  77.                  (size + 2) * u * Screen.TwipsPerPixelX
  78.  
  79.    Form1.ScaleMode = 3
  80. End Sub
  81.  
  82. ' обработка события Paint
  83. Private Sub Form_Paint()
  84.    Form1.CurrentX = u
  85.    Form1.CurrentY = u
  86.    
  87.    ' вычерчивание кривой Гильберта
  88.   Call a(p)
  89. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы