Rabu, 04 Maret 2009

Laporan Prak. Grafika ke-2

Pada pertemuan kali ini, belajar mengenai titik dan garis.
1. Persamaan Garis : menurut koordinat Cartesian adalah y=mx+b dimana m adalah kemiringan garis yang dibentuk dari dua titik,yaitu(x1,y1) dan (x2,y2). Untuk penambahan x sepanjang garis yaitu dx akan mendapatkan penambahan y sebesar dy = m.dx.
2. Atribut : Atribut dasar untuk garis lurus adalah type, width dan color. Dalam beberapa paket aplikasi grafik, garis ditampilkan dengan menggunakan pilihan pen atau brush.
3. Tipe Garis : Garis mempunyai beberapa linetype diantaranya garis tebal, garis putus dan garis titik-titik.
4. Algoritma Garis DDA
Digital Diferencial Analyser (DDA) adalah algoritma pembentukan garis berdasarkan perhitungan dx maupun dy, menggunakan rumus dy = m.dx. Garis dibuat menggunakan dua endpoint yaitu titik awal dan titik akhir. Setiap koordinat yang membentuk garis diperoleh dari perhitungan kemudian dikonversikan menjadi nilai integer.
5. Langkah-langkah pembentukan garis menurut algoritma DDA adalah :
a. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
b. Tentukan titik awal yaitu (Xo,Y0) dan titik akhir (X1,Y1).
c. Hitung dx = x1-x0 dan dy = y1-y0
d. Tentukan step = max (|dx|, |dy|)
e. Hitung penambahan koordinat pixel Xlnc=dx / step dan Ylnc = dy / step.
f. Koordinat selanjutnya (x+Xlnc, y+ylnc).
g. Posisi pada layer ditentukan debngan pembulatan nilai koordinat tersebut.
h. Ulangi nomor 6 dan 7 untuk menentukan posisi pixel berikutnya. Sampai x=x1 dan y=y1.

Listing program DDA#include
#pragma hdrstop
#include "Unit1.h"
#include "math.h"
#include "stdlib.h"
//---------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int X1,X2,Y1,Y2;
int tergambar;
// Pendeklarasian sebagai awal dari program.
//---------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//mendeklarasian pada form 1.

//---------------------------------------------------------------------
void __fastcall TForm1::DDA(int xa,int ya,int xb,int yb)
{ int dx,dy,step,k;
float Xincrement,Yincrement,x,y;
xa=10;ya=10;xb=17;yb=16;
dx=xb-xa;
dy=yb-ya;
x=(float)xa;
y=(float)ya;
if (abs(dx)>abs(dy))
{ step=(abs(dx));}
else
{ step=(abs(dy));};
Xincrement = (float)dx/step;
Yincrement = (float)dy/step;
Image1->Canvas->Pixels[int (x)][int (y)] =clBlack;
judul(x,y);
for(k=0; k<=step;k++)
{
x+=Xincrement;
y+=Yincrement;
Image1->Canvas->Pixels[int (x)][int (y)] =clBlack;
tampil(x,y,k);
}
}
// Script diatas mendeklarasikan dari fungsi pembentukan garis DDA
//---------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close();
}
// Mendeklarasiakan pada button keluar dimana jika diklik maka akan layer akan keluar atau tertutup
//---------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
tergambar=False;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
//---------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
//Mendeklarasikan pada button baru dimana pada button baru jika diklik maka akan mumcul layer baru.

//---------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
tergambar=True;
X1=X;
Y1=Y;
}
//---------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
{
Button1Click(Sender);
tergambar=False;
X2=X;
Y2=Y;
if (RadioGroup1->ItemIndex==0)
{ DDA(X1,Y1,X2,Y2);
}
};
}
//---------------------------------------------------------------------
void __fastcall TForm1::judul(float x, float y)
{
char tampilX[20], tampilY[20];
int xt=200, yt=15, kt=2;
// mendeklarasikan untuk menampilkan bilangan asli tanpa pembulatan
_gcvt(x,4,tampilX);
_gcvt(y,4,tampilY);
Image1->Canvas->TextOut(xt-50,(kt-1)*yt,"k");
Image1->Canvas->TextOut(xt,(kt-1)*yt,"x");
Image1->Canvas->TextOut(xt+50,(kt-1)*yt,"y");
Image1->Canvas->TextOut(xt,kt*yt,tampilX);
Image1->Canvas->TextOut(xt+50,kt*yt,tampilY);
Image1->Canvas->TextOut(xt+100,(kt-1)*yt,"(x bulat,y bulat)");
// Pendeklarasian untuk menampilkan bilangan yang digunakan untuk pembulatan.
_gcvt(x,2,tampilX);
_gcvt(y,2,tampilY);
// pendeklarasian untuk menampilkan koordinat X dan Y.
Image1->Canvas->TextOut(xt+100,kt*yt,"(");
Image1->Canvas->TextOut(xt+120,kt*yt,tampilX);
Image1->Canvas->TextOut(xt+150,kt*yt,",");
Image1->Canvas->TextOut(xt+160,kt*yt,tampilY);
Image1->Canvas->TextOut(xt+190,kt*yt,")");
}
//----------------------------------------------------------
void __fastcall TForm1::tampil(float x, float y, int k)
{
char tampilX[20], tampilY[20], tampilK[20];
int xt=20,yt=15;
k+=3;
// mendeklarasikan untuk menampilkan bilangan asli tanpa pembulatan
_gcvt(x,4,tampilX);
_gcvt(y,4,tampilY);
Image1->Canvas->TextOut(xt,k*yt,tampilX);
Image1->Canvas->TextOut(xt+50,k*yt,tampilY);
// Pendeklarasian untuk menampilkan bilangan yang digunakan untuk pembulatan.
_gcvt(x,2,tampilX);
_gcvt(y,2,tampilY);
_gcvt(y,2,tampilK);
// pendeklarasian untuk menampilkan koordinat X dan Y.
Image1->Canvas->TextOut(xt-50,k*yt,tampilK);
Image1->Canvas->TextOut(xt+100,k*yt,"(");
Image1->Canvas->TextOut(xt+120,k*yt,tampilX);
Image1->Canvas->TextOut(xt+150,k*yt,",");
Image1->Canvas->TextOut(xt+160,k*yt,tampilY);
Image1->Canvas->TextOut(xt+190,k*yt,")");
}

