Primitive Objects Dan Objek 2 Dimensi [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

Praktikum Grafika Komputer February 4, 2015



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI A. TUJUAN -



Memahami jenis-jenis primitive objects.



-



Memahami dan dapat membuat objek primitif.



-



Memahami penerapan Objek primitif menjadi bangun 2 dimensi dasar.



-



Memahami dan dapat membuat fungsi untuk bangun 2 dimensi dasar.



B. JOBSHEET PRAKTIKUM 1. Jobsheet 1: Script Dasar Source code: glutInitWindowPosition(100,100); glutInitWindowSize(320,240); gluOrtho2D(-320.,320.,-240.,240.);



Penjelasan: merupakan script dasar dalam penggunaan program untuk mengatur ukuran widows dan posisi windows 2. Jobsheet 2: Source code: #include #include void drawDot(void){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS); glVertex2i(-200, -100); glVertex2i(200, 100); glVertex2i(250, 150); glEnd(); glFlush(); } void main(int argc, char **argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(500,200); glutInitWindowSize(640,480); gluOrtho2D(-320.,320.,-240.,240.); glutCreateWindow("Modul 2"); glutDisplayFunc(drawDot); glutMainLoop(); }



Output program:



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 1



Praktikum Grafika Komputer February 4, 2015



Penjelasan: tampilan output program kosong. 3. Jobsheet 3: Source code: a. #include #include void drawDot(void){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS); glVertex2i(18, 200); glVertex2i(100, 100); glVertex2i(200, 200); glEnd(); glFlush(); } void main(int argc, char **argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(600,400); gluOrtho2D(-320.,320.,-240.,240.); glutCreateWindow("Modul 2"); glutDisplayFunc(drawDot); glutMainLoop(); }



Output program:



b. #include #include void drawDot(void){ glPointSize(10); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS);



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 2



Praktikum Grafika Komputer February 4, 2015 glVertex2i(50, 0); glVertex2i(50, 50); glVertex2i(0, 0); glEnd(); glFlush(); } void main(int argc, char **argv){ glutCreateWindow("Pemrograman Grafis GLUT"); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawDot); glutMainLoop(); }



Output program:



c. #include #include void drawDot(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POINTS); glVertex2i(50, 0); glPointSize(10); glVertex2i(50, 50); glVertex2i(0, 0); glEnd(); glFlush(); } void main(int argc, char **argv){ glutCreateWindow("Pemrograman Grafis GLUT"); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawDot); glutMainLoop(); }



Output program:



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 3



Praktikum Grafika Komputer February 4, 2015



Pejelasan: program menampilkan titik ketebalan titik berbeda karena GL point size letaknya diubah pada script sesuai dengan letak koordinat. 4. Jobsheet 4: Source code: #include #include void drawLine(){ glLineWidth(35); glBegin(GL_LINES); glColor3f(1.,0.,0.); glVertex2d(0.0,-0.8); glVertex2d(9.9,8.9); glEnd(); glFlush(); } void main(int argc, char **argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(500,200); glutInitWindowSize(640,480); gluOrtho2D(-320.,320.,-240.,240.); glutCreateWindow("Modul 2"); glutDisplayFunc(drawLine); glutMainLoop(); }



Output program:



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 4



Praktikum Grafika Komputer February 4, 2015 Penjelasan:Program menampilkan garis dengan koordinat yang telah ditentukan karena ukuran dari garis melebihi ukuran jendela program maka yang ditampilkan tidak semuanya. 5. Jobsheet 5: Source code: a. #include #include void drawLine(){ glLineWidth(20); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glVertex2d(18, 200); glVertex2d(100, 100); glVertex2d(200, 200); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutCreateWindow("Modul 2"); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawLine); glutMainLoop(); }



Output program:



b. #include #include void drawLine(){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glVertex2d(18, 200);



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 5



Praktikum Grafika Komputer February 4, 2015 glVertex2d(100, 100); glLineWidth(20); glVertex2d(200, 200); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutCreateWindow("Modul 2"); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawLine); glutMainLoop(); }



Output program:



c. source code: #include #include void drawLine(){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glVertex2d(18, 200); glVertex2d(100, 100); glVertex2d(200, 200); glLineWidth(20); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutCreateWindow("Modul 2"); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawLine); glutMainLoop();



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 6



