Membuat Lingkaran dengan Menggunakan Algoritma Bresenham - Grafika Komputer

Circle
Halo! Pada kesempatan kali ini kita akan membuat sebuah lingkaran dengan menggunakan algoritma bresenham. Di sini kita akan menggunakan bahasa pemrograman Python dan module OpenGL. 

Jika kalian belum mengetahui dasar-dasar dari OpenGL, kalian bisa mempelajarinya di postingan saya yang sebelumnya, yaitu Membuat Gambar Rumah dengan Menggunakan GL_LINES - Grafika Komputer

Sebelum masuk ke code programnya, mari kita bahas terlebih dahulu rumus dari algoritma bresenham.


Pada dasarnya, saat kita menggunakan algoritma bresenham untuk membuat lingkaran, hal terpenting adalah menentukan nilai radiusnya. Dari situlah kita dapat menghitung posisi untuk koordinat x dan y nya.

Berdasarkan rumus di atas, jika kita memberikan nilai 5 pada radius, maka akan didapat 5 juga pada y dan -7 pada d-nya. 'D' di sini merupakan decision parameter, berguna untuk menentukan apakah nilai dari koordinat x dan y itu bertambah atau berkurang. Setiap koordinat x dan y di sini mewakili satu buah pixel.

Bailah, sekarang mari kita buat lingkaran dengan menggunakan algoritma bresenham secara manual terlebih dahulu dengan nilai radius adalah 5. Maka akan didapat data seperti di bawah ini.

Perulangan
x
y
d (Decision Parameter)
d < 0 ?
0
0
5
d0 = 3 - (2 * 5) = 3 - 10 = -7
T
1
1
5
d1 = -7 + (4 * 1)+ 6 = 3
F
2
2
4
d2 = 3 + (4 * (2 - 4)) + 10 = 5
F
3
3
3
d3 = 5 + (4 * (3 - 3)) + 10 = 15
F

Untuk mendapatkan nilai x, y dan d kita hanya perlu mengikuti rumus di atas. Jika seandainya nilai y tidak lebih besar dari x, maka kita hentikan perulangannya. Pada kasus ini, nilai 3 tidak lebih besar dari 3, sehingga perulangan cukup sampai di situ.

Lalu bagaimana cara mendapatkan koordinat yang lain jika kita berhenti di (3, 3)?

Mudah saja, kita hanya perlu membalik posisi x dan y nya saja. Jika kita membalik posisi x dan y pada perulangan ke dua, maka akan didapat (4, 2). Dengan begitu, kita tidak harus menghabiskan waktu untuk menghitung semuanya satu-persatu.

Ini merupakan koordinat pada semua kuadran dengan nilai radius 5. Sekali lagi, untuk mendapatkan nilai koordinat setelah (3, 3) kita hanya perlu membalik nilai x dan y nya saja. Untuk nilai negatif, kita hanya perlu menyesuaikan dengan kuadran nya.

Kuadran 1 (x, y)
Kuadran 2 (x, -y)
Kuadran 3 (-x, -y)
Kuadran 4 (-x, y)
(0, 5)
(0, -5)
(0, -5)
(0, 5)
(1, 5)
(1, -5)
(-1, -5)
(-1, 5)
(2, 4)
(2, -4)
(-2, -4)
(-2, 4)
(3, 3)
(3, -3)
(-3, -3)
(-3, 3)
(4, 2)
(4, -2)
(-4, -2)
(-4, 2)
(5, 1)
(5, -1)
(-5, -1)
(-5, 1)
(5, 0)
(5, 0)
(-5, 0)
(-5, 0)

Kurang lebih, jika kita membuat lingkaran berdasarkan koordinat di atas, maka akan didapat hasil seperti di bawah ini. Gambar di bawah akan terlihat seperti lingkaran yang bulatnya sempurna jika pixel yang dibuat lebih rapat.

Lingkaran dengan radius 5.
Baiklah, sekarang kita akan masuk ke code programnya. Untuk memudahkan pekerjaan, ada baiknya kita buat dulu pseudo code nya.


Jika pseudo code tersebut diaplikasikan ke dalam bahasa pemrograman Python, maka akan menjadi seperti di bawah ini.


Jika program dijalankan, maka akan muncul hasil seperti di bawah ini.
Lingkaran
Seperti biasa, code program juga dapat kalian temukan di akun GitLab saya, yaitu rizkyramadhan28.

Demikian post kali ini, semoga bermanfaat.

Post a Comment

1 Comments