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;

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


 

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

50486. Первые шаги во Flash 60 KB
  Оформления работы при загрузке в библиотеку: Название материала – как в правилах публикации должно начинаться с Фамилии и инициалов автора, само название материала без кавычек. Например: Томилова Е.А. Смайлик. Аннотация должна содержать поясняющий текст, что данная работа загружена в рамках мастер-класса «Первые шаги во Flash, номер потока».
50488. Анализ плана с помощью инструментария Microsoft Project 508.5 KB
  Основные пункты плана внедрения Типовой план внедрения ИСУ: предварительное обследование бизнеспроцессов; Мы обследуем следующие бизнеспроцессы: контроль качества реализация подбор персонала закупки. подготовка новых бизнеспроцессов с учетом перехода на ИСУ: а выработка предложений по реинжинирингу; б формирование новых бизнеспроцессов; в согласование бизнеспроцессов. Подготавливаются следующие бизнеспроцессы: оптимизация и реализация контроля качества оптимизация реализации оптимизация подбора персонала оптимизация...
50489. ПОСТРОЕНИЕ ПЛАНА ВНЕДРЕНИЯ ИНФОРМАЦИОННОЙ СИСТЕМЫ УПРАВЛЕНИЯ ПРЕДПРИЯТИЕМ С ПРИМЕНЕНИЕМ ПРОГРАММНОГО ПРОДУКТА MICROSOFT PROJECT 602 KB
  Цель работы Сформировать план внедрения информационной системы управления завода по производству резинотехнических изделий. Порядок выполнения работы Исходной информацией для выполнения задания является выбранная функциональная подсистема в рамках которой внедряется ИСУ. подготовка новых бизнеспроцессов с учетом перехода на ИСУ: а выработка предложений по реинжинирингу; б формирование новых бизнеспроцессов; в согласование бизнеспроцессов.
50490. Физиология слухового анализатора. Слуховая сенсорная система 3.19 MB
  Слуховая сенсорная система – второй по значению дистантный анализатор человека, играет важную роль именно у человека в связи с возникновением членораздельной речи. Структурно-функциональная характеристика слухового анализатора
50491. Перемещение товаров через таможенную границу 162.5 KB
  В целом по результатам сравнительного анализа названных разделов можно сказать, что по определенным позициям законодатель оставил прежний подход в правовой регламентации основных положений перемещения товаров через таможенную границу, в то же время внес и определенные коррективы.
50492. Электрические и электронные аппараты. Лабораторные работы 1.32 MB
  Не включать установку без разрешения преподавателя ведущего занятия В случае обнаружения внештатной ситуации появление напряжения на стенде запах горения появление дыма искрение и др. Стенд имеет источники регулируемого постоянного и переменного напряжения а так же оперативное питание 15 В 30 В 5 В 15 В для питания всех устройств блока лабораторной работы микросхем систем управления обмоток реле и др. Справа от ряда предохранителей находится розетка однофазного напряжения 220 В 50 Гц для подключения осциллографа и другого...
50493. Изучение принципов работы бесконтактных датчиков и датчиков температуры 1.65 MB
  Бесконтактным выключателем (ВБ) называется выключатель, приводимый в действие внешним объектом без механического контакта выключателя и объекта. Коммутация нагрузки производится полупроводниковыми элементами. Все это обеспечивает высокую надёжность работы бесконтактных выключателей. В системах управления они, как правило, выполняют функцию датчиков обратной связи, сигнализируя о завершении выполнения конкретным элементом оборудования команды на перемещение. Но этим их применение не ограничивается.
50494. Проектирование 4-разрядного сумматора 116 KB
  Открыть VHDL файл и записать в него прогр. Сохранить файл под именем dd1 и установить его старшим в иерархии проекта. Список файлов открывается средней клавишей Files. VHDL файлы относятся файлам образующим проект.