Описание структуры и алгоритма программы
Основной модуль
Задание 1
Задание 2
Лабораторная 1
Задание 3
Математический модуль
ЦДА
Лабораторная 2
Брезенхема
Окружность брезенхема
Несимметричный ЦДА
Выбор стиля
Рис.Фигуру
Рисунок 3.1. Структура программы
Основной алгоритм программного модуля.
В зависимости от выбранной программы, в главном окне выбираются либо примеры, либо лабораторные работы (см. рис.5.1.).
При выборе необходимой программы запускается форма данного проекта.
Описание основных процедур и функций
Алгоритмы
Все элементы рисуем при помощи одной процедуры и при использовании case:
procedure TForm3.Button3Click(Sender: TObject);
Нарисовать точку, используя стиль линии
procedure PixelSize(X,Y : Integer);
x, y – координата точки – «пикселя», в зависимости от толщины линии, выводит объект «уголок» с заданной шириной.
procedure PixelStyle(X, Y: Integer);
x, y – координата точки – «пикселя», в зависимости от вида и толщины линии, выводит или не выводит объект «крест» с заданной шириной задействует процедуру PixelSize
Обычный ЦДА
Цифровой дифференциальный анализатор
С помощью ЦДА решается дифференциальное уравнение отрезка:
dY/dX= dy / dx
где
dx := xk - xn; приращение координат отрезка по оси Y
dy := yk - yn; приращение координат отрезка по оси X
Установим начальные значения:
xt := xn;
yt := yn;
где
(xn, yn) – координаты начальной точки,
(xk, yk) – координаты конечной точки, полученные в качестве параметров функции:
Case linetype of 1:
Определим количество узлов N, используемых для аппроксимации отрезка.
n := abs(dx) + abs(dy);
Затем за n циклов вычисляются координаты очередных узлов:
xt := xt + dx / n;
yt := yt + dy / n;
Получаемые значения xt, yt преобразуются в целочисленные значения координаты очередного пиксела округлением
PixelStyle(round(xt), round(yt));
На каждом шаге цикла выводим получившийся пиксель, используя стиль пера.
Несимметричный ЦДА;
Case linetype of 2
(xn, yn) – координаты начальной точки,
(xk, yk) – координаты конечной точки
Процедура осуществляющая рисование отрезка по алгоритму несимметричного ЦДА.
Case linetype of 3:
procedure brezenhem(xn, yn, xk, yk: Integer);
(xn, yn) – координаты начальной точки,
(xk, yk) – координаты конечной точки
Процедура осуществляющая рисование отрезка по алгоритму Брезенхема.
Генерация окружности
Case Linetype of 4:
xn, yn – центр окружности, r – радиус.
Процедура осуществляющая рисование окружности по алгоритму Брезенхема.
Интерфейс
Очистка экрана
Procedure TForm3.Button1Click(Sender: TObject);
Изменение толщины линии
procedure TFormLab2.ComboBox1Change(Sender: TObject);
Изменение вида линии
procedure TFormLab2.ComboBox2Change(Sender: TObject);
Рисуем фигуру
procedure TForm3.Button3Click(Sender: TObject);
Установка начальной координаты
procedure TFormLab2.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton);
установка значений - xn, yn
Определение второй координаты, выбор процедуры обработки и нарисования отрезка
procedure TFormLab2.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton);
установка значений - xк, yк
