Membuat Kerucut (Cone) 3D dengan OpenGL GLUT

Dalam pemrograman grafis menggunakan OpenGL, membangun bentuk-bentuk dasar seperti kerucut (cone) adalah latihan yang bagus untuk memahami konsep vertex, polygon, dan transformasi 3D. Pada postingan kali ini, saya akan berbagi contoh kode sederhana untuk menggambar sebuah kerucut menggunakan OpenGL GLUT.

Penjelasan Kode

Berikut adalah cuplikan program C++ yang digunakan untuk membuat kerucut:

// Membuat Kerucut (Cone)
#include <windows.h>
#include <math.h>
#include <gl/glut.h>

#define PI 3.14

GLint circle_points = 40; // Jumlah segmen untuk alas kerucut

// Fungsi untuk membuat kerucut
void MyCone(GLfloat radius, GLfloat tinggi) {
    GLint i;
    GLdouble theta, ntheta;
    for (i = 0; i < circle_points; i++) {
        glBegin(GL_POLYGON);
        theta = (2 * PI * i / circle_points);
        ntheta = (2 * PI * (i + 1) / circle_points);

        // Titik pertama di alas
        glVertex3f(radius * cos(theta), 0, radius * sin(theta));

        // Titik puncak kerucut
        glVertex3f(0, tinggi, 0);

        // Titik berikutnya di alas
        glVertex3f(radius * cos(ntheta), 0, radius * sin(ntheta));
        glEnd();
    }
}

// Fungsi untuk menampilkan objek di layar
void Display(void) {
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1, 1, 1); // Warna putih
    MyCone(0.5, 1); // Membuat kerucut dengan jari-jari 0.5 dan tinggi 1
    glFlush();
}

// Fungsi untuk menangani perubahan ukuran jendela
void reshape(int w, int h) {
    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glFrustum(-(GLfloat)w/h, (GLfloat)w/h, -2, 2, 1, 20);
    gluLookAt(0, 2, 2, 0, 0, -100, 0, 1, 0);
}

// Fungsi inisialisasi
void init(void) {
    glClearColor(0, 0, 0, 0); // Latar belakang hitam
    glPolygonMode(GL_FRONT, GL_LINE); // Mode wireframe (hanya garis)
    glPolygonMode(GL_BACK, GL_LINE);
}

// Fungsi utama
int main(int argc, char* argv[]) {
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(320, 200);
    glutCreateWindow("Kerucut");
    init();
    glutDisplayFunc(Display);
    glutReshapeFunc(reshape);
    glutMainLoop();
}

Apa yang Dilakukan Program Ini?

  • MyCone() : Fungsi ini menggambar kerucut dengan alas berbentuk lingkaran yang dibagi menjadi 40 segmen (polygon kecil). Masing-masing segmen membentuk satu bidang segitiga yang terhubung dari alas ke puncak.

  • Display() : Membersihkan layar dan menggambar kerucut dengan warna putih.

  • reshape() : Menyesuaikan tampilan agar proporsional saat ukuran jendela diubah.

  • init() : Mengatur warna latar belakang dan mode polygon menjadi wireframe, sehingga kita bisa melihat garis-garis pembentuk kerucut.

Hasil Output

Saat program dijalankan, akan tampil sebuah kerucut berwarna putih di atas latar belakang hitam. Karena menggunakan mode wireframe, hanya garis-garis pembentuk kerucut yang terlihat, bukan permukaan penuhnya.

Codeblocks,Komputer Grafik,

Tips Tambahan

  • Jika ingin membuat kerucut lebih halus, Anda bisa meningkatkan nilai circle_points menjadi 60, 80, atau lebih.

  • Untuk menampilkan kerucut berwarna penuh (solid), ubah glPolygonMode(GL_FRONT, GL_FILL); pada fungsi init().

  • Anda bisa memvariasikan radius dan tinggi di fungsi MyCone() untuk membuat kerucut dengan ukuran yang berbeda-beda.

Komentar