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;

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


 

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

41495. ТЕХНОЛОГИЯ РАБОТЫ СОРТИРОВОЧНОЙ ГОРКИ 215.5 KB
  Перерабатывающая способность горки и пути её повышения. Технология совмещения роспуска составов и формирования поездов с горки. Сортировочная горка состоит из трех основных элементов: надвижной части вершины горки и спускной части.
41496. ТЕХНОЛОГИЯ РАБОТЫ СОРТИРОВОЧНЫХ СТАНЦИЙ. ХАРАКТЕРИСТИКА СОРТИРОВОЧНЫХ СТАНЦИЙ 123.5 KB
  Оперативное управление работой станции 1. Назначение размещение и техническая оснащенность Сортировочные станции предназначаются для массовой переработки вагонов расформирования и формирования поездов причем в первую очередь сквозных т. Кроме того сортировочные станции могут пропускать транзитные поезда с которыми выполняются следующие операции: смена локомотивных бригад; смена локомотивов; технический и коммерческий осмотр составов; ремонт и экипировка локомотивов вагонов; снабжение водой поездов с живностью экипировка...
41497. ТЕХНОЛОГИЯ РАБОТЫ УЧАСТКОВОЙ СТАНЦИИ 248.5 KB
  Основная работа участковых станций заключается в обработке транзитных поездов кроме того на этих станциях выполняются еще следующие основные операции: смена локомотивов и локомотивных бригад; расформированиеформирование составов участковых и сборных поездов иногда сквозных; маневры по отцепке и прицепке групп вагонов к транзитным поездам с частичной переработкой грузовые и пассажирские операции. Число сортировочных путей определяется числом назначений сортировки суточным количеством перерабатываемых вагонов технологическим процессом...
41498. ОПЕРАТИВНОЕ ПЛАНИРОВАНИЕ, УПРАВЛЕНИЕ И РУКОВОДСТВО РАБОТОЙ СТАНЦИИ 232 KB
  Оперативное планирование работы станции. Автоматизация текущего планирования работы станции АСТП. Оперативное руководство работой станции 1. План работы смены вступающий на дежурного во второй половине суток, оставляют с учетом итогов работы первой смены и обеспечения выполнения всего суточного плана.
41499. ОРГАНИЗАЦИЯ РАБОТЫ СТАНЦИЙ. ОБЩИЕ СВЕДЕНИЯ ОБ УСТРОЙСТВЕ И РАБОТЕ СТАНЦИЙ 162.5 KB
  К раздельным пунктам относятся: станции разъезды обгонные пункты путевые посты а при автоблокировке и проходные светофоры. Коммерческие операции: прием взвешивание хранение и выдача грузов; оформление перевозочных документов взимание провозных платежей; пломбирование вагонов; обеспечение сохранности грузов находящихся на станции; осмотр прибывающих и отправляющих составов в коммерческом отношении. В зависимости от основного назначения и характера работы станции делятся на промежуточные участковые сортировочные грузовые и...
41500. ОСНОВЫ УПРАВЛЕНИЯ ЭКСПЛУАТАЦИОННОЙ РАБОТОЙ ЖЕЛЕЗНЫХ ДОРОГ 123 KB
  Основные принципы организации движения. Железнодорожный транспорт занимает ведущее место среди всех видов транспорта автомобильный воздушный речной морской трубопроводный это определяется следующими положениями: 1 железнодорожный транспорт работает непрерывно в течении года и суток осуществляя массовую перевозку народнохозяйственных грузов пассажиров; 2железнодорожный транспорт участвует в различных фазах производственного процесса: в начальной если перевозят сырьё исходные материалы; в средней если перевозят комплектующее...
41502. РАБОТА СТАНЦИИ В ЗИМНИХ УСЛОВИЯХ 49.5 KB
  Ремонт оборудования сортировочных горок устройств СЦБ и связи и наружного освещения на горках капитальный ремонт замедлителей воздухопроводной сети компрессорного оборудования в устройствах СЦБ – ремонт стрелочных переводов гарнитуры; в устройствах связи – громкоговорящей связи в первую очередь пополнение количества динамиков; выправка профилей сортировочных горок вытяжек и сортировочных путей; эти работы являются очень ответственными трудоемкими и поэтому на практике не редко не производятся это приводит к замедлению темпа...
41503. ОСНОВНЫЕ ПОКАЗАТЕЛИ, УЧЕТ И АНАЛИЗ РАБОТ СТАНЦИИ 236.5 KB
  Основные показатели работы станции. Учет работы станции формы учета и отчетности. Анализ работы станции.