//
you're reading...
Arsip Kuliah, Java, Komputer dan Internet, Pemrograman

Algoritma Pembentukan Garis dalam Grafika Komputer


Sebelum membahas mengenai Algoritma Pembentukan Garis, alangkah baiknya kita bahas dulu apa itu Garis? Garis adalah penghubung antara dua buah titik (titik awal dan titik akhir).

Seperti yang kita tahu, bahwa persamaan garis lurus dinyatakan dalam rumus: y=mx+c. Dimana m adalah gradien yang didapatkan dari hasil pembagian deltaY dengan deltaX dan c adalah sebuah konstanta. Berangkat dari sini kita coba mulai untuk membahas algortima apa saja yang digunakan dalam pembuatan garis lurus.

Algoritma Naive

  1. Tentukan titik-titik penghubung koordinat awal dan akhir.
  2. Dimulai dari titik (XAwal, Yawal), untuk menentukan titik selanjutnya, increment-kan Xi sebanyak 1 satuan. Lalu Yi dihitung dengan menggunakan rumus Yi = (m*Xi)+c.

Jika diimplementasikan dalam bahasa Java kurang lebih seperti ini:

float X1 = 0; float X2 = 3;
float Y1 = 0; float Y2 = 10;
float Dx = X2 - X1;
float Dy = Y2 - Y1;

float m = (Y2-Y1)/(X2-X1);
float c = Y1-(m*X1);
float Xi;
float Yi;

if (Math.abs(Dx) < Math.abs(Dy)) {
    Yi = Y1;
    while(Yi <=Y2){
        Xi=(Yi-c)/m;
        g.drawRect(Math.round(Xi),Math.round(Yi), 5,5);
        Yi++;
    }
} else {
    Xi = X1;
    while(Xi <= X2){
        Yi=(m*Xi)+c;
        g.drawRect(Math.round(Xi),Math.round(Yi),5,5);
        Xi++;
    }
}

Penjelasan kode:

Pertama, kita inisialisasi kan terlebih dahulu titik awal dan titik akhir. Dalam hal ini (X1,Y1) sebagai titik awal dan (X2,Y2) sebagai titik akhir. Lalu, dihitung gradien garis dan juga konstanta dari persamaan y = mx + c. Sebenarnya inti dari algoritma naive terletak dalam perulangan dimana Xi < = X2. Adapun Dx dan Dy dibuat hanya untuk mengetahui kemana titik yang membentuk garis akan bergerak. Gak ngerti kan? :P. Cobain aja deh sendiri, nanti juga ngerti ko. 🙂

Algortima Digital Differential Analyzer

  1. Tentukan dua buah titik.
  2. Titik awal (Xawal, Yawal) dan titik akhir (XAkhir, Yakhir).
  3. Hitung Dx dan Dy menggunakan rumus:

    Dx = XAkhir – Xawal,

    Dy = Yakhir – Yawal

  4. Bandingkan nilai mutlak Dx dan Dy. Jika Dx > Dy, maka steps = nilai absolut Dx. Jika Dx < Dy, maka steps = nilai absolut Dy.
  5. Hitung penambahan increment untuk X dengan xInc = Dx/steps dan yInc = Dy/steps.
  6. Kemudian increment-kan nilai Xi dengan nilai xInc, juga Yi dengan yInc.
  7. Bulatkan nilai koordinat untuk menentukan posisi pixel.
  8. Ulangi langkah 6 dan 7 sampai Xi = Xakhir dan Yi = Yakhir.

Jika diimplementasikan dalam bahasa Java kurang lebih seperti ini:

int X1 = 0;
int X2 = 100;
int Y1 = 0;
int Y2 = 30;
int Dx = X2-X1;
int Dy = Y2-Y1;
int steps;
float xInc, yInc;
float x = X1;
float y = Y1;
if (Math.abs(Dx) > Math.abs(Dy)) {
    steps = (int) Math.abs(Dx);
} else {
    steps = (int) Math.abs(Dy);
}

xInc = Dx / (float) steps;
yInc = Dy / (float) steps;

for (int k = 0; k < steps; k++) {
    x += xInc;
    y += yInc;
    g.drawRect((int) Math.round(x), (int) Math.round(y),5,5);
}

Penjelasan kode:

Dalam DDA, yang kita lakukan adalah mencari nilai absolut dari deltaX dan deltaY dan kemudian dibandingkan untuk menentukan steps. Steps ini nantinya digunakan sebagai nilai pembatas perulangan. Sehingga dalam satu perulangan x dan y di increment-kan bersama. 🙂

 

Algoritma Midpoint

Untuk algoritma ini masih dalam tahap analisis. Jika saya sudah paham benar baru saya akan cantumkan. Hehe :).

 

Apabila masih ada algoritma yang kurang efektif, saran dan masukan sangat saya harapkan.

Semoga Bermanfaat. :)

Iklan

About Rendy Faqot

Adalah Sarjana Komputer dari jurusan Ilmu Komputer Universitas Pendidikan Indonesia 2008. Menyelesaikan studi selama 5 tahun yang penuh dengan lika-liku kehidupan mahasiswa sebagaimana mahasiswa normal pada umumnya. Tertarik dengan bidang Data Mining, Natural Language Processing, dan Mobile Development. InsyaAllah, mohon doa-nya agar bisa melanjutkan studi master untuk bidang tersebut. Pernah mencicipi dunia industri sebagai Analyst Programmer di Fujitsu Indonesia dan PT. BSP. Saat ini berdomisili di Bandung dan akan melanjutkan kehidupan di Bandung (untuk sementara).

Diskusi

One thought on “Algoritma Pembentukan Garis dalam Grafika Komputer

  1. makasih mas bro, membantu sekali..

    Posted by gilang a. ramadan | 12 Oktober 2011, 00:26

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: