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.
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 fungsiinit()
. -
Anda bisa memvariasikan radius dan tinggi di fungsi
MyCone()
untuk membuat kerucut dengan ukuran yang berbeda-beda.
Komentar
Posting Komentar