50348

Заповнення багатокутників

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

Информатика, кибернетика и программирование

Програмно реалізувати алгоритм визначення попадання точки в трикутник. Реалізувати найпростіший алгоритм заповнення певним кольором довільного контуру із заданим кольором межі.Малювання зафарбованого трикутника:

Украинкский

2014-01-21

143 KB

3 чел.

Міністерство освіти і науки України

Черкаський Національний Університет ім. Богдана Хмельницького

Факультет ОТІУС

Звіт

до Лабораторної Роботи №3

Виконав:

студент 2-го курсу

групи КС-11

         Свідерський М.Ю.

Черкаси 2013

Тема: Заповнення багатокутників.

Завдання:

  1.  Створити процедуру малювання зафарбованого трикутника.

Програмно реалізувати алгоритм визначення попадання точки в трикутник.

Реалізувати найпростіший алгоритм заповнення певним кольором довільного контуру із заданим кольором межі.

Малювання зафарбованого трикутника:

procedure TForm1.Button1Click(Sender: TObject);

var

 A,B,C,T: Tposition;

 i,x1,x2,sy : integer;

begin

 Image1.Canvas.Rectangle(0,0,ClientWidth,ClientHeight);

 A.x := StrToInt(Edit1.Text);

 A.y := StrToInt(Edit2.Text);

 B.x := StrToInt(Edit3.Text);

 B.y := StrToInt(Edit4.Text);

 C.x := StrToInt(Edit5.Text);

 C.y := StrToInt(Edit6.Text);

 If A.y>B.y then begin T:=B; B:=A; A:=T; end;

 If A.y>C.y then begin T:=C; C:=A; A:=T; end;

 If B.y>C.y then begin T:=B; B:=C; C:=T; end;

 for sy := A.x to C.y do

   begin

     x1 := round(A.x + (sy - A.y)*(C.x - A.x)/(C.y - A.y));

     if (sy < B.y) then

       x2 := round(A.x + (sy - A.y)*(B.x - A.x)/(B.y - A.y))

     else

       if (C.y =  B.y) then

         x2 := B.x

       else

         x2 := round(B.x + (sy - B.y)*(C.x - B.x)/(C.y - B.y));

     if (x1 > x2) then

       begin

         T.x := x1;

         x1 := x2;

         x2 := T.x;

       end;

     i := x1;

     while (i <> x2) do

       begin

         inc(i);

         Image1.Canvas.Pixels[i,sy] := clBlue;

       end;

   end;

end;

Визначення попадання точки в трикутник:

procedure TForm1.Button1Click(Sender: TObject);

var

 A,B,C,T : TPosition;

 x1,x2,sy,xpr,ypr : integer;

begin

 A.x := StrToInt(Edit1.Text);

 A.y := StrToInt(Edit2.Text);

 B.x := StrToInt(Edit3.Text);

 B.y := StrToInt(Edit4.Text);

 C.x := StrToInt(Edit5.Text);

 C.y := StrToInt(Edit6.Text);

 xpr := StrToInt(Edit7.Text);

 ypr := StrToInt(Edit8.Text);

 If A.y>B.y then begin T:=B; B:=A; A:=T; end;

 If A.y>C.y then begin T:=C; C:=A; A:=T; end;

 If B.y>C.y then begin T:=B; B:=C; C:=T; end;

 if ((ypr >= A.x) and (ypr <= C.y)) then

   begin

     sy := ypr;

     x1 := round(A.x + (sy - A.y)*(C.x - A.x)/(C.y - A.y));

     if (sy < B.y) then

       x2 := round(A.x + (sy - A.y)*(B.x - A.x)/(B.y - A.y))

     else

       if (C.y =  B.y) then

         x2 := B.x

       else

         x2 := round(B.x + (sy - B.y)*(C.x - B.x)/(C.y - B.y));

     if (x1 > x2) then

       begin

         T.x := x1;

         x1 := x2;

         x2 := T.x;

       end;

     if ((xpr >= x1) and (xpr <= x2)) then

       Label10.Caption := 'YES'

     else

       Label10.Caption := 'NO';

   end

 else

   Label10.Caption := 'NO';

