Алгоритмы заполнения различных фигур определенным стилем

Автор работы: Пользователь скрыл имя, 13 Ноября 2011 в 21:58, курсовая работа

Краткое описание

Цель работы - разработать алгоритмы заполнения различных фигур определенным стилем на языке Pascal .
Были выделены следующие задачи:
- изучить литературу по проблеме исследования.
-определить существующие стили заполнения.
- выявить возможности и средства компьютерной графики в Турбо Паскале.
- разработать алгоритмы заполнения различных фигур определенным стилем на языке Pascal .

Содержание работы

Введение…………………………………………………………………………...3
Стиль заполнения. Кисть. Текстура……………………………………………………………………………5
Алгоритмы заполнения различных фигур определенным стилем……………………………………………………………………………...8
Заключение……………………………………………………………………….20
Список литературы………………………………………………………………21

Содержимое работы - 1 файл

Алгоритмы заполнения фигур определенным стилем.doc

— 209.50 Кб (Скачать файл)

     X,Y,c:Integer;

     Begin

     {Инициализация  графического режима}

     Driver:=Detect;

     InitGraph(Driver,Mode,'C:\tp\BGI');

     SetColor(4);{красный цвет рисунка}

     SetBkColor(0);{черный цвет фона}

     rectangle(400,200,600,400);{Прямоугольник с заданными координатами верхнего левого угла и нижнего правого угла }

     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:\tp\BGI');

         SetColor(4);{красный цвет рисунка}

     SetBkColor(0);{черный цвет фона}

     rectangle(400,300,600,500);{Прямоугольник с заданными координатами верхнего левого угла и нижнего правого угла }

     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));{процедура выставления точки с заданными координатами и цветом, который определяется функцией псевдослучайного числа в интервале от [0,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:\tp\BGI');

     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 {задаем условие расстановки точек}

    1. Заполнение наклонными линиями:

     Измененный фрагмент программы:

     if(((y+x) mod 10)<2) {задаем условие расстановки точек}

  1. Заполнение небольшими растровыми изображениями – окружностями:

     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:\tp\BGI');

     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.

  1. Матовая поверхность окружности:

     Uses Graph; {подключение модуля Graph}

     Var Driver,Mode:Integer; {определяет тип и задает режим работы графического драйвера}

     X,Y,xc,y:Integer;

     R:LongInt;

     Begin

     {Инициализация графического режима}

     Driver:=Detect;

     InitGraph(Driver,Mode,'C:\tp\BGI');

     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));{ процедура выставления точки с заданными координатами и цветом, который определяется функцией псевдослучайного числа в интервале от [0,16)}

     ReadLn; {задержка изображения на экране до нажатия enter}

     CloseGraph; {выход из графического режима в символьный}

     End.

  1. Алгоритм заполнения треугольника разными стилями:

     а)  Заполнение точками:

     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:\tp\BGI');

     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  {задаем условие расстановки точек}

  1. Заполнение небольшими растровыми изображениями – окружностями:

Информация о работе Алгоритмы заполнения различных фигур определенным стилем