Лабораторная работа №5 по компьютерной графике icon

Лабораторная работа №5 по компьютерной графике



НазваниеЛабораторная работа №5 по компьютерной графике
Дата конвертации07.09.2012
Размер37.21 Kb.
ТипЛабораторная работа
1. /Comp_gr/LAB_1/LAB1_CH.DOC
2. /Comp_gr/LAB_2/PROG2K.DOC
3. /Comp_gr/LAB_2/ПСЕВДО.DOC
4. /Comp_gr/LAB_2/Семантика.doc
5. /Comp_gr/LAB_2/титул.doc
6. /Comp_gr/LAB_3/LAB3_СН.DOC
7. /Comp_gr/LAB_4/LAB4.DOC
8. /Comp_gr/LAB_4/TITUL.DOC
9. /Comp_gr/LAB_4/Результат1.doc
10. /Comp_gr/LAB_4/Результат2.doc
11. /Comp_gr/LAB_5/LAB5_CH.DOC
12. /Comp_gr/LAB_8/LABA8.DOC
Лабораторная работа №1 по предмету Компьютерная графика
Program Lab2; { Программа построения растра 32x32 }
{активация гр режима}
Семантика базы переменных
Технический университет Лабораторная работа №2 по компьютерной графике тема: Построение растра
Лабораторная работа №3 по компьютерной графике
Постановка задачи
Лабораторная работа №4 по компьютерной графике
Шаг | Координаты (X,Y) | Расчетн.(X,Y)
Шаг | Координаты (X,Y) | Расч(X,Y)
Лабораторная работа №5 по компьютерной графике
Лабораторная работа №8

Московский институт радиотехники электроники и автоматики

(технический университет)


Лабораторная работа № 5

по компьютерной графике




ТЕМА: Алгоритмы машинной графики




Работу выполнил студент

группы -----------------

Работу приняла Криницкая Е.В.


Москва

2001

Постановка задачи



1.Пусть задан многоугольник.

2.Осуществить заполнение многоугольника цветом границы, используя построчный и 4-х связный алгоритмы.

3.Сопоставить работу алгоритмов.

Алгоритм реализуемого метода



Построчный алгоритм заполнения затравкой.


База данных

gif" name="object1" align=bottom width=565 height=186>


Начало


O_v=getpixel(x,y)

Xl=x

Xr=x