end;

Заповнення певним кольором довільного контуру із заданим кольором межі:

procedure TForm1.Button1Click(Sender: TObject);

var

 x1, y1, x2, y2, dx, dy, i, s1, s2, exch, temp : integer;

 e : real;

begin

 x1 := StrToInt(Edit1.Text);

 y1 := StrToInt(Edit2.Text);

 x2 := StrToInt(Edit3.Text);

 y2 := StrToInt(Edit4.Text);

 dx := abs(x2-x1);

 dy := abs(y2-y1);

 s1 := Sign(x2-x1);

 s2 := Sign(y2-y1);

 if (dy > dx) then

 begin

   temp := dx;

   dx := dy;

   dy := temp;

   exch := 1;

 end

 else exch := 0;

 e := 2*dy - dx;

 for i := 1 to dx do

 begin

   Image1.Canvas.Pixels[x1, y1] := ColorBox1.Selected;

   while(e >= 0) do

   begin

     if (exch = 1) then x1 := x1 + s1

     else y1 := y1 +s2;

     e := e - 2*dx;

   end;

   if (exch = 1) then y1 := y1 + s2

   else x1 := x1 + s1;

   e := e + 2*dy

 end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

 Image1.Canvas.Rectangle(0,0,Image1.Width, Image1.Height);

end;

procedure TForm1.Button2Click(Sender: TObject);

var q : TQueue;

   x, y, x1, y1 : integer;

begin

 x := StrToInt(Edit5.Text);

 y := StrToInt(Edit6.Text);

 q := TQueue.Create();

 Image1.Canvas.Pixels[x, y] := ColorBox3.Selected;

 q.incert(x, y);

 while (not(Q.Empty()))do

 begin

   x1 := Q.getx;

   y1 := Q.gety;

   if ((x1-1 >= 0)and(Image1.Canvas.Pixels[x1-1, y1] <> ColorBox2.Selected)and(Image1.Canvas.Pixels[x1-1, y1] <> ColorBox3.Selected){(used[x1-1][y1] = false)})then

   begin

     Q.incert(x1-1, y1);

     Image1.Canvas.Pixels[x1-1, y1] := ColorBox3.Selected;

   end;

   if ((x1+1 <=905)and(Image1.Canvas.Pixels[x1+1, y1] <> ColorBox2.Selected)and(Image1.Canvas.Pixels[x1+1, y1] <> ColorBox3.Selected){(used[x1+1][y1] = false)})then

   begin

     Q.incert(x1+1, y1);

     Image1.Canvas.Pixels[x1+1, y1] := ColorBox3.Selected;

   end;

   if ((y1-1 >= 0)and(Image1.Canvas.Pixels[x1, y1-1] <> ColorBox2.Selected)and(Image1.Canvas.Pixels[x1, y1-1] <> ColorBox3.Selected){(used[x1][y1-1] = false)})then

   begin

     Q.incert(x1, y1-1);

     Image1.Canvas.Pixels[x1, y1-1] := ColorBox3.Selected;

   end;

   if ((y1+1 <=305)and(Image1.Canvas.Pixels[x1, y1+1] <> ColorBox2.Selected)and(Image1.Canvas.Pixels[x1, y1+1] <> ColorBox3.Selected){(used[x1][y1+1] = false)})then

   begin

     Q.incert(x1, y1+1);

     Image1.Canvas.Pixels[x1, y1+1] := ColorBox3.Selected;

   end;

 end;

end;

Висновок: на цій лабораторній роботі я навчився малювати зафарбовані трикутники, визначати попадання точки в трикутник, заповнювати певним кольором довільний контур із заданим кольором межі.


 

А также другие работы, которые могут Вас заинтересовать

39878. ОТЧЕТ по преддипломной производственной практике на ЗАО “Каустик” ЦЕХ № 21 ПРОИЗВОДСТВО ПЕРХЛОРВИНИЛОВОЙ СМОЛЫ 471.5 KB
  Добавление к ЧХУ 3 дихлорбензола позволяет значительно сократить время хлорирования. Из цистерны поливинилхлорид транспортируется по трубопроводу сжатым воздухом давлением 0305 МПа в расходные бункеры поз. 2814 и в силосы поз. Из силосов поливинилхлорид транспортируется по трубопроводу сжатым воздухом давлением 0305 МПа в расходные бункеры поз.
