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