Anda di halaman 1dari 14

balls

Nurul Azizah
Ihsan Satya Rama
Resti sintya Ervina
Sigit Wibowo
Rahim Rasyid

h ttp :// w w w . tu lisa n ku . co m


Pendahuluan

Balls adalah sebuah animasi yang dibuat
menggunakan C++ dan OpenGL

Beberapa bola yang selalu bergerak terus
menerus dan tidak akan keluar dari windows
yang disediakan

h ttp :// w w w . tu lisa n ku . co m


Source Code
http://openglc2.sourceforge.net/programs/balls
.zip
Program Balls ini terdiri dari 3 buah file yaitu
balls.cpp
tgaload.cpp
tgaload.h

Yang akan dibahas pada presentasi ini hanya
file balls.cpp

h ttp :// w w w . tu lisa n ku . co m


balls.cpp
File balls.cpp mempunyai 1 buah class dan
beberapa fungsi yaitu :
class BallClass
void init ( void )
void display(void)
void reshape(int w, int h)
void idle_func (void)
int main(int argc, char** argv)

h ttp :// w w w . tu lisa n ku . co m


balls.cpp -- class
BallClass
 class BallClass {
 public:
 float inc;
 float yposo,vyo,ypos,times,ay;
 float xposo,vxo,xpos,ax;
 float rotate;
 BallClass () {
 rotate=5;
 inc=.02;
 yposo=2,vyo=0,ypos=2,times=0,ay=-9.8;
 xposo=-2,xpos=2,ax=0;
 int temp =random(20);
 vxo=temp+1;
 }
 h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- init function
 void init ( void )
{

 tgaGetColorEXT();
 //mengatur warna pada bagian yang ada di material dan
jenis pencahayaannya.
 //pada sintaks ini yang diberikan pencahayaan adalah
permukaan depan dengan cahaya ambient dan diffuse
 glColorMaterial ( GL_FRONT,
GL_AMBIENT_AND_DIFFUSE );

 //mengaktifkan fungsi GL_TEXTURE_2D
 //jika aktif, two-dimensional texturing is performed
 glEnable ( GL_TEXTURE_2D );
h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- init function
 //set pixel storage modes
 //Specifies the alignment requirements for the start of
each pixel row in memory. The allowable values are 1
(byte-alignment), 2 (rows aligned to even-numbered
bytes), 4 (word-alignment), and 8 (rows start on
double-word boundaries).
 glPixelStorei ( GL_UNPACK_ALIGNMENT, 1 );

 //glGenTextures: generate texture names.
 //1 menunjukkan banyaknya nama texture yang
dibuat
 //0 menunjukkan tempat penyimpanan texture
 glGenTextures ( 1, 0 );

} h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- init function
 //mengikat gambar dari texture ke objek yang texture enable
 glBindTexture ( GL_TEXTURE_2D, 0 );
 tgaLoadImage ( "fire.tga", &fire_image, TGA_FREE );

 //mengaktifkan fungsi GL_CULL_FACE
 //jika diaktifkan, maka menghilangkan polygon berdasarkan
koordinat yang berkelok pada window
 glEnable ( GL_CULL_FACE );

 //membersihkan nilai buffer dan memberikan nilai baru pada
buffer
 glClearColor ( 0, 0.0, 1.0, 0.0 );

 //memindahkan objek sesuai koordinat x,y, zoom
 glTranslatef ( 0.0, 0.0, zoom );
}
h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- display
function
 void display(void)
{

 for (ballnum=0;ballnum < totalball; ballnum++) {
 d+=0.4;
 glPushMatrix ( );
 //mengikat gambar dari texture ke objek yang
texture enable
 glBindTexture ( GL_TEXTURE_2D, 0 );

 //membuat objek quadric yang baru
 GLUquadricObj* q = gluNewQuadric ( );


h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- display
function
 //menentukan cara penggambaran objek quadric.
 //Quadrics yang diberikan dengan poligon primitif. Poligon
digambar counterclokwish dengan normalnya
 gluQuadricDrawStyle( q, GLU_FILL );

 //menentukan bentuk normal dari quadric
 //1 normal yang dihasilkan dari tiap verteks yang ada
pada quadric
 gluQuadricNormals ( q, GLU_SMOOTH );

 //menentukan apakah texture diberikan kepada quadric
 //GL_TRUE menandakan texture diberikan kepada quadric
 gluQuadricTexture ( q, GL_TRUE );

 //memindahkan objek sesuai koordinat
 glTranslated ( ball[ballnum].xpos, ball[ballnum].ypos, -11.0
); h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- display
function
 //melakukan rotasi pada objek
 glRotated(ball[ballnum].rotate,1,1,1);

 //menggambar sebuah sphere (bola)


 gluSphere ( q, .3, 20, 20 );

 //menghapus quadric
 gluDeleteQuadric ( q );
 glPopMatrix ( );
 }
 //mengaktifkan fungsi BLEND yang ada pada openGL
 //jika aktif, makan nilai warna RGBA yang masuk akan dicampur (blend)
dengan nilai yang ada di buffer
 glEnable ( GL_BLEND );
 glPopMatrix ( );
 glutSwapBuffers ( );
 glClear ( GL_COLOR_BUFFER_BIT );
 }
h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- idle function
 void idle_func (void)
 {
 for (ballnum=0;ballnum < totalball; ballnum++) {
 ball[ballnum].rotate+=((rand()%10));
 ball[ballnum].times+=ball[ballnum].inc;
 ball[ballnum].ypos=ball[ballnum].yposo +
(ball[ballnum].vyo*ball[ballnum].times) + (.5*ball[ballnum].ay*
 (ball[ballnum].times*ball[ballnum].times));
 ball[ballnum].xpos=ball[ballnum].xposo +
(ball[ballnum].vxo*ball[ballnum].times)
 +
(.5*ball[ballnum].ax*(ball[ballnum].times*ball[ballnum].times));
 if ((ball[ballnum].ypos < -4.2)) {
 ball[ballnum].vyo=random(15);
 ball[ballnum].times=0;
 ball[ballnum].yposo=ball[ballnum].ypos;
 ball[ballnum].xposo=ball[ballnum].xpos;
 }
h ttp :// w w w . tu lisa n ku . co m
balls.cpp -- idle function
 else if ((ball[ballnum].ypos> 4.2)) {
 ball[ballnum].ay=1*ball[ballnum].ay;ball[ballnum].vyo=-1
 *random(10);ball[ballnum].times=0;
 ball[ballnum].yposo=ball[ballnum].ypos;
 ball[ballnum].xposo=ball[ballnum].xpos;
 }
 else if ((ball[ballnum].xpos> 5.5)) {
 ball[ballnum].vxo=-1-random(20);ball[ballnum].times=0;
 ball[ballnum].xposo=ball[ballnum].xpos;ball[ballnum].yposo=ball[ballnum].ypos;
 }
 else if ((ball[ballnum].xpos< -5.5)) {
 ball[ballnum].vxo=random(20);ball[ballnum].times=0;
 ball[ballnum].xposo=ball[ballnum].xpos;ball[ballnum].yposo=ball[ballnum].ypos;
 }


 }
 glutPostRedisplay();
 }
h ttp :// w w w . tu lisa n ku . co m
Rangkuman
BallClass digunakan sebagai template untuk
membuat bola yang diinginkan.
Menggunakan objek quadric untuk membuat
bola dan menerapkan fungsi texture.
Perintah glutPostRedisplay() yang
menyebabkan bola terlihat bergerak terus
secara acak.
Akhirnya selesai juga presentasi ini. Terima
kasih

 h ttp :// w w w . tu lisa n ku . co m