Membuat Gambar Susunan Planet Dalam Tata Surya Dengan OpenGL Menggunakan CodeBlocks

Share:

Assalamualaikum warohmatullahi wabarokatuh

Programmer Bojonegoro - Kemarin saya telah memposting tentang Cara Membuat Animasi Revolusi Bumi Terhadap Matahari Dengan OpenGL, kali ini saya akan membagikan source code untuk Membuat Gambar Susunan Planet Dalam Tata Surya Dengan OpenGL Menggunakan CodeBlocks.

Apa itu Tata Surya?
Dari Wikipedia bahasa Indonesia, ensiklopedia bebas

Tata Surya adalah kumpulan benda langit yang terdiri atas sebuah bintang yang disebut Matahari dan semua objek yang terikat oleh gaya gravitasinya. Objek-objek tersebut termasuk delapan buah planet yang sudah diketahui dengan orbit berbentuk elips, lima planet kerdil/katai, 173 satelit alami yang telah diidentifikasi, dan jutaan benda langit (meteor, asteroid, komet) lainnya.

Tata Surya terbagi menjadi Matahari, empat planet bagian dalam, sabuk asteroid, empat planet bagian luar, dan di bagian terluar adalah Sabuk Kuiper dan piringan tersebar. Awan Oort diperkirakan terletak di daerah terjauh yang berjarak sekitar seribu kali di luar bagian yang terluar.

Berdasarkan jaraknya dari Matahari, kedelapan planet Tata Surya ialah Merkurius (57,9 juta km), Venus (108 juta km), Bumi (150 juta km), Mars (228 juta km), Yupiter (779 juta km), Saturnus (1.430 juta km), Uranus (2.880 juta km), dan Neptunus (4.500 juta km). Sejak pertengahan 2008, ada lima objek angkasa yang diklasifikasikan sebagai planet kerdil. Orbit planet-planet kerdil, kecuali Ceres, berada lebih jauh dari Neptunus. Kelima planet kerdil tersebut ialah Ceres (415 juta km. di sabuk asteroid; dulunya diklasifikasikan sebagai planet kelima), Pluto (5.906 juta km.; dulunya diklasifikasikan sebagai planet kesembilan), Haumea (6.450 juta km), Makemake (6.850 juta km), dan Eris (10.100 juta km).

Enam dari kedelapan planet dan tiga dari kelima planet kerdil itu dikelilingi oleh satelit alami. Masing-masing planet bagian luar dikelilingi oleh cincin planet yang terdiri dari debu dan partikel lain.

Berikut Gambar Susunan Planet Dalam Tata Surya yang akan kita buat.
Membuat Gambar Susunan Planet Dalam Tata Surya Dengan OpenGL Menggunakan CodeBlocks
Berikut Source Code Untuk Membuat Gambar Susunan Planet Dalam Tata Surya Dengan OpenGL

#include <windows.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include <stdlib.h>
#include <Math.h>

//website: programmerbojonegoro.blogspot.co.id, Referensi Coding Terbaikmu!

/* GLUT callback Handlers */
void myinit()
{
 glClearColor(0.0, 0.0, 0.0, 1.0);
 glColor3f(1.0, 0.0, 0.0);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluOrtho2D(-10.0, 105.0, -10.0, 10.0);
 glMatrixMode(GL_MODELVIEW);
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);

    // Sun
    glColor3f(1.0,0.0,0.0);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*16-10,sin(t)*16, 0);
    }
    glEnd();

    // Mercury
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*25-10,sin(t)*17, 0);
    }
    glEnd();
    glColor3f(0.3,0.0,0.3);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*1.5+15,sin(t)*1.5, 0);
    }
    glEnd();

    // Venus
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*35-10,sin(t)*22, 0);
    }
    glEnd();
    glColor3f(1.0,1.0,0.0);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*3+25,sin(t)*3, 0);
    }
    glEnd();

    // Earth
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*45-10,sin(t)*26, 0);
    }
    glEnd();
    glColor3f(0.0,1.0,0.0);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*4+35,sin(t)*4, 0);
    }
    glEnd();

    // Mars
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*55-10,sin(t)*29, 0);
    }
    glEnd();
    glColor3f(1.0,0.6,0.0);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*2.2+45,sin(t)*2.2, 0);
    }
    glEnd();

    // Jupiter
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*68-10,sin(t)*37, 0);
    }
    glEnd();
    glColor3f(0.0,0.4,1.0);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*7+57,sin(t)*7, 0);
    }
    glEnd();

    // Saturn
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*85-10,sin(t)*41, 0);
    }
    glEnd();
    glColor3f(0.8,0.3,0.0);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*6+74,sin(t)*6, 0);
    }
    glEnd();
    glColor3f(0.8,0.2,0.0);
    glLineWidth(4);
    glBegin(GL_LINE_STRIP);
    for(float t=2.6; t<=6.88; t+=0.01){
        glVertex3f(cos(t)*6.8+74,sin(t)*2, 0);
    }
    glEnd();

    glLineWidth(1);

    // Uranus
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*97-10,sin(t)*46, 0);
    }
    glEnd();
    glColor3f(0.3,0.1,1.0);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*4.6+87,sin(t)*4.6, 0);
    }
    glEnd();

    // Neptune
    glColor3f(1.0,1.0,1.0);
    glBegin(GL_LINE_STRIP);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*108-10,sin(t)*48, 0);
    }
    glEnd();
    glColor3f(0.3,0.7,0.8);
    glBegin(GL_POLYGON);
    for(float t=0.0; t<=6.28; t+=0.01){
        glVertex3f(cos(t)*5.2+98,sin(t)*5.2, 0);
    }
    glEnd();

    glFlush();
}


static void key(unsigned char key, int x, int y)
{
    switch (key)
    {
        case 27 :
        case 'q':
            exit(0);
            break;
    }

    glutPostRedisplay();
}

/* Program entry point */

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(1000,175);
    glutInitWindowPosition(100,100);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutCreateWindow("Tata Surya[Matahari, Merkurius, Venus, Bumi, Mars, Yupiter, Saturnus, Uranus, dan Neptunus] - Programmer Bojonegoro | programmerbojonegoro.blogspot.co.id");
    glutDisplayFunc(display);
    glutKeyboardFunc(key);
    myinit();
    glutMainLoop();
    return EXIT_SUCCESS;
}
Alhamdulillah, itulah source code untuk Membuat Gambar Susunan Planet Dalam Tata Surya Dengan OpenGL Menggunakan CodeBlocks
Baca juga: Tutorial Membuat Animasi Revolusi Bumi Terhadap Matahari Dengan OpenGL Menggunakan CodeBlocks
Semoga bermanfaat

Wassalamualaikum warohmatullahi wabarokatuh

No comments