OUTPUT



-----Sekian dan Terima Kasih-----

Selasa, 03 Maret 2009

Laporan Prak. Grafika ke-1

Pada pertemuan pertama ini belajar mengenai Pengenalan Borland C++ Builder.
-> Borland C++ Builder adalah sebuah bahasa pemrograman visual berorientasi objek yang dikembangkan dengan menggunakan bahasa C++ sebagai compiler.
-> Pada dasarnya IDE Borland C++ Builder dibagi menjadi 6 bagian utama antara lain:
Menu : Menu pada Borland C++ Builder, seperti pada aplikasi windows lainnya terdiri dari sejumlah sub menu, yang masing-masing memiliki kegunaan dan fungsi sendiri-sendiri.
Speed Bar/Toolbar : Berisi sekumpulan tombol item menu yang sering digunakan pada saat pembuatan aplikasi program.
Component Palette : Merupakan kumpulan icon yang melambangkan komponen-komponen pada VCL (Visual Component Library).
Form Designer : Merupakan tempat dimana aplikasi program akan dirancang. Perancangan form ini dapat dilakukan dengan meletakkan komponen-komponen yang dapat diambil dari component palette.
Editor Code : Merupakan tempat dimana kita menuliskan script program.
-> Alur Kerja Borland C++ Turbo :
a.File Project, terdiri dari :
File.cpp : File ini adalah file utama untuk setiap source code project.
File.mak : Merupakan file project dari program aplikasi, berisi setting dan peraturan-peraturan pengembangan dari program aplikasi.
File.res : Merupakan file sumber dari icon, cursor dll.
b.File Form, terdiri dari :
File.dfm : Digunakan untuk menampilkan jendela-jendela dari program aplikasi.
File.cpp dan File.h : Kedua file ini dibangun bersama-sama ketika sebuah form dibuat.
c.File Unit : Digunakan untuk mengatur struktur dari project dan kode project.
d.File Desktop : File ini dihasilkan untuk memelihara program aplikasi yang dibuat.

-> Pembahasan Program:
#include
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int tergambar;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
Diatas merupakan Script yang merupakan awal dari program
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (ColorDialog1->Execute())
Image1->Canvas->Pen->Color=ColorDialog1->Color;
}


void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
tergambar=True;
Image1->Canvas->MoveTo(X,Y);
}
Diatas adalah scrip yang mendeklarasikan button warna yaitu utuk menampilkan plihan warna dalam menggambar.


void __fastcall TForm1::FormActivate(TObject *Sender)
{
tergambar=False;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{
tergambar=False;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Width);
}
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Edit1->Text=IntToStr(X);
Edit2->Text=IntToStr(Y);
if (tergambar)
{
Image1->Canvas->LineTo(X,Y);
}
}
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
tergambar=False;
}
Script diatas mendeklarasikan pada button baru dimaka pada button baru jika diklik maka akan muncur layer baru.



void __fastcall TForm1::Button3Click(TObject *Sender)
{
Close();
}
Diatas merupakan script untuk mendeklarasikan pada button keluar dimana jika diklik maka layer akan tertutup.
void __fastcall TForm1::Open1Click(TObject *Sender)
{
if (OpenPictureDialog1->Execute())
{
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
}
Diatas merupakan script untuk mendeklarasikan pada button open dimana jika diklik maka layer akan membuka tempat penyimpanan data yang akan dibuka.
void __fastcall TForm1::Save1Click(TObject *Sender)
{
if (SavePictureDialog1->Execute())
{
Image1->Picture->SaveToFile(SavePictureDialog1->FileName);
}
}
Diatas merupakan script untuk mendeklarasikan pada button open dimana jika diklik maka layer akan membuka tempat penyimpanan untuk menyimpan projek yang ada.



OUTPUT
Tampilan antarmuka:

Tampilan output setelah mengklik button warna dan memilih warna kemudian mulai menggambar di layer.

Tampilan output jika pada file diklik maka akan keluar semua data-data yang ada pada computer.




Tampilan output jika klik save maka akan keluar alamat atau tempat dimana kita akan menyimpan data yang akan disimpan.



KESIMPULAN
Pada praktikum kali ini belajar membuat project dengan Timage dimana aplikasinya akan menunjukkan bagaimana membuat aplikasi pemograman grafis dengan fasilitas Timage. Timage merupakan salah satu fasilitas yang mudah dan megijinkan untuk menampilkan gambar bitmaps, metafile dan icon pada form.

------ Sekian ------
Pamor enggal hutomo