Friday, December 16, 2011

[Contoh] Morphing 2D

0 comments
Sebelum ini, saya sudah sempat memposting tentang masalah Morphing. Iya, proses perubahan bentuk yang terjadi pada suatu benda. Di postingan tersebut sepertinya saya juga telah memberikan contoh morphing pada benda 2 dimensi yang menggunakan Macromedia Flash. Menggunakan software berbasis GUI seperti Macromedia Flash akan sangat begitu mudah, yah, hanya tinggal klik-klik saja.

Nah, postingan kali ini saya akan memberikan contoh morphing 2D menggunakan Open GL/Visual C++. Awalnya saya sendiri tak bisa membuatnya, hingga akhirnya mendapat pencerahan ketika saya melakukan kerja kelompok [tak bisa dibilang begitu juga sih sebenarnya (yay)]. Konsepnya menggunakan rumus persamaan garis seperti materi pada postingan tersebut.

Jadi, inilah contoh yang saya maksud.

#include <stdafx.h>
#include <stdlib.h>
#include <windows.h>
#include <glut.h>
int a=0,b=0,c=0,d=0;
int rumus1(int x1,int x2,int y1,int y2,int x){
int y=(x*(y2-y1)+x2*y1-x1*y2)/(x2-x1);
return y;
}
void tampilkan(){
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0,0,0,0);
glLoadIdentity();
glBegin(GL_QUADS);
glVertex2d(2+a,rumus1(2,3,4,6,2+a));
glVertex2d(6+b,rumus1(6,10,4,14,6+b));
glVertex2d(6+c,1);
glVertex2d(2,1+d);
glEnd();
glFlush();
Sleep(600);
if(1+a<3){
a++;
}
if(5+b<10){
b++;
}
if (6+c<15){
c++ ;
}
if(1+d<2){
d++;
}
}
void init (void)
{
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,20,0,20);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (250,250); //Ukuran window
glutCreateWindow ("2d");
glutDisplayFunc(tampilkan);
init ();
glutIdleFunc(tampilkan);
glutMainLoop();
return 0;
}

Hasil Running :




Leave a Reply