Membuat Lingkaran dengan OpenGL

Wahyu Raja Butar-Butar Reply 18:48
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
Comments
0 Comments
Facebook Comments by Media Blogger

Post a Comment

Search

Google+ Followers

Popular Posts

Translate