Автор работы: Пользователь скрыл имя, 13 Ноября 2011 в 21:58, курсовая работа
Цель работы - разработать алгоритмы заполнения различных фигур определенным стилем на языке Pascal .
Были выделены следующие задачи:
- изучить литературу по проблеме исследования.
-определить существующие стили заполнения.
- выявить возможности и средства компьютерной графики в Турбо Паскале.
- разработать алгоритмы заполнения различных фигур определенным стилем на языке Pascal .
Введение…………………………………………………………………………...3
Стиль заполнения. Кисть. Текстура……………………………………………………………………………5
Алгоритмы заполнения различных фигур определенным стилем……………………………………………………………………………...8
Заключение……………………………………………………………………….20
Список литературы………………………………………………………………21
X,Y,c:Integer;
Begin
{Инициализация графического режима}
Driver:=Detect;
InitGraph(Driver,Mode,'C:
SetColor(4);{красный цвет рисунка}
SetBkColor(0);{черный цвет фона}
rectangle(400,200,600,
for x:=400 to 600 do {перебираем координаты точки по х }
for y:=200 to 400 do {перебираем координаты точки по у }
if ((x mod 5) <2)and ((y mod 5)<2) then begin {задаем условие расстановки точек}
a:=0; {начальное значение угла окружности}
{перебираем все углы окружности с шагом 0,1}
while (a<6.28) do begin {цикл с предусловием}
ax:=Round(cos(a)*4)+x;{
ay:=Round(sin(a)*4)+y; {задаем параметрическое уравнение для окружности, которая служит стилем заполнения }
If ((ax>400) and (ax<600) and (ay>200) and (ay<400)) then begin{ограничиваем область заполнения квадратом}
c:=4; end else c:=0;
PutPixel(ax,ay,c); {процедура выставления точки с заданными координатами и цветом}
a:=a+0.1;{шаг}
end;
end;
ReadLn; {задержка изображения на экране до нажатия enter}
CloseGraph; {выход из графического режима в символьный}
End.
e) Матовая поверхность квадрата:
Uses Graph;{подключение модуля Graph}
Var
Driver,Mode:Integer;{
X,Y:Integer;
Begin
{Инициализация графического режима}
Driver:=Detect;
InitGraph(Driver,Mode,'C:
SetColor(4);{красный цвет рисунка}
SetBkColor(0);{черный цвет фона}
rectangle(400,300,600,
for x:=401 to 599 do {перебираем координаты точки по х }
for y:=301 to 499 do {перебираем координаты точки по у }
If ((ax>400) and (ax<600) and (ay>200) and (ay<400)) then begin{ограничиваем область заполнения квадратом}
PutPixel(x,y,random(16));
ReadLn; {задержка изображения на экране до нажатия enter}
CloseGraph; {выход из графического режима в символьный}
End.
Алгоритм заполнения окружности разными стилями:
а) Заполнение точками:
Uses Graph; {подключение модуля Graph}
Var Driver,Mode:Integer; {определяет тип и задает режим работы графического драйвера}
X,Y,xc,yc,c:Integer;
R:LongInt;
Begin
{Инициализация графического режима}
Driver:=Detect;
InitGraph(Driver,Mode,'C:
SetColor(4); {красный цвет рисунка}
SetBkColor(0); {черный цвет фона}
xc:=500;{координата центра окружности по х}
yc:=200; {координата центра окружности по y}
Circle(xc,yc,100); {Окружность с заданным центром и радиусом}
For X:=400 to 600 do {перебираем координаты точки по х }
For Y:=100 to 300 do{перебираем координаты точки по у }
If( sqr(x-xc ))+(sqr(y-yc))<99*99 then begin {ограничиваем область заполнения окружностью}
if ((x mod 5)<2) and ((y mod 5)<2) {задаем условие расстановки точек}
then c:=4 else c:=0;
PutPixel(x,y,c); {процедура выставления точки с заданными координатами и цветом}
end;
ReadLn; {задержка изображения на экране до нажатия enter}
CloseGraph; {выход из графического режима в символьный}
End.
b) Заполнение прямыми линиями:
Измененный фрагмент программы:
If y mod 10<2 {задаем условие расстановки точек}
Измененный фрагмент программы:
if(((y+x) mod 10)<2) {задаем условие расстановки точек}
Uses Graph; {подключение модуля Graph}
Var Driver,Mode:Integer; {определяет тип и задает режим работы графического драйвера}
X,Y,xc,yc, c, ax, ay :Integer;
R:LongInt;
a:real;
Begin
{Инициализация графического режима}
Driver:=Detect;
InitGraph(Driver,Mode,'C:
SetColor(4); {красный цвет рисунка}
SetBkColor(0); {черный цвет фона}
xc:=500; {координата центра окружности по х}
yc:=200; {координата центра окружности по y}
Circle(xc,yc,100); {Окружность с заданным центром и радиусом}
For X:=400 to 600 do { перебираем координаты точки по х }
For Y:=100 to 300 do { перебираем координаты точки по у }
if ((x mod 15)<1) and ((y mod 15)<1) then begin{задаем условие расстановки точек}
a:=0; {начальное значение угла окружности}
{перебираем все углы окружности с шагом 0,1}
while (a<6.28) do begin {цикл с предусловием}
ax:=Round(cos(a)*4)+x;{задаем параметрическое уравнение для окружности, которая служит стилем заполнения}
ay:=Round(sin(a)*4)+y; {задаем параметрическое уравнение для окружности, которая служит стилем заполнения }
If( sqr(ax-xc ))+(sqr(ay-yc))<100*100 then begin {ограничиваем область заполнения окружностью}
c:=4; end else c:=0;
PutPixel(ax,ay,c); {процедура выставления точки с заданными координатами и цветом}
a:=a+0.1;{шаг}
end;
end;
ReadLn; {задержка изображения на экране до нажатия enter}
CloseGraph; {выход из графического режима в символьный}
End.
Uses Graph; {подключение модуля Graph}
Var Driver,Mode:Integer; {определяет тип и задает режим работы графического драйвера}
X,Y,xc,y:Integer;
R:LongInt;
Begin
{Инициализация графического режима}
Driver:=Detect;
InitGraph(Driver,Mode,'C:
SetColor(4); {красный цвет рисунка}
SetBkColor(0); {черный цвет фона}
xc:=500;{координата центра окружности по х}
yc:=300; {координата центра окружности по y}
Circle(xc,yc,100); {Окружность с заданным центром и радиусом}
For X:=400 to 600 do {перебираем координаты точки по х }
For Y:=200 to 400 do{перебираем координаты точки по у }
If( sqr(x-xc ))+(sqr(y-yc))<99*99 then begin {ограничиваем область заполнения окружностью}
PutPixel(x,y,random(16));
ReadLn; {задержка изображения на экране до нажатия enter}
CloseGraph; {выход из графического режима в символьный}
End.
а) Заполнение точками:
Uses Graph; {подключение модуля Graph}
Const {описание констант}
z:array[1..4] of PointType= {с помощью массива задаем координаты треугольника}
((x:400;y:200),
(x:600;y:400),
(x:200;y:400),
(x:400;y:200));
Var Driver,Mode:Integer; {определяет тип и задает режим работы графического драйвера}
X,Y,c:Integer;
Begin
{Инициализация графического режима}
Driver:=Detect;
InitGraph(Driver,Mode,'C:
SetColor(4); {красный цвет рисунка}
SetBkColor(0); {черный цвет фона}
DrawPoly(4,z);{рисуем треугольник с помощью ломаной линии, проходящей через данный массив точек}
for x:=200 to 600 do begin{ перебираем координаты точки по х }
for y:=200 to 400 do begin{ перебираем координаты точки по у }
if (y>(1*(x-400)+300)) and (y>(1*(-x+1100)-400)) and (y<400) then begin{ограничиваем область заполнения треугольником}
if((x mod 5)<2)and ((y mod 10)<2) {задаем условие расстановки точек}
then c:=4 else c:=0;
PutPixel(x,y,c); {процедура выставления точки с заданными координатами и цветом}
end;
end;
end;
ReadLn; {задержка изображения на экране до нажатия enter}
CloseGraph; {выход из графического режима в символьный}
End.
b)Заполнение прямыми линиями:
Измененный фрагмент программы:
if
((y) mod 10)<2 {задаем условие расстановки
точек}
с) Заполнение наклонными линиями:
Измененный фрагмент программы:
if((x+y) mod 10)<2 {задаем условие расстановки точек}
Информация о работе Алгоритмы заполнения различных фигур определенным стилем