🚀 Tutorial OpenGL: Memindahkan Bola ke Arah X, Y, dan XY di Code::Blocks

Halo, sobat koding! 👋

Dalam tutorial kali ini, kita akan mempelajari cara memindahkan sebuah objek berbentuk bola (lingkaran) di berbagai arah menggunakan OpenGL. Teknik ini penting banget buat kamu yang ingin belajar animasi dasar dalam grafika komputer.


🎯 Tujuan Program

Kita akan menggambar dua buah bola (lingkaran):

  • Bola pertama berada pada posisi awal.

  • Bola kedua akan dipindahkan ke arah sumbu Y, sumbu X, atau bahkan kedua sumbu (XY) menggunakan fungsi glTranslatef().


🧠 Konsep Utama

  • glTranslatef(x, y, z) digunakan untuk menggeser objek:

    • x > 0 artinya ke kanan,

    • y > 0 artinya ke atas,

    • z tidak digunakan karena ini gambar 2D.

  • Lingkaran dibentuk dari 100 titik (GL_POLYGON) dengan rumus trigonometri.


💻 Kode Program Lengkap

// Pindah bola arah x, y, dan xy
#include<windows.h>
#include<math.h>
#include<gl\glut.h>
#define PI 3.1415926535898

int jumlah_titik = 100;

void Lingkaran(){
    GLint i;
    GLdouble sudut;
    glBegin(GL_POLYGON);
    for (i = 0; i < jumlah_titik; i++){
        sudut = 2 * PI * i / jumlah_titik;
        glVertex2f(50 + 20 * cos(sudut), 50 + 20 * sin(sudut));
    }
    glEnd();
}

void Display(){
    glClear(GL_COLOR_BUFFER_BIT);
    
    glColor3f(1.0, 0.0, 0.0);  // Bola pertama: Merah
    Lingkaran();
    
    glColor3f(1.0, 0.0, 1.0);  // Bola kedua: Ungu
    glLoadIdentity();         // Reset transformasi sebelumnya
    
    glTranslatef(0., 100., 0.);      // Geser ke atas
    //glTranslatef(100., 0., 0.);    // Geser ke kanan
    //glTranslatef(100., 100., 0.);  // Geser ke kanan & atas
    Lingkaran();
    
    glutSwapBuffers();
    glFlush();
}

void reshape(int w, int h){
    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0, 320.0, 0.0, 240.0); // Set sistem koordinat
    glMatrixMode(GL_MODELVIEW);
}

void init(void){
    glClearColor(0.0, 0.8, 0.0, 1.0); // Latar belakang hijau
}

int main(int argc, char* argv[]){
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(320, 240);
    glutCreateWindow("Scaling & Geser Bola");
    init();
    glutDisplayFunc(Display);
    glutReshapeFunc(reshape);
    glutMainLoop();
}
Codeblocks,Komputer Grafik,

🔍 Penjelasan Singkat

  • Lingkaran(): Fungsi untuk menggambar lingkaran dengan rumus (x = r * cos(θ), y = r * sin(θ)).

  • glLoadIdentity(): Menghapus transformasi sebelumnya agar transformasi baru tidak tumpang tindih.

  • glTranslatef(): Digunakan untuk mengatur arah dan jarak perpindahan bola.

  • glutSwapBuffers(): Menampilkan buffer gambar (karena kita pakai GLUT_DOUBLE).


🎮 Coba Sendiri!

Aktifkan salah satu dari baris berikut untuk melihat efek pergeseran arah:

glTranslatef(0., 100., 0.);      // Geser ke atas
glTranslatef(100., 0., 0.);      // Geser ke kanan
glTranslatef(100., 100., 0.);    // Geser ke kanan & atas

💡 Tips Tambahan

Jika kamu ingin membuat animasi gerak bola, kamu bisa menambahkan timer atau keyboard input menggunakan glutTimerFunc() atau glutKeyboardFunc().


🏁 Penutup

Dengan memahami teknik pemindahan objek ini, kamu sudah selangkah lebih dekat ke dunia grafik interaktif dan animasi 2D. Coba kombinasikan dengan rotasi dan scaling untuk membuat simulasi yang lebih kompleks!

Selamat bereksperimen, dan sampai jumpa di tutorial OpenGL selanjutnya! 😊

Komentar