Membuat Lingkaran dengan OpenGL


Dalam geometri Euklid, sebuah lingkaran adalah himpunan semua titik pada bidang dalam jarak tertentu, yang disebut jari-jari, dari suatu titik tertentu, yang disebut pusat. Lingkaran adalah contoh dari kurva tertutup sederhana, membagi bidang menjadi bagian dalam dan bagian luar.

Pada pembuatan lingkaran ini kita menggunakan rumus-rumus matematika berupa cos dan sin. Berkaitan dengan cos dan sin, maka yang paling penting kita harus mengubah sudut dari dari deg ke radian, yaitu 1 deg = 3.14159/180, untuk 1 lingkaran maka 2 deg.

Program Sederhana Lingkaran

#include <gl/glut.h>
#include <windows.h>
#include <math.h>

const double PI = 3.141592653589793;
int i,radius,jumlah_titik,x_tengah,y_tengah;
void Draw() {
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 1.0, 1.0);

	glBegin(GL_LINE_LOOP);
	radius=40;
	jumlah_titik=20;
	x_tengah=50;
	y_tengah=50;
	for (i=0;i<=360;i++){
        float sudut=i*(2*PI/jumlah_titik);
        float x=x_tengah+radius*cos(sudut);
        float y=y_tengah+radius*sin(sudut);
		glVertex2f(x/100,y/100);


	}
	glEnd();


	glFlush();
}

void Initialize() {
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

int main(int iArgc, char** cppArgv) {
	glutInit(&iArgc, cppArgv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(250, 250);
	glutInitWindowPosition(200, 200);
	glutCreateWindow("Lingkaran");
	Initialize();
	glutDisplayFunc(Draw);
	glutMainLoop();
	return 0;
}

Hasil Kompile Program di atas

Program Sedikit variasi dengan Lingkaran

#include <gl/glut.h>
#include <windows.h>
#include <math.h>

const double PI = 3.141592653589793;
int i,radius,jumlah_titik,x_tengah,y_tengah;
void Draw() {
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 1.0, 1.0);

	glBegin(GL_LINE_LOOP);
	radius=40;
	jumlah_titik=20;
	x_tengah=50;
	y_tengah=50;
	for (i=0;i<=360;i++){
        float sudut=i*(2*PI/jumlah_titik);
        float x=x_tengah+radius*cos(sudut);
        float y=y_tengah+radius*sin(sudut);
		glVertex2f(x/100,y/100);


	}
	glEnd();

    glBegin(GL_TRIANGLE_FAN);
	radius=5;
	jumlah_titik=20;
		x_tengah=30;
	    y_tengah=60;
	for (i=0;i<=jumlah_titik;i++){
        float sudut=i*(2*PI/jumlah_titik);
        float x=x_tengah+radius*cos(sudut);
        float y=y_tengah+radius*sin(sudut);
		glVertex2f(x/100,y/100);


	}
	glEnd();

    glBegin(GL_TRIANGLE_FAN);
	radius=5;
	jumlah_titik=20;
    x_tengah=70;
	y_tengah=60;
	for (i=0;i<=jumlah_titik;i++){
        float sudut=i*(2*PI/jumlah_titik);
        float x=x_tengah+radius*cos(sudut);
        float y=y_tengah+radius*sin(sudut);
		glVertex2f(x/100,y/100);


	}
	glEnd();

    glBegin(GL_LINE_LOOP);
    glVertex2f(0.5,0.6);
    glVertex2f(0.4,0.5);
    glVertex2f(0.6,0.5);
    glEnd();

    glBegin(GL_LINE_LOOP);
	radius=20;
	jumlah_titik=180;
    x_tengah=50;
	y_tengah=40;
	for (i=90;i<=jumlah_titik;i++){
        float sudut=i*(2*PI/jumlah_titik);
        float x=x_tengah+radius*cos(sudut);
        float y=y_tengah+radius*sin(sudut);
		glVertex2f(x/100,y/100);


	}
	glEnd();
	glFlush();
}

void Initialize() {
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

int main(int iArgc, char** cppArgv) {
	glutInit(&iArgc, cppArgv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(250, 250);
	glutInitWindowPosition(200, 200);
	glutCreateWindow("Lingkaran senyum");
	Initialize();
	glutDisplayFunc(Draw);
	glutMainLoop();
	return 0;
}

Hasil Kompile Program diatas

 

 

 

16 thoughts on “Membuat Lingkaran dengan OpenGL

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s