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;

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


 

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

75860. Лінгвістичні засоби впливу в рекламі. Маніпулятивні стратегії 56.5 KB
  Что касается грамматической организации рекламных текстов, она представляет собой удивительное своеобразие на фоне нескончаемой однородности. Относительно порядка слов следует подчеркнуть употребление инверсии и пассивных конструкций - Detroit Edison is pleased to be
75862. Визначення і методи комп. Бібліографування та реферування 24.53 KB
  К аналитическим методам относятся: Общий библиографический анализ документа осуществляемый в целях выяснения ее основной тематики формальных и содержательных особенностей достоинств и недостатков целевого и читательского назначения; Библиографическое описание документа...
75863. Термінологія та термінографія 103.5 KB
  Теорією і практикою укладання словників займається термінологічна лексикографія. Розроблення загальної класифікації документів є одним із провідних напрямків документознавства класифікація термінологічних словників розглядається в колі проблематики термінографії. Метою дослідження є встановлення видових і типологічних особливостей термінологічних словників розроблення класифікаційної схеми. Це створить передумови для розроблення методології та конкретних способів укладання спеціальних словників вироблення науково обґрунтованих принципів...
75864. Термінологія та термінографія. Термінологічні словники 25.71 KB
  Термины очень специфический предмет исследования. В отличие от слов разговорного языка и языка художественной литературы термины языковое средство профессиональной деятельности людей естественный компонент любого профессионального процесса. Термины функционируют и развиваются вместе с функционированием и развитием своей отрасли. Это придает используемым в ходе профессиональной деятельности языковым средствам среди которых доминируют термины особую значимость.
75865. Види інформаційно-пошукових систем. Ключові слова. Пошуковий образ документу. Інформаційно-пошукова мова 27.06 KB
  По характеру предоставления логической организации хранимой информации ИПС разделяются на фактографические документальные и геоинформационные. В документальных единичным элементом информации является нерасчлененный на более мелкие элементы документ и информация при вводе как правило не структурируются или структурируются в ограниченном виде. Для вводимого документа могут устанавливаться некоторые формализованные позиции дата изготовления исполнитель тематика. Некоторые виды документальных информационных систем обеспечивают установление...
75866. Соціолект. Види соціолектів 26.42 KB
  Койне. Термин койне первоначально применялся лишь к общегреческому языку который сложился в 4–3 вв. В современной социолингвистике койне повседневное общение которое связывает людей говорящих на разных региональных или социальных вариантах данного языка. В роли койне могут выступать наддиалектные формы языка – своеобразные интердиалекты объединяющие в себе черты разных территориальных диалектов – или один из языков функционирующих в данном ареале.
75867. Соціолінгвістика. Провідні поняття соціолінгвістики. Провідні поняття соціолінгвістики. Комунікативна ситуація 29.18 KB
  Под социальными условиями имеется в виду комплекс внешних обстоятельств в которых реально функционирует и развивается язык: общество людей использующих данный язык социальная структура этого общества различия между носителями языка в возрасте социальном статусе уровне культуры и образования месте проживания а также различия в их речевом поведении в зависимости от ситуации общения. Языковое сообщество – это совокупность людей объединенных общими социальными экономическими политическими и культурными связями и осуществляющих в...
75868. Технічне забезпечення інтернет-комунікації. Інтернет-каталоги та пошукові машини. Інформаційно-пошукова мова. Дескриптори 31.73 KB
  Інтернеткаталоги та пошукові машини. Интернеткаталог англ. Сайты внутри каталога разбиваются по темам а внутри тем могут быть ранжированы или по индексу цитирования как в каталогах Яндекса или Google или по дате добавления или по алфавиту или по другому параметру. В зависимости от широты тематики ссылок каталоги могут быть общими и специализированными тематическими.