Abstrak
Seiring dengan berkembangnya zaman, dalam ilmu grafika komputer, kemajuan teknologi menyebabkan kebutuhan
manusia semakin bertambah. Kebutuhan dan pemecahan masalah itu dapat lebih mudah terpenuhi. Tak terkecuali
pada ilmu grafika kompter, perkembangan kemampuan komputasi prosesor yang pesat telah membuat komputer
desktop mempunyai kemampuan komputasi yang besar. Hal ini mendorong perkembangan program aplikasi yang
memerlukan komputasi yang besar seperti program aplikasi yang menggunakan grafik 3 dimensi. Peningkatan
kemampuan komputasi prosesor untuk aplikasi grafik yang sarat komputasi, perlu dibarengi peningkatan efisiensi
algoritma, sehingga pembuatan grafik garis dan kurva yang merupakan dasar pembuatan grafik dapat memberikan
hasil yang optimal. Algoritma itu ssendiri adalah urutan atau langkah-langkah untuk penghitungan atau untuk
menyelesaikan suatu masalah yang ditulis secara berurutan. Sedangkan garis merupakan kumpulan dari titik-titik,
untuk membentuk garis lurus adalah dengan mengetahui titik awal dan titik akhir. Dengan mengetahui titik awal dan
titik akhir maka kita dapat membentuk garis. Untuk menggambarkan proses pembuatan garis dari titik awal ke titik
akhir ada berbagai algoritma. Algoritma yang umum adalah DDA dan Bressenham. Algoritma DDA adalah algoritma
pembentukan garis berdasarkan perhitungan dx maupun dy, menggunakan rumus dy=m.dx. Semua koordinat titik
yang membentuk garis diperoleh dari perhitungan kemudian dikonversikan menjadi nilai integer. Sedangkan
algoritma bresenham merupakan suatu algoritma (pendekatan) yang dikreasikan oleh bresenham yang tidak kalah
akurat dan efisien dengan algoritma primitif lainnya (seperti DDA). Bagian pengkonversian (scan-knversi) garis akan
melakukan kalkulasi untuk penambahan nilai-nilai integer (yang dibutuhkan untuk membentuk garis) yang
disesuaikan dengan tipe grafik yang dipakai oleh layar komputer
1. PENDAHULUAN
Apa itu Algoritma Pembentukan Garis? Mengapa di dalam ilmu grafika komputer kita
perlu mengetahui algoritma pembentukan garis? Dalam matematika dan ilmu komputer, algoritma
adalah urutan atau langkah-langkah untuk penghitungan atau untuk menyelesaikan suatu masalah
yang ditulis secara berurutan. Sehingga, algoritma pemrograman adalah urutan atau langkah-
langkah untuk menyelesaikan masalah pemrograman komputer. Dalam pemrograman, hal yang
penting untuk dipahami adalah logika kita dalam berpikir bagaimana cara untuk memecahkan
masalah pemrograman yang akan dibuat. Sebagai contoh, banyak permasalahan matematika yang
mudah jika diselesaikan secara tertulis, tetapi cukup sulit jika kita terjemahkan ke dalam
pemrograman. Dalam hal ini, algoritma dan logika pemrograman akan sangat penting dalam
pemecahan masalah. [1]
Sedangkan garis itu sendiri merupakan suatu himpunan titik-titik yang anggotanya terdiri
dari lebih satu buah titik. Dan titik-titik tersebut berderet ke dua arah yang berlawanan hingga jauh
tidak terhingga. Sedangkan model ataupun representasi suatu garis misalkan seperti seutas benang
atau juga tali lurus yang bisa diperpanjang pada kedua arah yang berlawanan hingga jauh tak
terhingga. Garis juga merupakan salah satu bentuk dasar dari gambar. Sebuah garis dalam grafika
komputer disebut dengan segmen. Garis hanya memiliki ukuran yang panjang, berbeda dengan
titik yang diberikan nama menggunakan satu buah dari huruf kapital, tetapi garis diberi nama
dengan mengunakan sebuah huruf kecil seperti g, h, k dan juga seterusnya ataupun dua buah huruf
kapital misalkan AB, AC, BC dan juga seterusnya. [2]
2. TINJAUAN PUSTAKA
Sebelum membahas lebih dalam mengenai algoritma pembentukan garis, terlebih dahulu
kita membahas sejarah algoritma dan garis itu sendiri. Algoritma pada dasarnya adalah susunan
logis dan sistematis yang digunakan untuk memecahkan atau pun menyelesaikan suatu
permasalahan tertentu. Jadi, setiap susunan logis yang diurutkan berdasarkan sistematika tertentu
yang dipakai untuk menyelesaikan permasalahan dapat digolongkan sebagai sebuah algoritma.
Susunan atau pun langkah – langkah memasak mie intan misalnya, langkah – langkah sistematis
yang digunakan untuk memasak mie instan dapat digolongkan ke dalam logaritma, karena
menyelesaikan sebuah permasalahan yaitu permasalahan lapar yang dirasakan oleh manusia.
Menurut Goodman Hedet Niemi “algoritma adalah urutan terbatas dari operasi-operasi
terdefinisi dengan baik, yang masing-masing membutuhkan memori dan waktu yang terbatas
untuk menyelesaikan suatu masalah”.
Garis merupakan kumpulan dari titik-titik, untuk membentuk garis lurus adalah dengan
mengetahui titik awal dan titik akhir. Dengan mengetahui titik awal dan titik akhir maka kita dapat
membentuk garis. semua bentuk gambar berawal dari satu titik yang membuat suatu gerakan, titik
itu bergerak dan terbentuklah suatu garis dikenal sebagai dimensi-pertama. Bila garis itu bergerak
membentuk sebuah bidang, maka kita dapat menentukan sebuah unsur dua-dimensi. Selama
perkembangannya dari bidang menjadi ruang, pertemuan bidang-bidang tadi melahirkan suatu
badan (tiga-dimensi) Sebuah ringkasan mengenai energi kinetic yang menggerakkan sebuah titik
menjadi garis, garis menjadi bidang dan bidang menjadi dimensi ruang” (1960, Paul Klee, The
Thinking Eye: The Notebooks of Paul Klee).
Garis dibuat dengan menentukan dua endpoint atau posisi awal dan posisi akhir dari suatu
garis. Kemudian peralatan output membuat garis sesuai posisi titik titik tersebut. Untuk peralatan
analog seperti plotter an random-scan display garis lurus dapat dihasilkan dengan halus. 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. [3]
Algoritma DDA mengambil nilai integer terdekat dengan jalur garis berdasarkan atas
sebuah titik yang telah ditentukan sebelumnya(titik awal garis). Keuntungan dari algoritma ini
adalah tidak perlu menghitung koordinat berdasarkan persamaan yang lengkap (menggunakan
metode offset). [5]
3. PEMBAHASAN
1. ALGORITMA DDA
Algoritma DDA adalah algoritma pembentukan garis berdasarkan perhitungan dx maupun dy,
menggunakan rumus dy=m.dx. Semua koordinat titik yang membentuk garis diperoleh dari
perhitungan kemudian dikonversikan menjadi nilai integer.
DDA ( Digital Differential Analyzer) adalah garis yang membentang antara 2 titik, P1 dan P2.
Dimana ke-2 titik ini membentuk sudut yang besarnya sangat bervariasi. Bekerja atas dasar
penambahan nilai x dan nilai y. Dimana pada garis lurus, turunan pertama dari x dan y adalah
kostanta.
3. Hitung dx = x2 – x1 dan dy = y2 – y1
4. Tentukan step, yaitu jarak maksimum jumlah penambahan nilai x atau nilai y, dengan
ketentuan:
x_inc = dx / step
y_inc = dy / step
8. Ulangi step nomor 6 dan 7 untuk menentukan posisi pixel berikutnya sampai x = x1 atau y
= y1.
Bentuk garis:
Cenderung mendatar
Miring 45°
Gradien bernilai m = 1
Keuntungan dari algoritma Digital Differential Analyzer (DDA) adalah tidak perlu
menghitung koordinat berdasarkan persamaan yang lengkap (menggunakan metode off set)
Kerugiannya dari algoritma Digital Differential Analyzer (DDA) adalah adanya akumulasi
Round-off errors, sehingga garis akan melenceng dari garis lurus, selain itu operasi round-off
juga menghabiskan waktu.
2. ALGORITMA BRESENHAM
Algoritma bresenham merupakan suatu algoritma (pendekatan) yang dikreasikan oleh bresenham
yang tidak kalah akurat dan efisien dengan algoritma primitif lainnya (seperti DDA). Bagian
pengkonversian (scan-knversi) garis akan melakukan kalkulasi untuk penambahan nilai-nilai
integer (yang dibutuhkan untuk membentuk garis) yang disesuaikan dengan tipe grafik yang
dipakai oleh layar komputer (keadaan monitor pc) kita. Untuk mengilustrasikan pendekatan
bresenham, pertama kita harus memperhatikan proses scan- konvensi untuk garis dengan slope
positif yang lebih kecil dari 1. Posisi pixel sepanjang line-path kemudian ditentukan dengan
penyamplingan pada unit interval x.dimulai dari endpoint kiri (Xo,Yo) dari garis yang diberikan,
kita pindahkan beberapa kolom berturut-turut (berdasarkan posisi x) dan plot pixel-pixel yang
mempunyai nilai scan-line y ke jarak yang paling dekat dengan line-path.
B. ATURAN BRESENHAM
· Jika Pk bernilai positif (+),maka tambahkan hasilnya dengan B dan nilai x & y ditambah 1.
· Jika Pk bernilai negatif (-), maka tambahkan hasilnya dengan A dan nilai x ditambah 1,
sedangkan y ditambah 0 (tetap).
3. Pada tiap langkah, penentuan pixel selanjutnya didasari oleh parameter integer yang nilainya
proporsional dengan pengurangan antara vertical separations dari dua posisi piksel dari nilai actual.
Garis lurus dinyatakan dinyatakan dalam persamaan :
y = mx + c è Persamaan(1)
dimana :
m : gradient dan
c : konstanta.
c = y1 / m* x1* (3)
Operasi bilangan real berikutnya adalah menghitung nilai y dengan persamaan (1) Untuk
mendapatkan koordinat piksel (x,y), untuk setiapnilai x, dari =x1 sampai x=x2, operasi inilah yang
perlu dihindari,karena operasi ini memerlukan waktu operasi yang besar.
2. Tentukan salah satu titik disebelah kiri sebagai titik awal, yaitu (X0,Y0) dan titik lainnya
sebagai titik akhir (X1, Y1)
3. hitung Dx, Dy, 2DX dan 2Dy-2Dy
· bila pk<0, makatitik selanjutnya adalah (Xk + 1, Yk) dan Pk+1 = Pk +2Dy
· bila tidak, maka titik selanjutnya adalah (Xk + 1, Yk +1) dan Pk+1 = Pk +2Dy – 2Dx
6. Ulangi langkah no. 5 untuk menentukan posisi selanjutnya, sampai X=X1 dan Y=Y1. [7]
4. HASIL
Kesimpulan
Berdasarkan pembahasan diatas dan penelitian yang telah dilakukan sebelumnya, maka dapat
diambil kesimpulan sebagai berikut:
Garis dibuat dengan menentukan dua endpoint atau posisi awal dan posisi akhir dari suatu garis.
Kemudian peralatan output membuat garis sesuai posisi titik titik tersebut. Panjang garis atau
banyak piksel dalam garis lurus sangat berpengaruh terhadap perbandingan performance antara
sebuah algoritma dengan algoritma yang lain, hal ini disebabkan adanya perbedaan waktu operasi
yang berada didalam perulangan sepanjang pembuatan piksel, dan waktu operasi yang berada pada
sebelumnya.
Algoritma DDA mengambil nilai integer terdekat dengan jalur garis berdasarkan atas sebuah titik
yang telah ditentukan sebelumnya(titik awal garis). Keuntungan dari algoritma Digital
Differential Analyzer (DDA) adalah tidak perlu menghitung koordinat berdasarkan persamaan
yang lengkap (menggunakan metode offset). Sedangkan kerugiannya adalah adanya akumulasi
Round-off errors, sehingga garis akan melenceng dari garis lurus, selain itu operasi round-off
juga menghabiskan waktu. Sedangkan untuk kerugian dari algoritma Digital Differential
Analyzer (DDA) adalah adanya akumulasi Round-off errors, sehingga garis akan melenceng dari
garis lurus, selain itu operasi round-off juga menghabiskan waktu.
Tujuan dari algoritma Bressenham ini adalah untuk menghindari pembulatan nilai seperti pada
algoritma DDA. Pada algoritma bressenham, nilai y kedua dan seterusnya, dihitung dari nilai y
sebelumnya, sehingga hanya titik y pertama yang perlu dilakukan operasi secara lengkap.
Algoritma dengan dasar operasi bilangan integer memberikan waktu operasi yang lebih cepat
dibandingkan dengan algoritma dengan dasar operasi bilangan riel, hal ini ditunjukkan dengan
waktu komputasi algoritma DDAdan algoritma yang lebih cepat, baik pada pembuatan garis lurus
maupun lingkaran dibandingan waktu komputasi dengan algoritma yang menggunakan dasar
operasi bilangan riel.
DAFTAR PUSTAKA
[1] https://teknojurnal.com/pengertian-algoritma-pemrograman/
[2] http://www.spengetahuan.com/2016/09/pengertian-titik-garis-dan-bidang-lengkap.html
[3] http://zha-restyanie.blogspot.co.id/2010/10/garis-dengan-bresenham.html
[4] http://gustiam74.blogspot.co.id/2016/04/algoritma-pembentukan-garis-dda-dan.html
[5] https://robyyuliardi.wordpress.com/2014/10/08/algoritma-dda-digital-differential-analyzer/
[6] http://gustiam74.blogspot.co.id/2016/04/algoritma-pembentukan-garis-dda-dan.html
[7] http://gustiam74.blogspot.co.id/2016/04/algoritma-pembentukan-garis-dda-dan.html
[8] http://veemaster.blogspot.co.id/2016/10/program-algoritma-garis-dda.html
[9] https://github.com/IlhamYanuar/Algoritma-Bresenham