Apa itu Algoritma Bresenham ?
Algoritma garis Bresenhem adalah algoritma konversi penambahan nilai integer.Langkah-langkah untuk membentuk garis menurut algoritma ini adalah :
1. Tentukan Titik Awal dan Akhir ;
Titik Awal (x1 , y1)
Titik Akhir (x2 , y2)
2. Nilai Pengubahan posisi (P)
P Awal = (2 * Dy) - Dx
a. Kondisi 1 : Jika P< 0, Maka x = x + 1,Y tetap P selanjutnya adalah P = P + (2 * Dy)
b. Kondisi 2 : Jika P> 0 Maka x = x + 1,Y = Y + 1 P selanjutnya adalah P = P + 2* (Dy - Dx)
Baiklah,,... Berdasarkan rumus di atas maka dapat diimplementasikan dalam suatu bentuk program, disini pembuatan codingnya menggunakan Microsoft Visual Studio dengan bahasa C
Berikut Contoh Source codenya beserta penjelasannya ;
//Algoritma Bresenham
#include <GL\freeglut.h>
#include <GL\glut.h>
#include <iostream>
using namespace std;
//identifier fungsi
void init();
void display(void);
void bresenham(void);
// posisi window di layar
int window_x;
int window_y;
// ukuran window
int window_width = 720;
int window_height = 480;
// judul window
char *judul_window = "Algoritma Bresenham";
void main(int argc, char **argv)
{
// inisialisasi GLUT (OpenGL Utility Toolkit)
glutInit(&argc, argv);
// set posisi window supaya berada di tengah
window_x = (glutGet(GLUT_SCREEN_WIDTH) - window_width) / 2;
window_y = (glutGet(GLUT_SCREEN_HEIGHT) - window_height) / 2;
glutInitWindowSize(window_width, window_height); //set ukuran window
glutInitWindowPosition(window_x, window_y); //set posisi window
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); // set display RGB dan double buffer
glutCreateWindow(judul_window); //set judul window
init(); //jalankan fungsi init
glutDisplayFunc(display); // set fungsi display
glutMainLoop(); // set loop pemrosesan GLUT
}
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0); //set warna background
glColor3f(6.0, .0, 6.0); //set warna titik
glPointSize(2.0); //set ukuran titik
glMatrixMode(GL_PROJECTION); //set mode matriks yang digunakan
glLoadIdentity(); // load matriks identitas
gluOrtho2D(0.0, 800.0, 0.0, 600.0); // set ukuran viewing window
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //clear color
bresenham(); //jalankan fungsi bresenham
glutSwapBuffers(); //swap buffer
}
void bresenham(void) {
int x1, y1, x2, y2, x, y, dx, dy, xend, p, duady, duadydx;
//tentukan titik awal dan akhir
x1 = 10;
y1 = 10;
x2 = 500;
y2 = 400;
x = x1;
y = y1;
//hitung dx dan dy
dx = abs(x2 - x1);
dy = abs(y2 - y1);
//hitung p
p = 2 * dy - dx;
duady = 2 * dy;
duadydx = 2 * (dy - dx);
//tentukan titik awal dan akhir
if (x1 > x2) {
x = x2;
y = y2;
xend = x1;
}
else
{
x = x1;
y = y1;
xend = x2;
}
//gambar titik awal
glBegin(GL_POINTS);
glVertex2i(x, y);
//perulangan untuk menggambar titik-titik
while (x < xend) {
x++;
if (p < 0) {
p += duady;
}
else
{
if (y1 > y2) {
y--;
}
else y++;
p += duadydx;
}
glVertex2i(x, y);
}
glEnd();
glFlush();
}
Hasil running programnya ;
Sunday, 30 October 2016
Algoritma Bresenham (Komputer Grafik)
Subscribe to:
Post Comments (Atom)
No comments:
Write comments