Tuesday, March 24, 2020

Membuat lingkaran dengan menggunakan Algoritma Bressenham

Halo kawan-kawan sekalian, pada kesempatan kali ini saya akan membagikan pada kalian Membuat lingkaran dengan menggunakan Algoritma Bressenham. Algoritma Bressenham adalah algoritma
konversi penambahan nilai integer yang juga dapat diadaptasi untuk menggambar sebuah lingkaran. Berikut adalah source code programnya


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)
    glPointSize(5)


def plot(x, y):
    glBegin(GL_POINTS)
    glVertex2f(x, y)
    glEnd()


def bresenham_circle_drawing(r):

    # fungsi untuk membuat lingksran

    x_position = 1
    y_position = 1

    r = 40 #adalah jari-jari yang ada pada lingkaran
    x = 0
    y = r

    # parameter keputusan
    d = 3 - 2 * r

 
    plot(x + x_position, y + y_position) #membuat koordinat titik

    while y > x:

        if d < 0:
            x += 1
            d += 4 * x + 6
        else:
            x += 1
            y -= 1
            d += (4 * (x - y)) + 10

        # Tidak perlu mencari semua nilai koordinat
        # cukup dapatkan nilai (x, y) saja
        # lalu balik menjadi (y, x)

        # Untuk pixel (x, y)

        # Quadrant 1
        plot(x + x_position, y + y_position)

        # Quadrant 2
        plot(x + x_position, -y + y_position)

        # Quadrant 3
        plot(-x + x_position, -y + y_position)

        # Quadrant 4
        plot(-x + x_position, y + y_position)

        # Untuk pixel (y, x)

        # Quadrant 1
        plot(y + x_position, x + y_position)

        # Quadrant 2
        plot(-y + x_position, x + y_position)

        # Quadrant 3
        plot(-y + x_position, -x + y_position)

        # Quadrant 4
        plot(y + x_position, -x + y_position)


def plotpoints():

    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(0.75, 0.6, 1.0) #UNTUK MENENTUKAN WARNA GARIS

    glBegin(GL_LINES)
#koordinat diagram x, y
    glVertex2f(-100, 0)
    glVertex2f(100, 0)

    glVertex2f(0, -100)
    glVertex2f(0, 100)

    glEnd()

    bresenham_circle_drawing(40)

    glFlush()


def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
    glutInitWindowSize(500, 500)
    glutInitWindowPosition(100, 100)
    glutCreateWindow("Bresenham Circle Drawing Algoritm")
    glutDisplayFunc(plotpoints)

    init()
    glutMainLoop()


main()
dalam program diatas sudah terdapat penjelasan dari program tersebut. Dan Output dari program tersebut adalah 


Demikian sedikt ilmu dari saya terimakasih atas kunjungan teman-teman sampai jumpa

Share:

0 comments:

Post a Comment

Definition List

Unordered List

Support