Pada pembelajaran Modul 9 (Aplikasi I Grafika Komputer) ini, kita membuat contoh aplikasi untuki multimedia. Yang dimaksud multimedia dalam konteks ini adalah program yang mampu menjalankan file-file dari berbagai bentuk, mulai dari format teks, sound, image, bahkan video. Untuk merancang multimedia, pada borland C++ yang biasa kita gunakan telah menyediakan komponen khusus yaitu media player.
Pada latihan ini yang dibuat antara lain, memasukkan komponen media player yang telah disediakan lalu membuat fungsi Perulangan sebanyak 2 kali, 4 kali dan 6 kali, kemudian fungsi untuk menampilkan format filenya.
Untuk script codenya ketika akan membuat fungsi perulangan, kita tinggal membuat perulangan sebanyak yang kita inginkan dan di bawah ini contoh script code untuk perulangan sebanyak 2 kali :
{ RB3 ->Enabled=False;
RB4 ->Enabled=False;
MediaPlayer1->Stop();
MediaPlayer1->Wait=True;
MediaPlayer1->Play();
MediaPlayer1->Wait=True;
MediaPlayer1->Play();
RB2->Enabled=True;
RB3->Enabled=True;
RB4->Enabled=True;
RB2->Enabled=False;
RB3->Enabled=False;
RB4->Enabled=False; }
NB: Untuk melakukan perulangan yang lebih banyak lagi kita tinggal menambahkan MediaPlayer1->Wait=True; MediaPlayer1->Play(); sebanyak perulangan yang kita buat.
Kamis, 14 Mei 2009
Laporan Prak. Grafika ke-7
•RENDERING
Rendering (pengecatan) adalah sebuah cara dalam grafika computer untuk membuat pemandangan nampak nyata atau visualisasi objek 3 dimensi menjadi riil.
Ada beberapa factor yang mempengaruhi yaitu :
1. Cahaya
2. Sifat atau karakteristik bahan
3. Posisi kamera
4. Dll
•LIGHTING
Lighting atau pencahayaan merupakan statu metode yang dapat diterapkan pada proses rendering untuk menjadikannya sebuah objek menjadi terlihat berbeda.
Dalam proses Rendering dan lighting dipengaruhi beberapa factor yaitu:
1. Jarak objek dengan sumber cahaya.
2. Posisi objek.
3. Bentuk [permukaan objek.
• MODEL BAYANGAN
a. Bayangan Rata (flat shading)
Pemberian bayangan rata(flat) merupakan cara termudah untuk dibuat dan mempunyai karakteristik sebagai berikut:
- Pemberian tone yang sama untuk setiap polygon.
- Perhitungan jumlah cahaya mulai dari titik tunggal pada permukaan.
- Penggunaan satu normal untuk seluruh permukaan.
Pemberian bayangan rata ini mengasumsikan bahwa setiap muka polygon dari sebuah objek adalah rata dan semua titik pada permukaaknya mempunyai jarak yang sama dengan sumber cahaya.
b. Bayangan halus
Bayangan ini yaitu membuat perubahan setahap demi setahap dalam pemberian bayangan pada sebuah permukaan Cara ini mengijinkan pemberian bayangan pada satu muka lebih pudar dibandingkan muka yang lain.
• JENIS-JENIS CAHAYA
a. Cahaya Pantulan
b. Cahaya Tersebar
c. Cahaya Spekular
d. Cahaya Ambient
• WARNA
1. Metode Scanline
Yaitu metode dengan menentukan overlap interval untuk scanline yang melintasi area.
2. Metode Inside Outside Test
Yaitu metode dengan memulai dari titik tertentu pada posisi di dalam polygon dan menggambar dengan arah menyebar kepinggir sampai batas polygon.
3. Metode Boundary Fill
Yitu pendekatan untuk mengisi suatu bidang polygon dengan Bundary fill. Metode ini bermanfaat untuk paket-paket grafik interaktif dimana titik dalam dapat dengan mudah ditentukan.
4. Metode Flood Fill
Yaitu metode yang dimulai pada ttitik (x,y) dan mendefinisikan seluruh pixel pada bidang tesebut dengan warna yang sama.
• SHININESS
Shininess merupakan pemberian efek cahaya sehingga menimbulkan warna yang berkilauan. Efek berkilauan ini untuk melengkapi efek cahaya diffuse, specular dan ambient pada saat cahaya mengenai permukaan objek.
• TEXTURING
Texturing merupakan proses penambahan tekstur ke permukaan objek. Penambahan tekstur ini dapat dilakukan dengan dua cara, yaitu :
1. Tambahkan citra bitmap atau citra lainnya ke permukaan objek.
2. Memodifikasi nilai vector normal pada permukaan objek sehingga pemberian cahaya pada permukaan didistorsi.
Rendering (pengecatan) adalah sebuah cara dalam grafika computer untuk membuat pemandangan nampak nyata atau visualisasi objek 3 dimensi menjadi riil.
Ada beberapa factor yang mempengaruhi yaitu :
1. Cahaya
2. Sifat atau karakteristik bahan
3. Posisi kamera
4. Dll
•LIGHTING
Lighting atau pencahayaan merupakan statu metode yang dapat diterapkan pada proses rendering untuk menjadikannya sebuah objek menjadi terlihat berbeda.
Dalam proses Rendering dan lighting dipengaruhi beberapa factor yaitu:
1. Jarak objek dengan sumber cahaya.
2. Posisi objek.
3. Bentuk [permukaan objek.
• MODEL BAYANGAN
a. Bayangan Rata (flat shading)
Pemberian bayangan rata(flat) merupakan cara termudah untuk dibuat dan mempunyai karakteristik sebagai berikut:
- Pemberian tone yang sama untuk setiap polygon.
- Perhitungan jumlah cahaya mulai dari titik tunggal pada permukaan.
- Penggunaan satu normal untuk seluruh permukaan.
Pemberian bayangan rata ini mengasumsikan bahwa setiap muka polygon dari sebuah objek adalah rata dan semua titik pada permukaaknya mempunyai jarak yang sama dengan sumber cahaya.
b. Bayangan halus
Bayangan ini yaitu membuat perubahan setahap demi setahap dalam pemberian bayangan pada sebuah permukaan Cara ini mengijinkan pemberian bayangan pada satu muka lebih pudar dibandingkan muka yang lain.
• JENIS-JENIS CAHAYA
a. Cahaya Pantulan
b. Cahaya Tersebar
c. Cahaya Spekular
d. Cahaya Ambient
• WARNA
1. Metode Scanline
Yaitu metode dengan menentukan overlap interval untuk scanline yang melintasi area.
2. Metode Inside Outside Test
Yaitu metode dengan memulai dari titik tertentu pada posisi di dalam polygon dan menggambar dengan arah menyebar kepinggir sampai batas polygon.
3. Metode Boundary Fill
Yitu pendekatan untuk mengisi suatu bidang polygon dengan Bundary fill. Metode ini bermanfaat untuk paket-paket grafik interaktif dimana titik dalam dapat dengan mudah ditentukan.
4. Metode Flood Fill
Yaitu metode yang dimulai pada ttitik (x,y) dan mendefinisikan seluruh pixel pada bidang tesebut dengan warna yang sama.
• SHININESS
Shininess merupakan pemberian efek cahaya sehingga menimbulkan warna yang berkilauan. Efek berkilauan ini untuk melengkapi efek cahaya diffuse, specular dan ambient pada saat cahaya mengenai permukaan objek.
• TEXTURING
Texturing merupakan proses penambahan tekstur ke permukaan objek. Penambahan tekstur ini dapat dilakukan dengan dua cara, yaitu :
1. Tambahkan citra bitmap atau citra lainnya ke permukaan objek.
2. Memodifikasi nilai vector normal pada permukaan objek sehingga pemberian cahaya pada permukaan didistorsi.
Laporan Prak. Grafika ke-6
TRANSFORMASI OBYEK TIGA DIMENSI
Transformasi obyek 3D merupakan perluasan dan teknik. Seperti pada transformasi 2D, sembarang transformasi dapat disajikan ke dalam suatu matrik transformasi dan transformasi rumit dapat dinyatakan oleh sebuah matriks transportasi yang merupakan gabungan dari matrik-matrik dari transportasi dasar yang ada.
Matrik M adalah matrik 3x3, matrik M adalah matrik untuk transformasi :
1. Translasi
2. Skala
3. Pemutaran
• Pemutaran terhadap sumbu X
• Pemutaran terhadap sumbu Y
• Pemutaran terhadap sumbu Z
Shearing
Shearing pada sembarang sepasang sumbu dapat dilaksanakan pada sumbu ke tiga.
Matrik transportasi untuk shearing :
Kamera Sintetik
Adalah cara pandang pada ruang 3D yang menggunakan 3 komponen :
• Bidang pandang
• Sistem koordinat pandang
• Mata
Sistem koordinat pandang
Disebut sebagai system koordinat uvn karena disusun oleh koordinat u, v dan n. Bidang pandang berimpit dengan uv, pada bidang pandang ini ditentukan sebuah titik yang disebut sebagai titik acuan pandang yang merupakan pusat sistem koordinat pandang.
Transformasi obyek 3D merupakan perluasan dan teknik. Seperti pada transformasi 2D, sembarang transformasi dapat disajikan ke dalam suatu matrik transformasi dan transformasi rumit dapat dinyatakan oleh sebuah matriks transportasi yang merupakan gabungan dari matrik-matrik dari transportasi dasar yang ada.
Matrik M adalah matrik 3x3, matrik M adalah matrik untuk transformasi :
1. Translasi
2. Skala
3. Pemutaran
• Pemutaran terhadap sumbu X
• Pemutaran terhadap sumbu Y
• Pemutaran terhadap sumbu Z
Shearing
Shearing pada sembarang sepasang sumbu dapat dilaksanakan pada sumbu ke tiga.
Matrik transportasi untuk shearing :
Kamera Sintetik
Adalah cara pandang pada ruang 3D yang menggunakan 3 komponen :
• Bidang pandang
• Sistem koordinat pandang
• Mata
Sistem koordinat pandang
Disebut sebagai system koordinat uvn karena disusun oleh koordinat u, v dan n. Bidang pandang berimpit dengan uv, pada bidang pandang ini ditentukan sebuah titik yang disebut sebagai titik acuan pandang yang merupakan pusat sistem koordinat pandang.
Laporan Prak.Grafika ke-4
Pada pertemuan kali ini membahasa tentang Transformasi Obyek Dua Dimensi
Langkah-langkah Trasformasi Viewing 2 Dimensi
1. Pembentukan scane pada WC menggunakan output primitif atribut.
2. Untuk mendapatkan orientasi tertentu dari window, maka ditentukan system VC 2 dimensi padfa WC. Frame digunakan untuk melengkapi penentuan orientasi dari windows persegi empat. Setelah frame dibentuk dapat ditrasformasikan ke dalam WC untuk menampilkan koordinat.
3. Kemudian viewport ditentukan dalam normalize NVC ( pada batasan antara 0 – 1) dan meletakkan diskripsi VC dari scane pada normalized Coordinate.
4. Akhirnya dilakukan clipping (pemotongan) pada semua gambar yang ada diluar viewport.
Macam – macam Trasformasi :
• Trasfoemasi Objek yang ditrasformasikan titik yang menyusun objek tersebut.
• Transformasi Koordinat yang diubah system koordinatnya sehingga objek mengalami trasformasi dikarenakan perubahan system koordinat tersebut.
Tujuan Transformasi :
1. Merubah atau meyesuaikan komposisi pandangan.
2. Memudahkan membuat objek yang simetris.
3. Melihat objek dari sudut pandang yang berbeda.
4. Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain, biasanya digunakan pada animasi komputer.
Transformasi dasar pada Objek dua dimensi terdiri dari :
a. Translasi.
Translasi merupakan suatu proses yang menyebapkan perpindahan objek dari satu titik ke titik lain. Translasi digunakan dengan penambahan translasi pada suatu titik koordinat dengan translasi vector yaitu (TRx, Try). Dimana tr, adalah trasiation vector menurut sumbu x sefangkan translasi vector dengan sumbu y.
Koordinat baru titik yang di traslasi dapat diperoleh dengan menggunakan rumus :
X = x + TRx
Y = y + TRy
b. Skala.
Trasformasi skala adalah perubahan ukuran suatu objek. Penskalaan dilakukan untuk memperbesar atau memperkecil gambar dengan persamaan Q = pm + tr hasil pelaksanaanya dinyatakan :
(Qx, Qy) = (Sx, Px, Sy, Py)
Sx = factor skala kearah mendatar
Sy = factor skala kearah tegak.
c. Rotasi
Rotasi merupakan bentuk tasformasi berupa pemutaran objek, dilakukan dengan menambah besaran pada absis X, Rotasi dua dimensi pada suatu objek akan memindahkan objek tersebut menurut garis melingkar pada bidang xy.
Dengan persamaan Q = pm + tr hasil pemuratan dinyatakan dengan (Qx, Qy) = (Px + trx, Py + try) dan M dinyatakan sebagai matriks index identitas.
Dengan persamaan Q = PM + tr hasil pemutarannya dinyatakan :
Qx = Px Cos (0 – Py Sin (0)
Qy = Px Sin (0) + Py Cos (0)
d. Shearing
Shearing adalah bentuk trasformasi yang membuat distori dari bentuk statu objek seperti menggeser sisi tertentu.
e. Sistem Koordinat Homogen
Sistem koordinat homogen adalah sistim koordinat yang mempunyai satu dimensi lebih tinggi dari Sistem koordinat yang ditinjau. Digunakan untuk menyatakan semua proses trasformasi dengan perkalian matriz termasuk penggeseran.
Dengan sistem koordinat homogen ini proses trasformasi dapat dinyatakan dengan (Qx, Qy) = Px, Py, 1)M
Dengan M adalah matrikx 3x3.
KESIMPULAN :
Pada praktikum pertemuan ke 4 ini, belajar tentang Transformasi Objek Dua dimensi. Dimana dalam bab ini mempelajari berbagai cara untuk memanipulasi dan memodifikasi objek dua dimensi serta mampu memodifikasi objek dua dimensi dan mengimplementasikan kedalam program.
Transformasi dasar dua dimensi terdiri dari :
1. TRANSLASI
2. SKALA
3. ROTASI
4. SHEARING
5. SISTEM KOORDINAT HOMOGEN
6. PEMBATALAN TRASFORMASI AFFIN
Masing- masing memiliki aturan dan rumus yang berbeda-beda.
Langkah-langkah Trasformasi Viewing 2 Dimensi
1. Pembentukan scane pada WC menggunakan output primitif atribut.
2. Untuk mendapatkan orientasi tertentu dari window, maka ditentukan system VC 2 dimensi padfa WC. Frame digunakan untuk melengkapi penentuan orientasi dari windows persegi empat. Setelah frame dibentuk dapat ditrasformasikan ke dalam WC untuk menampilkan koordinat.
3. Kemudian viewport ditentukan dalam normalize NVC ( pada batasan antara 0 – 1) dan meletakkan diskripsi VC dari scane pada normalized Coordinate.
4. Akhirnya dilakukan clipping (pemotongan) pada semua gambar yang ada diluar viewport.
Macam – macam Trasformasi :
• Trasfoemasi Objek yang ditrasformasikan titik yang menyusun objek tersebut.
• Transformasi Koordinat yang diubah system koordinatnya sehingga objek mengalami trasformasi dikarenakan perubahan system koordinat tersebut.
Tujuan Transformasi :
1. Merubah atau meyesuaikan komposisi pandangan.
2. Memudahkan membuat objek yang simetris.
3. Melihat objek dari sudut pandang yang berbeda.
4. Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain, biasanya digunakan pada animasi komputer.
Transformasi dasar pada Objek dua dimensi terdiri dari :
a. Translasi.
Translasi merupakan suatu proses yang menyebapkan perpindahan objek dari satu titik ke titik lain. Translasi digunakan dengan penambahan translasi pada suatu titik koordinat dengan translasi vector yaitu (TRx, Try). Dimana tr, adalah trasiation vector menurut sumbu x sefangkan translasi vector dengan sumbu y.
Koordinat baru titik yang di traslasi dapat diperoleh dengan menggunakan rumus :
X = x + TRx
Y = y + TRy
b. Skala.
Trasformasi skala adalah perubahan ukuran suatu objek. Penskalaan dilakukan untuk memperbesar atau memperkecil gambar dengan persamaan Q = pm + tr hasil pelaksanaanya dinyatakan :
(Qx, Qy) = (Sx, Px, Sy, Py)
Sx = factor skala kearah mendatar
Sy = factor skala kearah tegak.
c. Rotasi
Rotasi merupakan bentuk tasformasi berupa pemutaran objek, dilakukan dengan menambah besaran pada absis X, Rotasi dua dimensi pada suatu objek akan memindahkan objek tersebut menurut garis melingkar pada bidang xy.
Dengan persamaan Q = pm + tr hasil pemuratan dinyatakan dengan (Qx, Qy) = (Px + trx, Py + try) dan M dinyatakan sebagai matriks index identitas.
Dengan persamaan Q = PM + tr hasil pemutarannya dinyatakan :
Qx = Px Cos (0 – Py Sin (0)
Qy = Px Sin (0) + Py Cos (0)
d. Shearing
Shearing adalah bentuk trasformasi yang membuat distori dari bentuk statu objek seperti menggeser sisi tertentu.
e. Sistem Koordinat Homogen
Sistem koordinat homogen adalah sistim koordinat yang mempunyai satu dimensi lebih tinggi dari Sistem koordinat yang ditinjau. Digunakan untuk menyatakan semua proses trasformasi dengan perkalian matriz termasuk penggeseran.
Dengan sistem koordinat homogen ini proses trasformasi dapat dinyatakan dengan (Qx, Qy) = Px, Py, 1)M
Dengan M adalah matrikx 3x3.
KESIMPULAN :
Pada praktikum pertemuan ke 4 ini, belajar tentang Transformasi Objek Dua dimensi. Dimana dalam bab ini mempelajari berbagai cara untuk memanipulasi dan memodifikasi objek dua dimensi serta mampu memodifikasi objek dua dimensi dan mengimplementasikan kedalam program.
Transformasi dasar dua dimensi terdiri dari :
1. TRANSLASI
2. SKALA
3. ROTASI
4. SHEARING
5. SISTEM KOORDINAT HOMOGEN
6. PEMBATALAN TRASFORMASI AFFIN
Masing- masing memiliki aturan dan rumus yang berbeda-beda.
Laporan Prak. Grafika ke-3
Pada Pertemuan kali ini, belajar mngenai Lingkaran dan Ellipse :
1. LINGKARAN
Dalam membentuk suatu lingkaran ada beberapa algoritma yang bisa digunakan :
a. Algoritma Lingkaran 8 titik Simetris
Algoritma pembentukan lingkaran ini dengan algoritma ini dapat dilakukan dengan menentukan suatu titik awal. Bila titk awal pada lingkaran (x,y) maka terdapat tiga posisi lain sehingga dapat diperoleh delapan tiik. Dengan demikian hanya diperlukan untuk menghitung segmen 45 derajat dalam menentukan lingkaran selengkapnya.
b. Algoritma Lingkaran Titik Tengah (Mid Point)
Algoritma mid point juga disebut algoritma lingkaran Bressenham. Bressenham mengembangkan generator lingkaran cukup efisien. Algoritma yang yang digunakan membentuk semua tiitk berdasarkan titik pusat dengan penambahan semua jalur disekeliling lingkaran. Algoritma ini diturunkan dari algoritma mid point untuk pembentukan garis. Dalam hal ini diperhatikan bagian 45 derajat dari suatu lingkaran yaitu oktan kedua dari x=0 ke x=R/akarv 2 dan dengan menggunakan prosedur 8 titik simetris untuk menampilkan semua lingkaran.
2. ELIPS
Elips merupakan modifikasi dari bentuk lingkaran dengan memasukkan mayor dan minor exix pada prosedur lingkaran. Elips ditentukan oleh satu set titik dengan memperhitungkan jumlah jarak dari kedua posisi (foci). Bila jarak kedua foci dari sembarang titik P(x,y) pada elips diberi label d1 dan d2 maka persamaan elips menjadi d1+d2 konstant.
a. Algoritma Elips Mid Point
Algoritma pembentukan elips pada dasarnya sama dengan algoritma pembentukan lingkaran hanya perbedaanya terletak pada jejarinya. Pada lingkaran terdapat jejari sedangkan pada elips terdapat dua jejari yaitu jejari minor dan jejari mayor.
b. Algoritma Elips C++
Algoritma Elips C++ adalah pembentukan elips dengan memanfaatkan fungsi yang disediakan oleh C++, fungsi yang digunakan untuk pembentukan elips dengan menggunakan fungsi elips seperti halnya pada pembentukan lingkaran.
KESIMPUULAN
Pada praktikum pertemuan ke 3 ini kata belajar tentang Lingkaran dan Elips. Dimana dalam bab ini kita memahami 4 algoritma yaitu pada Algoritma Lingkaran 8 titik dan Algoritma Lingkaran Mid Point, kdan pada elips terdapat dua algoritma juga yaitu Algoritma Elips Mid Point dan Algoritma Elips C++ dan mengaplikasikan algoritma tersebut kedalam program
Dalam ke 4 Algoritma tersebut memiliki langkah masing-masing dimana langkah yang digunakan berbeda-beda dan menampilkan hasil output yang berbeda. Jadi kita bisa memahami dan membadingkan Lingkaran Dan Elips dengan algoritma yang ada.
nb : Maaf program tidak bisa ditampilkan:)
1. LINGKARAN
Dalam membentuk suatu lingkaran ada beberapa algoritma yang bisa digunakan :
a. Algoritma Lingkaran 8 titik Simetris
Algoritma pembentukan lingkaran ini dengan algoritma ini dapat dilakukan dengan menentukan suatu titik awal. Bila titk awal pada lingkaran (x,y) maka terdapat tiga posisi lain sehingga dapat diperoleh delapan tiik. Dengan demikian hanya diperlukan untuk menghitung segmen 45 derajat dalam menentukan lingkaran selengkapnya.
b. Algoritma Lingkaran Titik Tengah (Mid Point)
Algoritma mid point juga disebut algoritma lingkaran Bressenham. Bressenham mengembangkan generator lingkaran cukup efisien. Algoritma yang yang digunakan membentuk semua tiitk berdasarkan titik pusat dengan penambahan semua jalur disekeliling lingkaran. Algoritma ini diturunkan dari algoritma mid point untuk pembentukan garis. Dalam hal ini diperhatikan bagian 45 derajat dari suatu lingkaran yaitu oktan kedua dari x=0 ke x=R/akarv 2 dan dengan menggunakan prosedur 8 titik simetris untuk menampilkan semua lingkaran.
2. ELIPS
Elips merupakan modifikasi dari bentuk lingkaran dengan memasukkan mayor dan minor exix pada prosedur lingkaran. Elips ditentukan oleh satu set titik dengan memperhitungkan jumlah jarak dari kedua posisi (foci). Bila jarak kedua foci dari sembarang titik P(x,y) pada elips diberi label d1 dan d2 maka persamaan elips menjadi d1+d2 konstant.
a. Algoritma Elips Mid Point
Algoritma pembentukan elips pada dasarnya sama dengan algoritma pembentukan lingkaran hanya perbedaanya terletak pada jejarinya. Pada lingkaran terdapat jejari sedangkan pada elips terdapat dua jejari yaitu jejari minor dan jejari mayor.
b. Algoritma Elips C++
Algoritma Elips C++ adalah pembentukan elips dengan memanfaatkan fungsi yang disediakan oleh C++, fungsi yang digunakan untuk pembentukan elips dengan menggunakan fungsi elips seperti halnya pada pembentukan lingkaran.
KESIMPUULAN
Pada praktikum pertemuan ke 3 ini kata belajar tentang Lingkaran dan Elips. Dimana dalam bab ini kita memahami 4 algoritma yaitu pada Algoritma Lingkaran 8 titik dan Algoritma Lingkaran Mid Point, kdan pada elips terdapat dua algoritma juga yaitu Algoritma Elips Mid Point dan Algoritma Elips C++ dan mengaplikasikan algoritma tersebut kedalam program
Dalam ke 4 Algoritma tersebut memiliki langkah masing-masing dimana langkah yang digunakan berbeda-beda dan menampilkan hasil output yang berbeda. Jadi kita bisa memahami dan membadingkan Lingkaran Dan Elips dengan algoritma yang ada.
nb : Maaf program tidak bisa ditampilkan:)
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-----
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
-> 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
Langganan:
Postingan (Atom)