Реферат: Сравнительные характеристики трёх наиболее эффективных алгоритмов рисования отрезка
где m — угловой коэффициент. В нашем случае при начальном значении ошибки —1/2
е = -1/2+ 3/8 = -1/8
Так как е отрицательно, отрезок пройдет ниже середины пиксела. Следовательно, пиксел на том же самом горизонтальном уровне лучше аппроксимирует положение отрезка, поэтому у не увеличивается. Аналогично вычисляем ошибку
е = -1/8 + 3/8 = 1/4
в следующей точке растра (2, 0). Теперь е положительно, а значит, отрезок пройдет выше средней точки. Растровый элемент (2, 1) со следующей по величине координатой у лучше аппроксимирует положение отрезка. Следовательно, у увеличивается на единицу. Прежде чем рассматривать следующий пиксел, необходимо откорректировать ошибку вычитанием из нее единицы. Имеем
е = 1/4- 1 = -3/4
Заметим, что пересечение вертикальной прямой х = 2 с заданным отрезком лежит на 1/4 ниже прямой y = 1. Если же перенести отрезок 1/2 вниз, мы получим как раз величину -3/4. Продолжение вычислений для следующего пиксела дает
e = - 3/4 + 3/8 = - 3/8
Так как e отрицательно, то .у не увеличивается. Из всего сказанного следует, что ошибка — это интервал, отсекаемый по оси у рассматриваемым отрезком в каждом растровом элементе (относительно —1/2).
3. Описание программы
3.1. Описание интерфейса
Реализация каждого метода генерации отрезков проводилась в среде объектно-ориентированного программирования Delphi 7. Поставлена задача запрограммировать алгоритмы генерации отрезков, создать форму для ввода данных и вывода результата.
Для каждого из трех алгоритмов создается окно приложения (рис. 1.4).
Рис. 1.4. Внешний вид окна приложения
В итоге создано приложение Windows.
На форме расположены:
Три поля, на которых будет отображаться результат построения отрезков для каждого метода в отдельности.
Поле «Ввод количества линий» служит для ввода количества линий, которые будут сгенерированы генератором случайных чисел.
Три поля «время», на которых отображается время построения отрезков для каждого метода в отдельности.
Рис.3.2 Результат работы приложения
3.2. Описание логической структуры
В проект добавлены компоненты Form1 – главная форма. На главной форме размещаются компоненты: Image – окно для вывода линий, Panel – панель для вывода времени, затраченного на генерацию отрезков, Edit1 – окошечко для ввода количества линий, которые будут сгенерированы генератором случайных чисел и Button – кнопка для подтверждения ввода количества линий / для очистки компонента Image и сброса всех настроек. Label – показывает число построенных линий
Заключение
Заканчивая наш обзор методов генерации отрезков, попытаемся сравнить их эффективность.
Метод Брезенхема определенно наихудший из всех сравниваемых, этот алгоритм обладает очень плохими временными характеристиками. Он имеет только учебно-исторический интерес и не может быть рекомендован для практического использования.
Алогритм Цифрового Дифференциального Анализатора в среднем (в зависимости от количества введенных линий) лучше, чем метод Брезенхема. По сравнению с методом Брезенхема метод ЦДА в большинстве случаев может оказаться более быстрым.
Процедура LineTo оказалась самой быстрой и результативной из всех трех алгоритмов