Алгоритмы растровой графики. Представление отрезка в растровой форме.

Презентация:



Advertisements
Похожие презентации
Экран в графическом режиме представляет собой прямоугольник, заполненный точками – пикселями. X Y y x (0,0) Для построения изображения используется система.
Advertisements

Электронный справочник по процедурам и функциям модуля Graph языка программирования Turbo Pascal автор: Алиева Ирина Викторовна Учитель информатики и ИКТ.
Модуль GraphМодуль GraphИнициализация и завершение гpафического режима InitGraph (driver, mode : integer; path : string); При driver:=detect включается.
Алгоритмы растеризации Алгоритмы Брезенхема рисования отрезка и окружности.
ГРАФИЧЕСКИЙ РЕЖИМ Turbo Pascal 7.0. Графические операции Система координат Инициализация Изображение точек Изображение линий Закрашенные фигуры Вывод.
«Графические возможности языка программирования Паскаль»
Графические примитивы (процедуры) SetPixel(x,y,color); рисует точку с координатами (x, y) цветом color Line(x1,y1,x2,y2); рисует отрезок из точки с координатами.
Построение изображений по линиям.. Очистка экрана ClearDevice – очистка экрана в графическом режиме. С момента начала ее выполнения все установки по цвету,
Линейный алгоритм в графических задачах. Вся поверхность монитора в графическом режиме представляется совокупностью прямоугольников, которые называются.
Задание графического режима Линия Прямоугольник Окружность Эллипс Дуга выход Тест 2Тест 1 содержание.
Графический режим Инициализация графического режима. Построение точки, линии.
Машинная графика Операторы построения точки, отрезка, прямоугольника, закрашенного прямоугольника.
Построение фигур Дуга, окружность, прямоугольник, эллипс.
1 Графика в Pascal Модуль Graph. 2 Подключение дополнительных библиотек Для работы в графическом режиме необходимо подключение модуля Graph. Первой инструкцией.
Векторная и растровая графика. Виды компьютерной графики Растровая Растровая Векторная Векторная Фрактальная Фрактальная.
Графика в Паскале Учитель информатики и ИКТ СОШ 60 Грязнова А. В.
Графика в Turbo Pascal ГБОУ СПО «КСТ», г. Калуга преподаватель Шамрина Ольга Николаевна.
Графические операторы в языке Pascal Учитель информатики школы-гимназии 1, г. Шымкента Воробьевская Л.В.
Урок 1 Знакомство с графическим модулем и процедурами, устанавливающими текущий цвет рисунка, тип закраски и ее цвет, рисующими прямоугольник и трехмерный.
Отображение в окне. Отображение проекции сцены: а границы сцены в координатах проекции; б в окне часть сцены, в вся сцена с сохранением пропорций вписана.
Транксрипт:

Алгоритмы растровой графики. Представление отрезка в растровой форме.

