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.
Hasil Running :
#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 :

