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();
}
๐ 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
jadiGL_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
Posting Komentar