Praktikum Grafika Komputer February 4, 2015 }



Output progam:



Penjelasan: Hampir sama dengan program yang menampilkan titik sebelumnya,GL point size kita ubah letaknya pada script untuk menampilkan ukuran dan ketebalan garis yang berbeda. 6. Jobsheet 6: Source code: #include #include void drawPoliline(void) { glBegin(GL_LINE_STRIP); glVertex2d(18, 200); glVertex2d(100, 100); glVertex2d(200, 200); glVertex2d(200, 200); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Modul 2"); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawPoliline); glutMainLoop(); }



Output program:



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 7



Praktikum Grafika Komputer February 4, 2015



Penjelasan: Program ini menampilkan segitiga dengan sisi bagian atas ukuran garisnya tidak terlalu besar,sehingga tampilan garisnya tipis. 7. Jobhseet 7: Source code: #include #include void drawSimetris(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_LOOP); glVertex2d(18, 200); glVertex2d(100, 100); glVertex2d(200, 200); glVertex2d(200, 200); glVertex2d(200, 200); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Modul 2"); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawSimetris); glutMainLoop(); }



Output program:



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 8



Praktikum Grafika Komputer February 4, 2015 Penjelasan: Program ini menampilkan segitiga yang hampir sama dengan sebelumnya,namu sisi bagian atasya terlihat. 8. Jobsheet 8: Source code: #include #include void drawSegiTiga(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); glVertex2d(18, 200); glVertex2d(100, 100); glVertex2d(200, 200); glVertex2d(100, 50); glVertex2d(50, 200); glVertex2d(-50, -50); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Modul 2"); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawSegiTiga); glutMainLoop(); }



Output program:



Penjelasan: Program menampilkan dua segitiga yang terpisah,namun ada beberapa bagian yang saling terhubung,hal ini terjadi karena



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 9



Praktikum Grafika Komputer February 4, 2015 9. Jobsheet 9: Source code: #include #include void drawBangunBebas(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLE_STRIP); glVertex2d(100, 200); glVertex2d(200, 100); glVertex2d(250, 250); glVertex2d(50, 50); glVertex2d(50, 50); glVertex2d(-50, -50); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Modul 2"); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawBangunBebas); glutMainLoop(); }



Output program:



Penjelasan: Program ini hampir sama dengan sebelumnya namun bentuknya bebas dengan menggunakan prinsip segitiga.



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 10



Praktikum Grafika Komputer February 4, 2015 10. Jobsheet 10: Source code: #include #include void drawTriangleFan(void) { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLE_FAN); glVertex2d(100, 200); glVertex2d(200, 100); glVertex2d(250, 250); glVertex2d(50, 50); glVertex2d(50, 50); glVertex2d(-50, -50); glEnd(); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); glutCreateWindow("Pemograman Grafis GLUT : Khafid"); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawTriangleFan); glutMainLoop(); }



Output program:



Penjelasan: Program ini menggunakan triangle_fan yang titik koordinatnya berpusat.



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 11



Praktikum Grafika Komputer February 4, 2015 11. Jobsheet 11: Source code: #include #include void drawLine(void){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUADS); glVertex2d(100, 100); glVertex2d(150, 100); glVertex2d(150, 150); glVertex2d(100, 150); glVertex2d(190, 100); glVertex2d(240, 100); glVertex2d(240, 150); glVertex2d(190, 150); glEnd(); glFlush(); } void main(int argc, char **argv){ glutCreateWindow("Modul 2"); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawLine); glutMainLoop(); }



Output program:



Penjelasan: Program menampilkan dua buah segi empat yang terpisah,untuk membuat segi empat menggunakan GL_QUADS



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 12



Praktikum Grafika Komputer February 4, 2015 12. Jobsheet 12: Source code: #include #include void drawLine(void){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_QUAD_STRIP); glVertex2d(200, 50); glVertex2d(200, 100); glVertex2d(175, 200); glVertex2d(175, 150); glVertex2d(-50, 100); glVertex2d(75, -100); glEnd(); glFlush(); } void main(int argc, char **argv){ glutCreateWindow("Modul 2"); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawLine); glutMainLoop(); }



Output program:



Penjelasan: Menampilkan objek bangun bebas dengan fungsi GL_QUADS_STRIP. Memliki 6 titik koordinat.



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 13



Praktikum Grafika Komputer February 4, 2015 13. Jobsheet 13: Source code: #include #include void drawLine(void){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_POLYGON); glVertex2d(50, 100); glVertex2d(150, 50); glVertex2d(250, 100); glVertex2d(220, 150); glVertex2d(250, 200); glVertex2d(150, 150); glVertex2d(50, 200); glVertex2d(0, 150); glEnd(); glFlush(); } void main(int argc, char **argv){ glutCreateWindow("Modul 2"); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); gluOrtho2D(-320., 320., -240., 240.); glutDisplayFunc(drawLine); glutMainLoop(); }



Output program:



Penjelasan: Objek bebas kali ini menggunakan polygon



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 14



Praktikum Grafika Komputer February 4, 2015 a. Object 2D: Persegi Panjang Source code: #include #include void segiEmpat(int posx,int posy,int w, int h){ glBegin(GL_QUADS); glVertex2i(posx,posy);// posisi a glVertex2i(w+posx,posy);// posisi b glVertex2i(w+posx,posy-h);// posisi c glVertex2i(posx,posy-h);// posisi d glEnd(); } void renderScene(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.,0.,0.); segiEmpat(-200,200,100,100); glColor3f(0.,1.,0.); segiEmpat(100,200,150,150); glColor3f(0., 0., 1.); segiEmpat(0, 0, 50, 50); glFlush(); } void main(int argc,char **argv){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA); glutInitWindowPosition(100,200); glutInitWindowSize(320,240); glutCreateWindow("Modul 2"); gluOrtho2D(-320,320,-240,240); glutDisplayFunc(renderScene); glutMainLoop(); }



Output program:



Penjelasan: menampilkan persegi dengan posisi,dimensi,serta warna yang berbeda. Agar efisien menggunakan



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 15



Praktikum Grafika Komputer February 4, 2015



b. Objek 2D: Trapesium siku #include #include void segiEmpat(int posx, int posy, int w, int h){ glBegin(GL_QUADS); glVertex2i(posx + w, posy); glVertex2i(posx, posy); glVertex2i(posx - (w), posy - h); glVertex2i(posx + w, posy - h); glEnd(); } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1., 0., 0.); segiEmpat(100, 80, 20, 60); glColor3f(0., 1., 1.); segiEmpat(-100, 90, 50, 70); glColor3f(0., 0., 1.); segiEmpat(0, -40, 100, 40); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Modul 2"); gluOrtho2D(-320.0, 320.0, -240.0, 240.0); glutDisplayFunc(renderScene); glutMainLoop(); }



Output program:



Penjelasan: deklrasi koordinat untuk membuat titik yang jika dihubungkan akan membentuk jajar genjang



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 16



Praktikum Grafika Komputer February 4, 2015



c. Objek 2D: Trapesium sama kaki Source code: #include #include void segiEmpat(int posx, int posy, int w, int h){ glBegin(GL_QUADS); glVertex2i(posx, posy); glVertex2i(posx + w, posy); glVertex2i(posx + 2 * w, posy - h); glVertex2i(posx - w, posy - h); glEnd(); } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0., 0., 1.); segiEmpat(40, 40, 70, 50); glColor3f(0., 1., 0.); segiEmpat(-90, -10, 20, 70); glColor3f(1., 0., 0.); segiEmpat(80, 120, 80, 40); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Modul 2"); gluOrtho2D(-320.0, 320.0, -240.0, 240.0); glutDisplayFunc(renderScene); glutMainLoop(); }



Output program:



d. Objek 2D: Jajar Genjang Source code:



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 17



Praktikum Grafika Komputer February 4, 2015 #include #include void segiEmpat(int posx, int posy, int w, int h){ glBegin(GL_QUADS); glVertex2i(posx, posy); glVertex2i(posx + w, posy); glVertex2i(posx + (w / 2), posy - h); glVertex2i(posx - (w / 2), posy - h); glEnd(); } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1., 0., 0.); segiEmpat(10, 50, 100, 80); glColor3f(0., 1., 0.); segiEmpat(-20, -40, 40, 30); glColor3f(0., 0., 1.); segiEmpat(-90, -20, 50, 40); glFlush(); } void main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(640, 480); glutCreateWindow("Modul 2"); gluOrtho2D(-320.0, 320.0, -240.0, 240.0); glutDisplayFunc(renderScene); glutMainLoop(); }