While(getpixel(xl,y) <> b_v или n_v do

Xl=xl-1

Определение левой границы

While(getpixel(xr,y) <> b_v или n_v do

Xr=xr+1

Определение правой границы

Xl=xl+1

Xr=xr-1

Setcolor(n_v)

Line(xl,y,xr,y)

For x=xl to xr do

If(getpixel(x,y-1)<>b_v или n_v)

X=linefill(x,y-1,b_v,n_v)

For x=xr to x do

If(getpixel(x,y-1)<>b_v или n_v)

X=linefill(x,y-1,b_v,n_v)


Конец.


Рекурсивный алгоритм для 4-х связной области.


x, y – координата точки внутри многоугольника, с которой начнется его заливка

new_col – цвет заливки

line_col – цвет границы


Procedure Zakr4X(x, y, new_col, line_col);

Begin

Если цвет текущей точки не является цветом линии или цветом заливки, то

begin

PutPixel(x, y, new_col);

Zakr4x(x-1, y, line_col, new_col);

Zakr4x(x+1, y, line_col, new_col);

Zakr4x(x, y-1, line_col, new_col);

Zakr4x(x, y+1, line_col, new_col);

end;

End;


Программа на ТР.


Program Laba5;

Uses Graph,Crt;


Var

GraphDrv,GraphMode,C,BorderColor,Color,G:integer;

Key:char;


Procedure Init; {Инициализация графики}

Begin

GraphDrv:=Detect;

InitGraph(GraphDrv,GraphMode,'');

If GraphResult<>GrOk then

Begin

WriteLn('GraphInitErrorCode:',GraphResult,''); Halt(1);

End;

End;


Function Postr(X,Y,Dir,PrevXL,PrevXR:INTEGER):INTEGER;

Var {Построчная закраска области}

XL:INTEGER;

XR:INTEGER;

Begin

XL:=X;

XR:=X;

Repeat

Dec(XL,1);

C:=GetPixel(XL,Y);

Until (C=BorderColor) or (C=Color);

Repeat

Inc(XR,1);

C:=GetPixel(XR,Y);

Until (C=BorderColor) Or (C=Color);

Inc(XL,1); Dec(XR,1); Line(XL,Y,XR,Y);

X:=XL;

While X<=XR Do

Begin

C:=GetPixel(X,Y+Dir);

If (C<>BorderColor) And (C<>Color) Then X:=Postr(X,Y+Dir,Dir,XL,XR);

Inc(X);

End;

X:=XL;

While X

Begin

C:=GetPixel(X,Y-Dir);

If (C<>BorderColor) And (C<>Color) Then X:=Postr(X,Y-Dir,-Dir,XL,XR);

Inc(X);

End;

X:=PrevXR;

While X
Begin

C:=GetPixel(X,Y-Dir);

If (C<>BorderColor) And (C<>Color) Then X:=Postr(X,Y-Dir,-Dir,XL,XR);

Inc(X);

End;

Postr:=XR;

End;


Procedure PostrZakr(X,Y:INTEGER); {Вызов функции построчной закраски}

Begin

G:=Postr(X,Y,1,X,X);

End;


procedure figure; {фигура для заливки}

begin

init;

Setcolor(white);

Line(400, 5, 220, 100);

Line(220, 100, 170, 50);

Line(170, 50, 90, 125);

Line(90, 125, 145, 225);

Line(145, 225, 170, 125);

Line(170, 125, 330, 300);

Line(330, 300, 400, 5);

Key:=ReadKey;

end;


Procedure Zakr4X(X,Y,Old_V,New_V:INTEGER);{Закраска 4-х связным алгоритмом}

Begin

If (GetPixel(X,Y)=Old_V) And (GetPixel(X,Y)<>New_V) Then

Begin

PutPixel(X,Y,New_V);

Zakr4X(X-1,Y,Old_V,New_V);

Zakr4X(X+1,Y,Old_V,New_V);

Zakr4X(X,Y-1,Old_V,New_V);

Zakr4X(X,Y+1,Old_V,New_V);

End;

End;


Procedure VizZakr4X;

Begin

Figure;

Zakr4X(300,150,Black,red);

Key:=ReadKey;

CloseGraph;

End;


begin

figure;

BorderColor:=white;

Color:=red;

PostrZakr(300,150);

key:=readkey;

VizZakr4X;

end.


Вывод: при проверке работы программы выяснилось, что алгоритм построчного заполнения со своей задачей справился(многоугольник был полностью закрашен), а рекурсивный алгоритм для 4-х связной области не справился. Это объясняется тем, что 4-х связному алгоритму при закрашивании больших областей требуется большой объем стека (у меня в программе произошло переполнение стека и многоугольник не был закрашен полностью). Алгоритм построчного заполнения намного эффективнее, так как он требует намного меньше ресурсов машины.




Похожие:

Лабораторная работа №5 по компьютерной графике iconДокументы
1. /OOP/Лабораторная работа ь00-Введение.doc
2. /OOP/Лабораторная...

Лабораторная работа №5 по компьютерной графике iconЛабораторная работа: создание мини-презентации «Памятники Кремля»
Лабораторная работа проводится в компьютерном классе, с подключением к сети Internet
Лабораторная работа №5 по компьютерной графике iconДокументы
1. /Lab1/Лабораторная работа 1.doc
2. /Lab2/Лабораторная...

Лабораторная работа №5 по компьютерной графике iconИ я забуду Покажи мне и я запомню, Дай мне действовать самому и я научусь. Китайская мудрость Тема: Лабораторная работа
Тема: «Лабораторная работа «Измерение работы и мощности тока в электрической лампочке»
Лабораторная работа №5 по компьютерной графике iconДокументы
1. /Nash/lab1/Лабораторная работа ь1.doc
2. /Nash/lab10/Лабораторная...

Лабораторная работа №5 по компьютерной графике iconЛабораторная работа №2 «Система безопасности Windows xp»
Лабораторная работа №2 «Система безопасности Windows xp» Цель работы: Изучить систему безопасности Windows xp
Лабораторная работа №5 по компьютерной графике iconЛабораторная работа «Работа в Windows c помощью основного меню. Использование технологии ole»
Запишите размер папки, выраженный в Мб (мегабайтах) в текстовый редактор блокнот
Лабораторная работа №5 по компьютерной графике iconЛабораторная работа «Работа с текстовыми фрагментами без помощи мыши»
Скопируйте последнее слово получившегося текста и вставьте его в начало текста один раз
Лабораторная работа №5 по компьютерной графике iconДокументы
1. /Базовые задачи на обработку массива.doc
2. /ЗадачиНаЛиниВетвление.doc
Лабораторная работа №5 по компьютерной графике iconДокументы
1. /laba/Лабораторная работа ь1.doc
2. /laba/Лабораторная...

Лабораторная работа №5 по компьютерной графике iconДокументы
1. /механизация/~$б работа ь4.doc
2. /механизация/~$бораторная...

Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов