Transalasi Kubus C++ OpenGL – Hai semua teman teman, selamat datang di situs ini. Semoga anda senang berkunjung disitus ini. Baiklah kali ini kita akan membahas tentang transalasi atau perpindahan pada object kubus menggunakan bahasa pemrograman C++ dan OpenGL.
Translasi sendiri bertujuan untuk memindahkan objeck dari sumbu awal ke sumbu n, dan sebailknya.
Contoh Program Transalasi Kubus C++ OpenGL
Baiklah langsung saja berikut kode programmnya menggunakan C++ dan OpenGL, jika terjadi error pastikan apakalh penulisan atau pemanggilan OpenGLnya sudah sesuai dengan instalasi OpenGL,
#include<stdlib.h>
#include<glut.h>
float w = 480, h = 480;
float sudut = 0, sx = 0, sy = 0, sz = 0;
void cube() {
glColor3d(0, 0, 1);
glutWireCube(10);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0, 0, -40);
glRotatef(sudut, sx, sy, sz);
cube();
glutSwapBuffers();
}
void resize(int w1, int h1) {
glViewport(0, 0, w1, h1);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (float)w1 / (float)h1, 1.0, 300.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void init() {
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45., (GLdouble)w / (GLdouble)h, 1., 300.);
glMatrixMode(GL_MODELVIEW);
}
void myKeyboard(unsigned char key, int x, int y) {
if (key == 'x') {
sx = 1;
sy = 0;
sz = 0;
sudut += 10;
}
else if (key == 'y') {
sx = 0;
sy = 1;
sz = 0;
sudut += 10;
}
else if (key == 'z') {
sx = 0;
sy = 0;
sz = 1;
}
}
void update(int value) {
glutPostRedisplay();
glutTimerFunc(50, update, 0);
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(w, h);
glutCreateWindow("Objek 3D");
glutDisplayFunc(display);
glutReshapeFunc(resize);
init();
glutTimerFunc(50, update, 0);
glutKeyboardFunc(myKeyboard);
glutMainLoop();
return 0;
}
Dengan interaksi keyboard “x”, maka objek akan bergerak pada sumbu x saja.
Dengan interaksi keyboard “y”, maka objek akan bergerak pada sumbu y saja.
Code lain
#include <windows.h>
#include <GL/glew.h>
#include <GL/freeglut.h>
const int screenWidth = 640;
const int screenHeight = 480;
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_SMOOTH);
}
void drawCubic(){
glBegin(GL_QUADS);
// Depan
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f, 0.5f);
glVertex3f(0.5f, -0.5f, 0.5f);
// Belakang
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.5f, 0.5f, -0.5f);
glVertex3f(-0.5f, 0.5f, -0.5f);
glVertex3f(-0.5f, -0.5f, -0.5f);
glVertex3f(0.5f, -0.5f, -0.5f);
// Atas
glColor3f(0.0f, 0.0f, 1.0f);
glVertex3f(0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, -0.5f);
glVertex3f(0.5f, 0.5f, -0.5f);
// Bawah
glColor3f(1.0f, 1.0f, 0.0f);
glVertex3f(0.5f, -0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f, 0.5f);
glVertex3f(-0.5f, -0.5f, -0.5f);
glVertex3f(0.5f, -0.5f, -0.5f);
// Kiri
glColor3f(1.0f, 0.0f, 1.0f);
glVertex3f(-0.5f, 0.5f, 0.5f);
glVertex3f(-0.5f, 0.5f, -0.5f);
glVertex3f(-0.5f, -0.5f, -0.5f);
glVertex3f(-0.5f, -0.5f, 0.5f);
// Kanan
glColor3f(0.0f, 1.0f, 1.0f);
glVertex3f(0.5f, 0.5f, 0.5f);
glVertex3f(0.5f, 0.5f, -0.5f);
glVertex3f(0.5f, -0.5f, -0.5f);
glVertex3f(0.5f, -0.5f, 0.5f);
glEnd();
}
// display callback
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(1.5f, 0.0f, -6.0f);
drawCubic();
glutSwapBuffers();
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei)w, (GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(screenWidth, screenHeight);
glutInitWindowPosition(100, 100);
glutCreateWindow("Translasi Kubus - OpenGL C++");
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}
Langkah-langkah Membuat Transalasi Kubus C++ OpenGL
1. Persiapan
Sebelum memulai pembuatan translasi kubus, pastikan Anda telah menginstal library OpenGL dan memiliki pengetahuan dasar tentang pemrograman OpenGL.
2. Inisialisasi
Pertama, kita perlu menginisialisasi OpenGL dan membuat window untuk menampilkan objek kita. Berikut adalah contoh kode untuk inisialisasi OpenGL:
#include
void init() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
}
3. Membuat Kubus
Selanjutnya, kita akan membuat kubus menggunakan OpenGL. Berikut adalah contoh kode untuk membuat kubus:
void drawCube() {
glBegin(GL_QUADS);
// Sisi depan
glColor3f(1.0, 0.0, 0.0); // Merah
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
// Sisi belakang
glColor3f(0.0, 1.0, 0.0); // Hijau
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
// Sisi atas
glColor3f(0.0, 0.0, 1.0); // Biru
glVertex3f(-0.5, 0.5, -0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, 0.5, -0.5);
// Sisi bawah
glColor3f(1.0, 1.0, 0.0); // Kuning
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, -0.5, 0.5);
glVertex3f(-0.5, -0.5, 0.5);
// Sisi kanan
glColor3f(1.0, 0.0, 1.0); // Ungu
glVertex3f(0.5, -0.5, -0.5);
glVertex3f(0.5, 0.5, -0.5);
glVertex3f(0.5, 0.5, 0.5);
glVertex3f(0.5, -0.5, 0.5);
// Sisi kiri
glColor3f(0.0, 1.0, 1.0); // Cyan
glVertex3f(-0.5, -0.5, -0.5);
glVertex3f(-0.5, -0.5, 0.5);
glVertex3f(-0.5, 0.5, 0.5);
glVertex3f(-0.5, 0.5, -0.5);
glEnd();
}
4. Translasi Kubus
Sekarang, kita akan menerapkan translasi pada kubus yang telah kita buat. Untuk melakukan translasi, kita perlu menggunakan fungsi glTranslatef()
. Berikut adalah contoh kode untuk melakukan translasi pada kubus:
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Translasi
glTranslatef(0.5, 0.5, 0.0);
// Menggambar kubus
drawCube();
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow("Translasi Kubus dengan OpenGL");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Demikianlah artikel tentang membuat translasi kubs menggunakan C++ dan OpenGL. Semoga artikel ini bisa bermanfaat buat kita semua, dan jangan lupa meninggalkan komentar anda yang bersifat membangun.