21 Сентябрь 2011

Кривая Коха — как правильно построить рекурсию

Арифметика |  Таги: ,

Кривая Коха — как правильно построить рекурсию

Private Sub Command1_Click()
  Cls
  Kohh Text1.Text, 0, Me.ScaleHeight - 10 * Screen.TwipsPerPixelY, _
                   Me.ScaleWidth, Me.ScaleHeight - 10 * Screen.TwipsPerPixelY
End Sub

Private Sub Kohh(NumIt As Integer, x1&, y1&, x2&, y2&)
  If NumIt = 1 Or (x1 \ Screen.TwipsPerPixelX = x2 \ Screen.TwipsPerPixelX And y1 \ Screen.TwipsPerPixelY = y2 \ Screen.TwipsPerPixelY) Then
    Line (x1, y1)-(x2, y2)
  Else
    Kohh NumIt - 1, x1, y1, _
                    x1 + (x2 - x1) / 3, y1 + (y2 - y1) / 3
    Kohh NumIt - 1, x1 + (x2 - x1) / 3, y1 + (y2 - y1) / 3, _
                    (x1 + x2) / 2 + (y2 - y1) * Sqr(3) / 6, (y1 + y2) / 2 - (x2 - x1) * Sqr(3) / 6
    Kohh NumIt - 1, (x1 + x2) / 2 + (y2 - y1) * Sqr(3) / 6, (y1 + y2) / 2 - (x2 - x1) * Sqr(3) / 6, _
                    x2 - (x2 - x1) / 3, y2 - (y2 - y1) / 3
    Kohh NumIt - 1, x2 - (x2 - x1) / 3, y2 - (y2 - y1) / 3, _
                    x2, y2
  End If

  Stps = (Stps + 1) Mod 30000
  If Stps = 0 Then DoEvents
End Sub


Оставить комментарий

Я не робот.