[Код] Быстрый алгоритм построения окружности (Брезенхейм)

Здесь Вы можете найти или обсудить множество различных алгоритмов, их описаний, реализаций на VB и других языках.
Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

[Код] Быстрый алгоритм построения окружности (Брезенхейм)

Сообщение Nord777 » 01.01.2008 (Вт) 17:54

Реализация на VB.Net

Код: Выделить всё
   ''' <summary>
  ''' Алгоритм Брезенхейма для построения окружности
  ''' </summary>
  ''' <param name="xc">координата X центра окружности</param>
  ''' <param name="yc">координата Y центра окружности</param>
  ''' <param name="r">Радиус окружности</param>
  Sub DrawCircle(ByVal xc%, ByVal yc%, ByVal r%)
    Dim G As Graphics = Me.CreateGraphics
    Dim x%, y%, d%
    d = 3 - 2 * r
    x = 0 : y = r
    Do While x <= y
      'При помощи FillRectangle рисуется отдельный пиксель ))
      'PS: Не самый быстрый способ отрисовки(только для примера)
      G.FillRectangle(Brushes.Black, x + xc, y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, x + xc, -y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -x + xc, -y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -x + xc, y + yc, 1, 1)
      G.FillRectangle(Brushes.Black, y + xc, x + yc, 1, 1)
      G.FillRectangle(Brushes.Black, y + xc, -x + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -y + xc, -x + yc, 1, 1)
      G.FillRectangle(Brushes.Black, -y + xc, x + yc, 1, 1)
      If d < 0 Then
        d = d + 4 * x + 6
      Else
        d = d + 4 * (x - y) + 10
        y -= 1
      End If
      x += 1
    Loop

    G.Dispose()
  End Sub
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList