Tutorial Algoritma Lingkaran Bresenham + Contoh Soal dan Langkah Penyelesaian

Dalam dunia grafika komputer, menggambar lingkaran dengan akurasi tinggi sangat penting. Salah satu algoritma yang paling efisien dan populer untuk menggambar lingkaran adalah Algoritma Lingkaran Bresenham. Artikel ini akan membahas secara lengkap tutorial penggunaan algoritma ini, disertai contoh soal, tabel iterasi, dan langkah-langkah penyelesaiannya agar mudah dipahami dan diterapkan.


Apa itu Algoritma Lingkaran Bresenham?

Algoritma Lingkaran Bresenham adalah metode rasterisasi lingkaran yang dikembangkan oleh Jack Bresenham sebagai perpanjangan dari algoritma Bresenham untuk garis. Algoritma ini memungkinkan pembuatan lingkaran dengan presisi tinggi menggunakan operasi integer sederhanaโ€”penjumlahan, pengurangan, dan pergeseranโ€”tanpa memerlukan perkalian atau akar kuadrat.

Prinsip utama algoritma ini adalah memanfaatkan simetri delapan oktaf lingkaran, sehingga hanya perlu menghitung titik di satu kuadran, lalu mereplikasi titik-titik tersebut di kuadran lainnya.


Keunggulan Algoritma Bresenham

Beberapa alasan algoritma Bresenham banyak digunakan dalam grafika komputer antara lain:

🔖 Baca juga:
Tetap Tenang Meski Kurang Tidur, Ini Tips Jaga Mood
  1. Efisien: Menggunakan operasi integer, sehingga lebih cepat dibanding metode berbasis float.
  2. Presisi tinggi: Titik-titik lingkaran berada pada posisi pixel yang akurat.
  3. Sederhana: Mudah dipahami dan diimplementasikan di berbagai bahasa pemrograman.
  4. Cepat: Sangat cocok untuk sistem dengan sumber daya terbatas, seperti embedded system atau game 2D.

Rumus Dasar Algoritma Lingkaran Bresenham

Misalkan lingkaran memiliki titik pusat (xc,yc)(x_c, y_c)(xcโ€‹,ycโ€‹) dan jari-jari rrr. Fungsi keputusan (decision parameter) yang digunakan adalah:f(x,y)=x2+y2โˆ’r2f(x, y) = x^2 + y^2 – r^2f(x,y)=x2+y2โˆ’r2

  • Jika f(x+1,yโˆ’0.5)<0f(x+1, y-0.5) < 0f(x+1,yโˆ’0.5)<0, maka titik horisontal dipilih (x+1,yx+1, yx+1,y).
  • Jika f(x+1,yโˆ’0.5)โ‰ฅ0f(x+1, y-0.5) \ge 0f(x+1,yโˆ’0.5)โ‰ฅ0, maka titik diagonal dipilih (x+1,yโˆ’1x+1, y-1x+1,yโˆ’1).

Decision parameter awal:d=3โˆ’2rd = 3 – 2rd=3โˆ’2r


Langkah-langkah Menggambar Lingkaran

  1. Tentukan titik pusat (xc,yc)(x_c, y_c)(xcโ€‹,ycโ€‹) dan jari-jari rrr.
  2. Inisialisasi:
    • x=0x = 0x=0
    • y=ry = ry=r
    • d=3โˆ’2rd = 3 – 2rd=3โˆ’2r
  3. Selama xโ‰คyx \le yxโ‰คy:
    • Jika d<0d < 0d<0, maka d=d+4x+6d = d + 4x + 6d=d+4x+6
    • Jika dโ‰ฅ0d \ge 0dโ‰ฅ0, maka d=d+4(xโˆ’y)+10d = d + 4(x – y) + 10d=d+4(xโˆ’y)+10 dan y=yโˆ’1y = y – 1y=yโˆ’1
    • Tambahkan x=x+1x = x + 1x=x+1
  4. Gunakan simetri 8 oktaf untuk mencetak titik di semua kuadran.

Tutorial Contoh Soal 1: Lingkaran Radius 4

Diketahui:

  • Titik pusat (0,0)(0,0)(0,0)
  • Radius r=4r = 4r=4

Baca Juga : Heboh Pencairan BLT Februari 2026: Simak Penjelasan Resmi dari Kemensos

