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

 

 

 

Advertisements

About zacknov

This blog about programming and my activity
This entry was posted in Computer, Software. Bookmark the permalink.

16 Responses to Membuat Lingkaran dengan OpenGL

  1. aishadzakira says:

    makaassssihh tutorialnyaaa..
    barakallah

  2. chandra says:

    kalau bikin setengah lingkaran gitu gmn cara’a?

  3. zacknov says:

    ya, 1/2 lingkaran = 180 derajat

  4. kalauu bikin botol gimnaa??bals

  5. naga says:

    kalo pke dev cpp gmna ?

  6. asashin says:

    gan… 1 deg itu apa yh??

  7. Yuni Astari says:

    kok gak mau ya 😦

  8. kalo program bikin elips ada ga?

  9. GILARDI RAKYANDITA EFFENDI says:

    glut.h nya error knp gan ?

  10. Zulfa says:

    ada yang tau cara membuat huruf B, Gimana ya?

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