-->

Coding Algoritma Garis Bressenhem Grafika Komputer




Makalah Algoritma Garis Bressenhem Grafika Komputer




Penyusun :
Zakaria Annas (123090182)
Plug : 2 



Asisten dosen :
Desy Kumalasari





JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” YOGYAKARTA
2012

DASAR TEORI

Algoritma midpoint merupakan algoritma pembuatan garis dan kurva dengan dasar operasi bilangan integer yang menonjolkan ciri kecepatan. Sehingga algoritma ini dapat dipakai sebagai algoritma pembuatan grafik yang menuntut kecepatan sebagai hal yang diutamakan. Pembahasan algoritma Midpoint dilakukan dengan mengasumsikan garis lurus dari kiri ke kanan,dan gadient antara 0 dan 1, sedangkan untuk lingkaran dengan mengasumsikan hanya sebagian lingkaran dengan sudut sebesar 45° , hal ini dilakukan untuk mempermudah penjelasan, sedangkan untuk kondisi yanglain dapat diderivasi dengan cara yang serupa. Untuk mendapatkan kinerja algoritma midpoint, dilakukan uji kecepatan komputasi dengan cara mengimplementasikan kedalam bahasa pemrograman C, dan melakukan perbandingan waktu komputasi dengan algoritma yang menggunakan dasar komputasi bilangan riel, maupun algoritma lain yang telah banyak dikenal seperti algoritma dda dan algoritma bressenham.

Penggambaran grafik garis lurus dan kurva memerlukan waktu komputasi yang tinggi, untuk mereduksi waktu komputasi yang tinggi tersebut dapat dilakukan dengan peningkatan kemampuan komputasi prosesor dan peningkatan efisiensi algoritma. Algoritma Midpoint merupakan Algoritma dengan dasar operasi bilangan integer, sehingga memerlukan waktu operasi yang lebih sedikit dibandingkan dengan algoritma yang menggunakan operasi bilangan real. Implementasi ke dalam bahasa pemrograman C dari kedua macam algoritma diatas, menunjukkan bahwa waktu komputasi algoritma midpoint lebih cepat sebesar 8 kali pada pembuatan garis lurus, dan lebih cepat sebesar 15 kali pada penggambaran lingkaran, dibandingkan dengan waktu komputasi algoritma yang menggunakan dasar operasi bilangan real. Dan waktu komputasi algoritma midpoint lebih cepat sebesar 6 kali pada pembuatan garis lurus, dibandingkan dengan waktu komputasi algoritma yang Breserham telah menggunakan dasar operasi bilangan integer juga.










PEMBAHASAN

Algoritma Garis Bressenhem
unit modul3;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, Grids, Menus, ExtCtrls, ActnList, Buttons, MaskEdit, CheckLst;

type

  { TForm1 }

  TForm1 = class(TForm)
    Bressenhem: TButton;
    Exit: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    StringGrid1: TStringGrid;
    X1: TLabel;
    X2: TLabel;
    Y1: TLabel;
    Y2: TLabel;
    procedure BressenhemClick(Sender: TObject);
    procedure ExitClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.BressenhemClick(Sender: TObject);
var
p,dx,dy,xend,f,x,y,xa,xb,ya,yb,i:integer;
begin
xa:=StrToInt(Edit1.Text);
xb:=StrToInt(Edit2.Text);
ya:=StrToInt(Edit3.Text);
yb:=StrToInt(Edit4.Text);
dx:=abs(xa-xb);
dy:=abs(ya-yb);
p:=(2*dy)-dx;
if (xa>xb) then
begin
x:=xb;
y:=yb;
xend:=xa;
end
else
begin
x:=xa;
y:=ya;
xend:=xb;
end;
    i:=i+1;
    StringGrid1.RowCount:=StringGrid1.RowCount+1;
    StringGrid1.Cells[0,StringGrid1.RowCount-1]:=IntToStr(i);
    StringGrid1.Cells[1,StringGrid1.RowCount-1]:=FloatToStr(x);
    StringGrid1.Cells[2,StringGrid1.RowCount-1]:=FloatToStr(y);
    StringGrid1.Cells[3,StringGrid1.RowCount-1]:=FloatToStr(round(x));
    StringGrid1.Cells[4,StringGrid1.RowCount-1]:=FloatToStr(round(y));
canvas.Pixels[trunc(x),trunc(y)]:=clblack;
for f:=x to xend do
begin
x:=x+1;
if(p<0) then
p:=p+(2*dy)
else
begin
y:=y+1;
p:=p+(2*(dy-dx));
end;
    i:=i+1;
    StringGrid1.RowCount:=StringGrid1.RowCount+1;
    StringGrid1.Cells[0,StringGrid1.RowCount-1]:=IntToStr(i);
    StringGrid1.Cells[1,StringGrid1.RowCount-1]:=FloatToStr(x);
    StringGrid1.Cells[2,StringGrid1.RowCount-1]:=FloatToStr(y);

canvas.Pixels[trunc(x),trunc(y)]:=clblack;
end;

end;

procedure TForm1.ExitClick(Sender: TObject);
begin
  close();
end;

initialization
  {$I modul3.lrs}

end.


Output :













Garis Algoritma C++
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Baru: TButton;
    Image1: TImage;
    Tutup: TButton;
    RadioGroup1: TRadioGroup;
    procedure BaruClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure RadioGroup1Click(Sender: TObject);
    procedure TutupClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  Tergambar: boolean;
  x1,x2,y1,y2: integer;

implementation

{ TForm1 }

procedure TForm1.TutupClick(Sender: TObject);
begin
  close();
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Image1.Canvas.Rectangle(0,0, Image1.Width, Image1.Height);
end;

procedure TForm1.Image1Click(Sender: TObject);
begin

end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Tergambar:=true;
  X1:=X;
  Y1:=Y;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  BaruClick(Sender);
  Tergambar:=false;
  X2:=X;
  Y2:=Y;
  if RadioGroup1.ItemIndex=0 then
  begin
  Image1.Canvas.MoveTo(x1,y1);
  Image1.Canvas.LineTo(x2,y2);
  end;
end;

procedure TForm1.RadioGroup1Click(Sender: TObject);
begin

end;

procedure TForm1.BaruClick(Sender: TObject);
begin
  Tergambar:=false;
  Image1.Canvas.Rectangle(0,0, Image1.Width, Image1.Height);
end;

initialization
  {$I unit1.lrs}

end.







Output :

0 Response to "Coding Algoritma Garis Bressenhem Grafika Komputer"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel