Membuat Objek Bola Dengan C++ OpenGL Membuat Objek Bola Dengan C++ OpenGL

Membuat Transalasi Kubus C++ OpenGL

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.

Baca Juga :   Metabolit Primer adalah: Pengertian, Fungsi, Sumber, Jenis-Jenis, dan Contoh

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.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *