Anda di halaman 1dari 3

Algoritma Pembuat Lingkaran

Bil Ibil 17:27


Untuk membuat Algoritma Pembuat lingkaran dalam pemrogaman bahasa C dibutuhkan
langkah-langkah sebagai berikut ini ;

1.Tentukan titik tengah dan jari-jari


xc , yc , R
2. Tentukan nilai pengubahan posisi
P = I - R;
x = 0;
y=R=4
3. Perulangan
xc = y
P Selanjutnya = P + (2 * x) + 1 jika P < 0
P Selanjutnya = P + (2 * (x - y)) + 1
4. Translasi dan Pencerminan
(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 )

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 pembuat lingkaran

#include <GL\freeglut.h>
#include <GL\glut.h>
#include <iostream>

using namespace std;

//identifier fungsi
void init();
void display(void);
void lingkaran(void);

// posisi window di layar


int window_x;
int window_y;

// ukuran window
int window_width = 480;
int window_height = 480;

// judul window
char *judul_window = "Algoritma Pembuat Lingkaran";

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);

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(255.255, 240.240, 0.0); //set warna titik
glPointSize(3.0); //set ukuran titik
glMatrixMode(GL_PROJECTION); //set mode matriks yang digunakan
glLoadIdentity(); // load matriks identitas
gluOrtho2D(0.0, 600.0, 0.0, 600.0); // set ukuran viewing window
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //clear color
lingkaran(); //jalankan fungsi lingkaran
glutSwapBuffers(); //swap buffer
}

void lingkaran(void) {
//tentukan titik pusat dan jari-jari
int xc,yc,r;
r = 150;
xc = 300;
yc = 300;

//hitung p awal dan set nilai awal untuk x dan y


int p = 1-r;
int x = 0;
int y = r;

glBegin(GL_POINTS);

//perulangan untuk menggambar titik


while (x <= y) {
x++; //tambah nilai x
if (p < 0) {
p += 2 * x + 1; //hitung p selanjutnya jika p < 0
}
else {
y--; //kurangi nilai y
p += 2 * (x - y) + 1; //hitung p selanjutnya jika p > 0 atau p = 0
}

// translasi terhadap titik pusat dan cerminkan


glVertex2i(xc + x, yc + y);
glVertex2i(xc - x, yc + y);
glVertex2i(xc + x, yc - y);
glVertex2i(xc - x, yc - y);
glVertex2i(xc + y, yc + x);
glVertex2i(xc - y, yc + x);
glVertex2i(xc + y, yc - x);
glVertex2i(xc - y, yc - x);
}

glEnd();
glFlush();
}

Hasil Running Program :

Anda mungkin juga menyukai