Читайте также:
|
|
Лабораторная работа №2
Цель работы:
Изучение алгоритмов разложения в растр графических примитивов.
Форма проекта:
Код программы для прямой:
Private Sub Command1_Click()
Picture1.Cls
Picture1.Scale (-2500, 2500)-(2500, -2500)
X1 = Val(Text2): Y1 = Val(Text3)
X2 = Val(Text4): Y2 = Val(Text5)
d = X2 - X1
dx = 1
dy = Abs((Y2 - Y1) / (X2 - X1))
X = X1: Y = Y1: i = 1
Do While i < d
Picture1.PSet (X, Round(Y)), vbRed
X = X + dx
Y = Y + dy
i = i + 1
Loop
End Sub
Результат:
Окружность:
Блок-схема алгоритма Брезенхема генерации окружности в первом квадранте
Алгоритм, представленный на блок-схеме позволяет строить только одну восьмую часть окружности. Остальные ее части могут быть получены последовательными отражениями.
Матрица преобразований для генерации полной окружности
Код программы для окружности:
Private Sub Command2_Click()
Picture1.Cls
Picture1.Scale (-2500, 2500)-(2500, -2500)
r = Val(Text6)
X = 0
Y = r
d = 2 * (1 - r)
l = 0
Do While Y > l
Picture1.PSet (X, Y), vbRed
Picture1.PSet (X, -Y), vbRed
Picture1.PSet (-X, -Y), vbRed
Picture1.PSet (-X, Y), vbRed
If d < 0 Then
s = 2 * d + 2 * Y - 1
If s <= 0 Then
X = X + 1
d = d + 2 * X + 1
Else
X = X + 1
Y = Y - 1
d = d + 2 * X - 2 * Y + 2
End If
Else
If d > 0 Then
s = 2 * d - 2 * X - 1
If s <= 0 Then
X = X + 1
Y = Y - 1
d = d + 2 * X - 2 * Y + 2
Else
Y = Y - 1
d = d - 2 * Y + 1
End If
Else
X = X + 1
Y = Y - 1
d = d + 2 * X + 2 * Y + 2
End If
End If
Loop
End Sub
Результат:
Ответы на контрольные вопросы:
1. В чем недостатки простейшего метода разложения в растр отрезка?
В некоторых случаях, в отрезке, разложенном в растр простейшим методом, могут появиться разрывы, например, если выбрать такой отрезок, у которого разброс по оси Y больше разброса по оси X в несколько раз. Вдобавок предложенный алгоритм имеет тот недостаток, что он использует вещественную
арифметику.
2. Как работает алгоритм Брезенхема разложения в растр линии?
Алгоритм Брезенхема выбирает оптимальные растровые координаты, используя целочисленную арифметику. В процессе работы одна из координат (x или y) на каждом шаге обязательно меняется на единицу. Изменение другой координаты (на 0 или 1) зависит от расстояния между действительным положением отрезка и ближайшими координатами сетки. Это расстояние называют ошибкой.
3. Как работает алгоритм Брезенхема разложения в растр окружности?
Выбирается генерация по часовой стрелке с началом в точке x = 0, y = R.
Предполагается, что центр окружности и начальная точка находятся точно в точках растра. Для любой заданной точки на окружности при генерации по часовой стрелке существует только три возможности выбрать следующий пиксел, наилучшим образом приближающий окружность: горизонтально вправо, по диагонали вниз и вправо, вертикально вниз.
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
Уфимский государственный авиационный технический университет
кафедра информатики
Отчет по лабораторной работе №2
«Алгоритмы разложения в растр графических примитивов в Visual Basic»
Выполнил:
ст. гр. БПС-101
Ильясов Р.Г.
Тарасова М.Н.
Проверил:
к.т.н., доцент
Низамова Г.Ф.
Уфа-2011
Дата добавления: 2015-07-26; просмотров: 148 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Метаморфические горные породы | | | Противоаэрозольные фильтры |