P 1, P 2, …, P n, где P i и P i+1 - соседние 8 – связные точки (|x i+1 - x i | 1 и |y i+1 - y i | 1 4 – связные точки (|x i+1 - x i | + |y i+1 - y i | 1

Простейший алгоритм построения отрезка Уравнение прямой y = kx + b, где k = (y 2 - y 1 ) /(x 2 - x 1 ) (x 1, y 1 ) (x 2, y 2 ) void Line1 (int x1, int y1, int x2, int y2) { double k, b; int x; k = (y2-y1)/((x2-x1); b = y1 – kx1; for (x=x1; x x2; x++) putpixel (x, round(k*x+b), color); }

x i+1 – x i = 1 k = y / x = y. x i+1 = x i + 1 y i+1 = y i + y = y i + k Простейший пошаговый алгоритм Если k > 1: y i+1 = y i + 1 => x i + 1 = x i + x = x i + 1/k void Line2 (int x1, int y1, int x2, int y2) { float y,m; int x, dx, dy; if (x1 != x2) { dy = y2 - y1; dx = x2 - x1; k = dy/dx; for (x = x1, y = y1; x x2; x++, y+=k) putpixel (x, round(y), color); } else f or (x = x1, y = y1; y y2; y++) putpixel (x, round(y), color); }

Алгоритм Брезенхема. Если (s – t) > 0 T i Если (s – t) < 0 S i s = (dy/dx) * (r + 1) - q t = q (dy/dx) * (r + 1) s – t = 2(dy/dx) * (r + 1) - 2q – 1 dx * (s - t) = 2(r*dy - q*dx) + 2dy – dx d i = 2(x i-1 *dy - y i-1 *dx) + 2dy – dx d i+1 = 2(x i *dy- y i *dx) + 2dy – dx d i+1 – d i = 2dy(x i – x i-1 ) - 2dx( y i – y i-1 )

Алгоритм Брезенхема. d i = 2(x i-1 *dy - y i-1 *dx) + 2dy – dx d i+1 – d i = 2dy(x i – x i-1 ) - 2dx( y i – y i-1 ) d i+1 = d i + 2dy - 2dx( y i – y i-1 ) Если d i < 0 d i+1 = d i + 2dy Если d i > 0 d i+1 = d i + 2dy - 2dx d 1 = 2dy - dx

Алгоритм Брезенхема (пример реализации на языке СИ). Если d i < 0 d i+1 = d i + 2dy Если d i > 0 d i+1 = d i + 2dy - 2dx d 1 = 2dy - dx void Line3 (int x1, int y1, int x2, int y2) { int x, y, dx, dy, sx, sy, d, d1, d2, i; dx = abs(x2 - x1); dy = abs(y2 - y1); sx = x2 >= x1?1:-1; sy = y2 >= y1?1:-1; if (dy dx) { d = (dy

Алгоритм Брезенхема (пример реализации на языке СИ). Если d i < 0 d i+1 = d i + 2dx Если d i > 0 d i+1 = d i + 2dx - 2dy d 1 = 2dx - dy else // (dy > dx) { d = (dx

Функции, осуществляющие построение и вывод на экран отрезка. Функция line() проводит отрезок от точки (X 1,Y 1 ) до точки (X 2,Y 2 ). #include void far line(int x1,int y1,int x2,int y2 ); Функция line()

Функции, осуществляющие построение и вывод на экран отрезка. Функция linerel( ) проводит отрезок от текущей позиции до точки, заданной смещением dx и dy от текущей позиции. #include void far linerel ( int dx, int dy ); Функция linerel( )

Функции, осуществляющие построение и вывод на экран отрезка. Функция lineto( ) проводит отрезок от текущей позиции до точки, заданной координатами X и Y. #include void far lineto ( int x, int y); Функция lineto( )

Функции вывода основных графических примитивов. Функция arc( ) выводит дугу окружности. #include void far arc(int x,int y,int stangle, int endangle,int radius); Функция arc( )

Функции вывода основных графических примитивов. Функция circle() выводит окружность #include void far circle ( int x, int y, int radius) Функция circle()

Функции вывода основных графических примитивов. Функция ellipse() выводит эллипс (или эллиптическую дугу). #include void far ellipse (int x,int y,int stangle, int endangle,int xradius,int yradius ); Функция ellipse()

Предопределённые стили линии. linestyle=3 linestyle=1 linestyle=0 linestyle=2 Функция setlinestyle(). Функция setlinestyle() выполняет выбор(задание) стиля линии #include void setlinestile ( int linestyle, unsigned upattern, int thickness);

Предопределённые режимы вывода. определяет, каким образом будут выводиться на экран пикселы, образующие графические примитивы: а) переопределяя (заменяя) пикселы на экране текущим цветом (mode=0); б) как результат выполнения операции XOR кода текущего цвета и кода цвета пиксела на экране, через которые линия проходит (mode=1). Таким образом, данная функция устанавливает соответствующим образом разряды 3 и 4 регистра сдвига данных/выбора функции либо в 00b, либо в 11b. Функция setwritemode(). Функция setwritemode() задаёт атрибут режима вывода графических примитивов #include void setwritemode(int mode);