Langkah Penyelesaian

  1. Inisialisasi:
    • x=0,y=4,d=3โˆ’2โˆ—4=โˆ’5x = 0, y = 4, d = 3 – 2*4 = -5x=0,y=4,d=3โˆ’2โˆ—4=โˆ’5
  2. Iterasi pertama:
    • d=โˆ’5<0d = -5 < 0d=โˆ’5<0 โ†’ x=1,y=4,d=โˆ’5+4โˆ—0+6=1x = 1, y = 4, d = -5 + 4*0 + 6 = 1x=1,y=4,d=โˆ’5+4โˆ—0+6=1
  3. Iterasi kedua:
    • d=1โ‰ฅ0d = 1 \ge 0d=1โ‰ฅ0 โ†’ y=3,x=2,d=1+4โˆ—(1โˆ’4)+10=โˆ’1y = 3, x = 2, d = 1 + 4*(1-4) + 10 = -1y=3,x=2,d=1+4โˆ—(1โˆ’4)+10=โˆ’1
  4. Iterasi ketiga:
    • d=โˆ’1<0d = -1 < 0d=โˆ’1<0 โ†’ x=3,y=3,d=โˆ’1+4โˆ—2+6=13x = 3, y = 3, d = -1 + 4*2 + 6 = 13x=3,y=3,d=โˆ’1+4โˆ—2+6=13
  5. Iterasi keempat:

Tabel Iterasi

IterasixydTitik (x,y)
104-5(0,4)
2141(1,4)
323-1(2,3)
43313(3,3)

Tutorial Contoh Soal 2: Lingkaran Radius 5 di Pusat (2,2)

Diketahui:

  • Titik pusat (2,2)(2,2)(2,2)
  • Radius r=5r = 5r=5

Langkah Penyelesaian

  1. Inisialisasi: x=0,y=5,d=3โˆ’2โˆ—5=โˆ’7x = 0, y = 5, d = 3 – 2*5 = -7x=0,y=5,d=3โˆ’2โˆ—5=โˆ’7
  2. Iterasi pertama: d=โˆ’7<0d = -7 < 0d=โˆ’7<0 โ†’ x=1,y=5,d=โˆ’7+4โˆ—0+6=โˆ’1x = 1, y = 5, d = -7 + 4*0 + 6 = -1x=1,y=5,d=โˆ’7+4โˆ—0+6=โˆ’1
  3. Iterasi kedua: d=โˆ’1<0d = -1 < 0d=โˆ’1<0 โ†’ x=2,y=5,d=โˆ’1+4โˆ—1+6=9x = 2, y = 5, d = -1 + 4*1 + 6 = 9x=2,y=5,d=โˆ’1+4โˆ—1+6=9
  4. Iterasi ketiga: d=9โ‰ฅ0d = 9 \ge 0d=9โ‰ฅ0 โ†’ y=4,x=3,d=9+4โˆ—(2โˆ’5)+10=1y = 4, x = 3, d = 9 + 4*(2-5) + 10 = 1y=4,x=3,d=9+4โˆ—(2โˆ’5)+10=1
  5. Iterasi keempat: d=1โ‰ฅ0d = 1 \ge 0d=1โ‰ฅ0 โ†’ y=3,x=4,d=1+4โˆ—(3โˆ’4)+10=11y = 3, x = 4, d = 1 + 4*(3-4) + 10 = 11y=3,x=4,d=1+4โˆ—(3โˆ’4)+10=11
  6. Iterasi kelima: x>yx > yx>y โ†’ selesai.

Tabel Iterasi

IterasixydTitik (x,y)
105-7(2,7)
215-1(3,7)
3259(4,7)
4341(5,6)
54311(6,5)

Tutorial Contoh Soal 3: Lingkaran Radius 6 di Pusat (3,3)

Langkah Penyelesaian:

  1. Inisialisasi: x=0,y=6,d=3โˆ’2โˆ—6=โˆ’9x = 0, y = 6, d = 3 – 2*6 = -9x=0,y=6,d=3โˆ’2โˆ—6=โˆ’9
  2. Iterasi:
    • Iterasi pertama: x=1,y=6,d=โˆ’3x = 1, y = 6, d = -3x=1,y=6,d=โˆ’3
    • Iterasi kedua: x=2,y=6,d=7x = 2, y = 6, d = 7x=2,y=6,d=7
    • Iterasi ketiga: x=3,y=5,d=โˆ’1x = 3, y = 5, d = -1x=3,y=5,d=โˆ’1
    • Iterasi keempat: x=4,y=5,d=9x = 4, y = 5, d = 9x=4,y=5,d=9
    • Iterasi kelima: x=5,y=4,d=7x = 5, y = 4, d = 7x=5,y=4,d=7
    • Iterasi keenam: x=6,y=3,d=โˆ’1x = 6, y = 3, d = -1x=6,y=3,d=โˆ’1
  3. Iterasi berhenti saat x>yx > yx>y.

