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.

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);
}
void 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();
}

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;
}

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.

Baca Juga :   Pengertian dan Konsep Data Mining