Output program:



Penjelasan: program menampilkan jajar genjang dengan koordinat,ukuran,dan warna yang berbeda. Untuk mengatur koordinat dari jajar genjang kita membuat deklrasi berikut



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 18



Praktikum Grafika Komputer February 4, 2015



C. TUGAS ASISTENSI -



Tugas Asistensi 1: Membuat objek belah ketupat source code: #include #include void segiEmpat(int posx,int posy,int w, int h){ glBegin(GL_QUADS); glVertex2i(posx,posy);// posisi a glVertex2i(posx+w,posy-h);// posisi b glVertex2i(posx,posy-h);// posisi c glVertex2i(posx-w,posy-h);// posisi d glEnd(); } void renderScene(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,1,0); //warna kuning segiEmpat(-180,200,90,90); glColor3f(1,1,0); //warna kuning segiEmpat(-180,20,-90,-90); glColor3f(0,0,1); //biru tua segiEmpat(0,70,60,60); glColor3f(0,0,1); //biru tua segiEmpat(0,-50,-60,-60); glColor3f(1,1,1); //putih segiEmpat(180,-40,30,30); glColor3f(1,1,1); //putih segiEmpat(180,-100,-30,-30);



glFlush(); } void main(int argc,char **argv){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA); glutInitWindowPosition(100,200); glutInitWindowSize(320,240); glutCreateWindow("Belah Ketupat"); gluOrtho2D(-320,320,-240,240); glutDisplayFunc(renderScene); glutMainLoop(); }



Output program:



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 19



Praktikum Grafika Komputer February 4, 2015



Penjelasan: Program ini menampilkan 3 belah ketupat yang memiliki ukuran,posisi serta warna yang berbeda. Untuk membuat belah ketupat program ini menggunakan QUADS untuk menghubungkan 4 titik agar saling terhubung. -



Tugas Asistensi 2: Source code: #include #include void segiEmpat(int posx,int posy,int w, int h){ glBegin(GL_QUADS); glVertex2i(posx,posy);// posisi a glVertex2i(posx+w,posy-h);// posisi b glVertex2i(posx,posy-3*h);// posisi c glVertex2i(posx-w,posy-h);// posisi d glEnd(); } void renderScene(void){ glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,1,0); //kuning segiEmpat(-180,100,90,90); glColor3f(0,0,1); //biru segiEmpat(0,100,60,60); glColor3f(1,1,1); //putih segiEmpat(90,100,30,30); glFlush(); } void main(int argc,char **argv){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE |GLUT_RGBA); glutInitWindowPosition(100,200); glutInitWindowSize(320,240); glutCreateWindow("Layang-Layang"); gluOrtho2D(-320,320,-240,240); glutDisplayFunc(renderScene); glutMainLoop(); }



PRIMITIVE OBJECTS DAN OBJEK 2 DIMENSI



Page 20



Praktikum Grafika Komputer February 4, 2015 Output program:



Penjelasan: Hampir sama dengan program sebelumnya,program kali ini menampilkan objek 2D segi empat yaitu layang-layang menggunakan QUADS juga agar 4 titik yang dibuat dapat saling terhubung. Deklarasi tiap-tiap posisi titik adalah sebagai berikut glVertex2i(posx,posy);// posisi a glVertex2i(posx+w,posy-h);// posisi b glVertex2i(posx,posy-3*h);// posisi c glVertex2i(posx-w,posy-h);// posisi d



-



Tugas Asistensi 3: Source code: #include "stdlib.h" #include "glut.h" #include "math.h" const double PI = 3.141592653589793; int i; void back(){ glBegin(GL_QUADS); glColor3f(1,1,1); glVertex2d (-150,150); glVertex2d(150,150); glVertex2d(150,-150); glVertex2d (-150,-150); glEnd(); }



void lingkaran(int radius, int jumlah_titik, int x_tengah, int y_tengah) { glBegin(GL_POLYGON); for (i=0;i