Membuat Bentuk 3D: Lingkaran dalam OpenGL Menggunakan GLUT

Halo sobat grafika komputer!

Kali ini kita akan belajar menampilkan bentuk 3D sederhana, yaitu lingkaran dalam ruang 3 dimensi menggunakan OpenGL dan GLUT di IDE Code::Blocks. Meskipun terlihat seperti bentuk 2D, lingkaran ini dibuat dalam konteks ruang 3D lengkap dengan sumbu X, Y, dan Z.


๐ŸŽฏ Tujuan Pembelajaran

  • Menampilkan sumbu koordinat 3D (X, Y, Z)

  • Menggambar lingkaran berbasis titik-titik di ruang 3D

  • Memahami penggunaan glVertex3f(), gluLookAt(), dan gluPerspective()


๐Ÿ“ Konsep Dasar

Lingkaran dibentuk dengan menggunakan rumus dasar trigonometri:

x = px + r * cos(ฮธ)
z = pz + r * sin(ฮธ)

Karena ini adalah lingkaran dalam 3D, nilai y kita biarkan tetap (py) dan kita gunakan x serta z sebagai koordinat melingkar.


๐Ÿ’ป Kode Program Lengkap

// Menampilkan bentuk 3D - lingkaran

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

int jumlah_titik = 100;

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

void Display()
{
    glClear(GL_COLOR_BUFFER_BIT);

    // Sumbu X (Merah)
    glBegin(GL_LINES);
        glColor3f(1, 0, 0);
        glVertex3f(-2, 0, 0);
        glVertex3f(2, 0, 0);
    glEnd();

    // Sumbu Y (Hijau)
    glBegin(GL_LINES);
        glColor3f(0, 1, 0);
        glVertex3f(0, -1, 0);
        glVertex3f(0, 1, 0);
    glEnd();

    // Sumbu Z (Biru)
    glBegin(GL_LINES);
        glColor3f(0, 0, 1);
        glVertex3f(0, 0, -2);
        glVertex3f(0, 0, 2);
    glEnd();

    // Gambar lingkaran putih di koordinat (0,0,0) dengan jari-jari 1
    Circle(0, 0, 0, 1);

    glFlush();
}

void reshape(int w, int h)
{
    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    gluPerspective(60, (GLfloat)w / h, 1, 20);
    gluLookAt(0.5, 0.5, 2.5, 0, 0, -200, 0, 1, 0);
    glMatrixMode(GL_MODELVIEW);
}

void init(void)
{
    glClearColor(0, 0, 0, 1); // Background hitam
}

int main(int argc, char* argv[])
{
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(320, 240);
    glutCreateWindow("Display Bentuk 3D");
    init();
    glutDisplayFunc(Display);
    glutReshapeFunc(reshape);
    glutMainLoop();
}
Codeblocks,Komputer Grafik,

๐Ÿ” Penjelasan Utama

Bagian Fungsi
Circle() Menggambar lingkaran berbasis titik dengan glVertex3f()
glBegin(GL_LINE_STRIP) Membuat garis dari satu titik ke titik berikutnya, membentuk lingkaran
gluLookAt() Mengatur kamera agar terlihat dari sudut tertentu (0.5, 0.5, 2.5)
gluPerspective() Memberikan efek perspektif untuk tampilan 3D
Sumbu X, Y, Z Dibuat agar kita bisa tahu orientasi lingkaran dalam ruang 3D

๐Ÿงช Eksperimen Tambahan

Ingin bermain lebih jauh? Coba hal berikut:

  • Tambahkan lebih banyak lingkaran dengan posisi y berbeda.

  • Ubah GL_LINE_STRIP jadi GL_POLYGON untuk membuat lingkaran padat.

  • Tambahkan interaksi keyboard untuk memutar kamera.


✅ Kesimpulan

Dengan menggunakan OpenGL + GLUT di Code::Blocks, kita dapat dengan mudah membuat dan menampilkan bentuk 3D sederhana seperti lingkaran.
Ini adalah langkah awal yang bagus sebelum masuk ke objek 3D yang lebih kompleks seperti bola, tabung, atau animasi transformasi 3D.

Selamat mencoba dan semoga berhasil!
Kalau mau lanjut belajar bentuk 3D lain, tulis di kolom komentar ya ✨

Komentar