39879. Проверка двигателя на перегрузочную способность и нагрев 483.5 KB
  В задании предполагается, что после отключения двигатель охлаждается до температуры окружающей среды. Время работы не превышает 90 мин, за которое двигатель не достигнет установившейся температуры. Следовательно, в задании имеет место кратковременный режим работы электродвигателя S2.
39880. Разработка технологии, позволяющей сократить выброс дихлорэтана в атмосферный воздух 299 KB
  Целью данного курсового проекта является разработка технологии позволяющей сократить выброс дихлорэтана в атмосферный воздух а уловленный дихлорэтан вернуть в процесс с дальнейшим снижением себестоимости товарного продукта. Сравнительно низкая температура кипения и высокая летучесть дихлорэтана позволяют легко и полностью удалять его как из экстрагированного продукта так и из остаточного материала. Газообразный этилен по трубопроводу из Стерлитамакского цеха N2204 АО Нижнекамскнефтехим поступает с давлением 0812 МПа которое...
39881. Разработка web-сайта ОАО Алейскзернопродукт имени С.Н. старовойтова 3.11 MB
  Выполняя дипломную работу я разобрался в том, что необходимо знать и уметь для создания Web-сайта, какое программное обеспечение является инструментарием создания Web-сайта и как эффективно его использовать. Мною изучен язык Web-программирования – HTML, который является общепринятым стандартом WWW.
39882. Разработка сайта ГОУ СПО Краснодарского торгово-экономического колледжа 11.59 MB
  При помощи сайта можно: передать всю необходимую информацию о колледже и о специальностях в том числе самые последние новости; наладить прямой контакт с абитуриентами и студентами например в форуме и с помощью блицопросов; современно разрекламировать колледж так чтобы иметь одновременно зрелищность телевизионной рекламы и информативность буклета. Таким образом целью дипломного проектирования является разработка сайта для Краснодарского торговоэкономического колледжа. Назначение и цели создания сайта В основе дипломной работы лежат...
39883. Создание Web-страниц 625.5 KB
  Объект исследования: наиболее подходящая программа для создания Webстраниц. Цель работы: создание Webстраниц. В дипломной работе выполнено: обзор программ для создания Webстраниц; сравнительный анализ Macromedia Dreamweaver и Front Page; описан процесс создания и разработки современного сайта; оценка экономической целесообразности использования персонального компьютера; правила охраны труда на рабочем месте оператора компьютерного набора и верстки. Webсайт Htmlпрограммирование ДИЗАЙН САЙТА FRONT PAGE MACROMEDIA DREAMWEAVER.
39884. Разработать принципиальную схему и текст программы контроллера на основе микропроцессора КР580 42 KB
  Алгоритмическое проектирование Процесс Основной Начало подается 0 на Селектор считывания температуры в основной камере Считывается значение температуры с Заданная температура в основной камере под 1 на Селектор считывания температуры в основной камере М1: сравнивается Заданное значение температуры в основной камере и Значение температуры в основной камере если больше то прыг на М2 иначе подается 0 на Включение основной камеры прыг на М1 М2: ожидаем 2 мин.5 часа то Авария М3: сравнивается Заданное значение температуры в морозильной...
39885. ОФОРМЛЕНИЕ ОБЯЗАТЕЛЬНЫХ УЧЕБНЫХ ДОКУМЕНТОВ 636.5 KB
  2 Примечания следует помещать непосредственно после текстового графического материала или таблицы к которым относятся эти примечания и печатать с прописной буквы с абзаца. Примечание к таблице помещают в конце таблицы над линией обозначающей окончание таблицы. Ссылки на подразделы пункты таблицы и иллюстрации не допускаются за исключением подразделов пунктов таблиц и иллюстраций данного документа Ссылка заключается в квадратные скобки [ ] содержит порядковой номер документа в СПИСКЕ ЛИТЕРАТУРЫ указание страниц. Сноски помещают с...