Hai semua, kembali lagi dengan saya, kali ini saya akan memberitahu tentang bagaimana cara membuat lingkaran menggunakan algoritma Bresenham. Nah disini saya beri langkah-langkah beserta contoh source code.
Langkah-langkah :
1. Menetapkan titik tengah (x_center, y_center)
2. Menetapkan jari-jari r
3. Menetapkan nilai x = 0, y = r
4. Menetepkan nilai parameter keputusan d = 3 – (2 * r)
5. Gambar titik awal dengan koordinat (x_center+x, y_center+y)
6. x = x+1
7. Jika d < 0, maka nilai d baru d = d + (4*x) + 6, jika tidak nilai d baru d =
d + 4 * (x – y) + 10 dan y = y-1
8. Gambar titik berikutnya dengan koordinat (x_center+x, y_center+y)
9. Jika x < = y ulangi langkah 6 sampai 8
Contoh Source Code :
from OpenGL.GL import *
from OpenGL.GLU import *from OpenGL.GLUT import *def init():glClearColor(0.0, 0.0, 0.0, 0.0)gluOrtho2D(-100.0, 100.0, -100.0, 100.0)glBegin(GL_POINTS)glPointSize(5) def plot(x, y): glVertex2f(x, y)# lokasi lingkaran yang akan dibuatglEnd() def bresenham_circle_drawing(r): x_position = 4# membuat sebuah titik pada koordinat yang ditentukany_position = 4 r = 9 x = 0 y = r # decision parameter d = 3 - 2 * rx += 1plot(x + x_position, y + y_position) while y > x: if d < 0: d += 4 * x + 6 else:# Tidak perlu mencari semua nilai koordinatx += 1 y -= 1 d += (4 * (x - y)) + 10 # cukup dapatkan nilai (x, y) sajaplot(x + x_position, y + y_position)# lalu balik menjadi (y, x) # Untuk pixel (x, y) # Koordinat 1 # Koordinat 2plot(-x + x_position, y + y_position)plot(x + x_position, -y + y_position) # Koordinat 3 plot(-x + x_position, -y + y_position) # Koordinat 4plot(-y + x_position, x + y_position)# Untuk pixel (y, x) # Koordinat 1 plot(y + x_position, x + y_position) # Koordinat 2 # Koordinat 3glClear(GL_COLOR_BUFFER_BIT)plot(-y + x_position, -x + y_position) # Koordinat 4 plot(y + x_position, -x + y_position) def plotpoints(): glColor3f(1, 1.0, 1.0)glutInit(sys.argv)glBegin(GL_LINES) glVertex2f(-100, 0) glVertex2f(100, 0) glVertex2f(0, -100) glVertex2f(0, 100) glEnd() bresenham_circle_drawing(40) glFlush() def main():glutCreateWindow("Lingkaran Algoritma Bresenham Kel 3")glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) glutInitWindowSize(500, 500) glutInitWindowPosition(100, 100) glutDisplayFunc(plotpoints) init() glutMainLoop()main()
Diatas ini adalah output dari source code yang saya beri tadi. Sekian sedikit ilmu yang dapat saya sampaikan, semoga bermaanfaat.
Komentar
Posting Komentar