Menampilkan Bentuk 3D Sederhana: Lingkaran dalam Ruang 3 Dimensi dengan OpenGL dan Code::Blocks

Halo, teman-teman developer! 👋

Pada postingan kali ini, saya ingin berbagi tutorial sederhana mengenai cara menampilkan bentuk 3D lingkaran dalam sumbu X, Y, dan Z menggunakan OpenGL dengan IDE Code::Blocks.

🧩 Apa yang Kita Buat?

Kita akan membuat tiga buah lingkaran yang berada di tiga bidang berbeda:

  • Circlex → Berada di bidang XZ

  • Circley → Berada di bidang YZ

  • Circlez → Berada di bidang XY

Dengan begitu, bentuk tersebut akan tampak seperti kerangka bola (globe wireframe), karena lingkaran berpotongan di pusat koordinat (0, 0, 0).


🛠️ Tools yang Digunakan

  • IDE: Code::Blocks

  • Compiler: MinGW

  • Library: OpenGL (GL/glut.h)


💡 Cuplikan Kode Program

Berikut adalah kode lengkap untuk menampilkan bentuk 3D lingkaran:

#include<windows.h>
#include<GL/glut.h>
#include <math.h>
#define PI 3.14

int jumlah_titik = 100;

void Circlex(GLfloat px, GLfloat py, GLfloat pz, GLfloat r){
    GLint i;
    GLdouble sudut;
    glBegin(GL_LINE_STRIP);
    for (i=0; i<jumlah_titik; i++)
    {
        sudut = 2*PI*i/jumlah_titik;
        glColor3f(0,0,0);
        glVertex3f(px+r*cos(sudut), py, pz+r*sin(sudut));
    }
    glEnd();
}

void Circley(GLfloat px, GLfloat py, GLfloat pz, GLfloat r){
    GLint i;
    GLdouble sudut;
    glBegin(GL_LINE_STRIP);
    for (i=0; i<jumlah_titik; i++)
    {
        sudut = 2*PI*i/jumlah_titik;
        glColor3f(1,0,0);
        glVertex3f(px, py+r*cos(sudut), pz+r*sin(sudut));
    }
    glEnd();
}

void Circlez(GLfloat px, GLfloat py, GLfloat pz, GLfloat r){
    GLint i;
    GLdouble sudut;
    glBegin(GL_LINE_STRIP);
    for (i=0; i<jumlah_titik; i++)
    {
        sudut = 2*PI*i/jumlah_titik;
        glColor3f(0,0,1);
        glVertex3f(px+r*cos(sudut), py+sin(sudut), pz);
    }
    glEnd();
}

void Display() {
    glClear (GL_COLOR_BUFFER_BIT);

    // Sumbu Koordinat
    glBegin(GL_LINES);  
        glColor3f(0,1,0); glVertex3f(-3,0,0); glVertex3f(4,0,0);  // X
        glColor3f(0,1,1); glVertex3f(0,-2.5,0); glVertex3f(0,3.5,0); // Y
        glColor3f(1,1,0); glVertex3f(0,0,-9); glVertex3f(0,0,4);  // Z
    glEnd();

    // Tiga Lingkaran
    Circlex(0,0,0,1.5);
    Circley(0,0,0,1.5);
    Circlez(0,0,0,1.5);
    glFlush();
}

void reshape(int w, int h){
    glViewport(0,0,(GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(55, (GLfloat) w/h, 0, 20);
    gluLookAt(0,0,2,0,0,-200,0,1,0);
}

void init(void){
    glClearColor(1,1,1,1); // latar putih
}

int main(int argc, char *argv[]){
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowSize(500,400);
    glutInitWindowPosition(500, 200);
    glutCreateWindow("TM9 - Lingkaran 3D");
    init();
    glutDisplayFunc(Display);
    glutReshapeFunc(reshape);
    glutMainLoop();
}
Codeblocks,Komputer Grafik,

🎨 Hasil Tampilan

Program akan menampilkan sumbu X (merah), Y (cyan), dan Z (kuning), serta tiga lingkaran yang saling berpotongan. Kombinasi ketiganya menciptakan kesan bentuk bola 3D yang sangat sederhana, namun berguna untuk pemahaman awal tentang transformasi dan koordinat dalam OpenGL.


📌 Kesimpulan

Dengan hanya beberapa fungsi dasar OpenGL dan sedikit matematika, kita bisa membuat bentuk geometris 3D yang menarik. Teknik seperti ini bisa dikembangkan lebih lanjut untuk membuat bola, torus, silinder, atau visualisasi lainnya.

Jika kamu baru belajar OpenGL, ini adalah latihan yang bagus untuk memahami koordinat 3D, proyeksi perspektif, dan menggambar bentuk menggunakan titik-titik.


Semoga bermanfaat!
Kalau kamu suka dengan tutorial seperti ini, jangan lupa bookmark dan share ya! ✨

Komentar