Tabel Iterasi

IterasixydTitik (x,y)
106-9(3,9)
216-3(4,9)
3267(5,9)
435-1(6,8)
5459(7,8)
6547(8,7)
763-1(9,6)

Pseudocode Algoritma Lingkaran Bresenham

Baca Juga : Universitas Teknokrat Indonesia Masuk 10 Besar Kampus Swasta Terbaik Nasional Versi AppliedHE ASEAN 2026

Input: xc, yc, r
x = 0
y = r
d = 3 - 2*r
while x <= y:
plot(xc + x, yc + y)
plot(xc - x, yc + y)
plot(xc + x, yc - y)
plot(xc - x, yc - y)
plot(xc + y, yc + x)
plot(xc - y, yc + x)
plot(xc + y, yc - x)
plot(xc - y, yc - x)
if d < 0:
d = d + 4*x + 6
else:
d = d + 4*(x - y) + 10
y = y - 1
x = x + 1

Pseudocode ini dapat diimplementasikan dalam berbagai bahasa pemrograman, seperti Python, C++, Java, atau JavaScript.


Implementasi dalam Python

Berikut contoh implementasi sederhana menggunakan Python dan matplotlib:

import matplotlib.pyplot as pltdef bresenham_circle(xc, yc, r):
x = 0
y = r
d = 3 - 2 * r
points = [] while x <= y:
points.extend([
(xc + x, yc + y),
(xc - x, yc + y),
(xc + x, yc - y),
(xc - x, yc - y),
(xc + y, yc + x),
(xc - y, yc + x),
(xc + y, yc - x),
(xc - y, yc - x)
])
if d < 0:
d = d + 4*x + 6
else:
d = d + 4*(x - y) + 10
y -= 1
x += 1
return pointscircle_points = bresenham_circle(0, 0, 5)
xs, ys = zip(*circle_points)
plt.scatter(xs, ys)
plt.gca().set_aspect('equal', adjustable='box')
plt.show()

Kode ini akan menghasilkan lingkaran dengan radius 5 dan titik pusat di (0,0)(0,0)(0,0).


Tips Menguasai Algoritma Bresenham

  1. Gunakan integer: Operasi float dapat memperlambat proses.
  2. Simetri 8 oktaf: Hitung hanya satu kuadran, replikasi untuk lainnya.
  3. Latihan soal: Semakin sering membuat tabel iterasi, semakin cepat memahami konsep decision parameter.
  4. Optimasi: Bisa digabungkan dengan algoritma midpoint circle untuk kasus tertentu.
  5. Visualisasi: Gunakan plot seperti matplotlib untuk memastikan titik benar.

Kegunaan Algoritma Lingkaran Bresenham

  • Game 2D: Membuat objek berbentuk lingkaran.
  • CAD (Computer-Aided Design): Menggambar bentuk presisi.
  • Simulasi grafis: Digunakan di aplikasi fisika atau visualisasi.
  • Embedded systems: Cepat dan hemat sumber daya.

Kesimpulan

Algoritma Lingkaran Bresenham adalah salah satu algoritma dasar yang wajib dipahami dalam grafika komputer. Dengan memahami:

  • Konsep decision parameter
  • Simetri delapan oktaf
  • Langkah-langkah iterasi
  • Tabel iterasi dan contoh soal

Mahasiswa dapat dengan mudah menggambar lingkaran secara efisien dan akurat. Tutorial ini memberikan dasar kuat untuk mempelajari grafika raster, dan dapat diterapkan langsung menggunakan bahasa pemrograman modern.

Dengan latihan terus-menerus, Anda tidak hanya menguasai cara menggambar lingkaran, tetapi juga memahami prinsip penting dalam algoritma rasterisasi grafika komputer.

Penulis : Reyfen

Post Comment