JURUSAN PENDIDIKAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS NEGERI MAKASSAR 2020 PRAKTIKUM 3 PENGENALAN PRIMITIF GIOMETRI II A. Tujuan praktikum 1. Mahasiswa mampu menggambar segiempat 2. Mahasiswa mampu menggambar segitiga 3. Mahasiswa mampu menggambar segienam 4. Mahasiswa mampu menggunakan reshape callback function B. Dasar Teori 1. Segi Empat Dalam geometri bidang Euklides, segi empat (bahasa Inggris: quadrilateral) adalah poligon dengan empat sisi dan empat sudut. .Segi empat dapat berupa segi empat sederhana (tidak berpotongan dengan diri sendiri) atau kompleks (berpotongan dengan diri sendiri). Segi empat sederhana terbagi menjadi segi empat cembung (convex) atau cekung (concave). Gambar segiempat seperti dibawah ini. 2. Segitiga Segitiga adalah bangun datar yang dibentuk oleh tiga garis lurus yang saling berpotongan. istilah quadrangle digunakan, dengan analogi dengan triangle (segitiga). Segitiga dibentuk oleh 3 buah titik sudut yang letaknya tidak segaris dihubungkan. Untuk setiap segitiga selalu berlaku sifat- sifat yaitu; jumlah panjang dua sisi selalu lebih besar daripada panjang sisi segitiga; jumlah sudut-sudut sebuah segitiga adalah 180 derajat; sudut terbesar adalah sudut yang menghadap sisi terpanjang, sedangkan sudut terkecil adalah sudut yang menghadap sisi terpendek; besar sudut luar sama dengan jumlah dua sudut yang tidak berpenglurus dengan sudut luar tersebut, gambar segitiga seperti dibawah ini; 3. Segienam Dalam geometri, segi enam (heksagon) adalah sebuah segibanyak (poligon) dengan enam sisi dan enam titik sudut. Sebuah segienam beraturan memiliki simbol Schläfli. Suatu segienam beraturan adalah suatu segienam dengan panjang sisi dan besar sudut dalam yang sama. Sudut dalam pada segienam beraturan adalah 120°. Segienam beraturan memiliki 6 simetri garis dan 6 simetri putar. Diagonal terpanjang dari segienam beraturan, yang menghubungkan dua titik sudut berseberangan, panjangnya adalah dua kali panjang satu sisinya. Jadi, segienam beraturan ini dapat dibagi menjadi enam segitiga sama sisi. Sejumlah segienam dapat disusun bersama-sama dengan cara mempertemukan tiga segienam pada masing-masing salah satu sudutnya. Susunan ini digunakan lebah madu untuk membuat sarangnya, karena susunan segienam merupakan bentuk yang paling efisien dari segi ruang dan bahan bangunan. Contoh gambar segienam sebagai berikut:
4. Reshape callback function
Reshape callback function digunakan agar gambar tetap berada proporsi yang tetap. GlVierport (X, Y, Width, Height) bertanggung jawab untuk melakukan setting view port dari suatu window, yaitu bagian dari window yang digunakan untuk menggambar. Reshape callback function juga digunakan untuk mengatur transformasi proyeksi. berikut mengilustrasikan situasinya. C. PRAKTIKUM 1. Program Praktikum 2. Hasil 3. Analisis sintsks perbaris a. #include <GL/glut.h> (adalah header yang digunakan untuk program grafis menggunakan Open Gl-Glut) b. void garis {(Disini tempat untuk menggaris yaitu suatu fungsi untuk membuat kode program untuk menghasilkan suatu garis) c. glBegin (GL_POLYGON) (digunakan untuk menggambar titik. Posisi titik yang akan digambar harus ditulis antara glBegin(GL_POLYGON) dan glEnd(). Polygon sendiri digunakan untuk menggambar suatu gambar dengan segi banyak. d. glBegin (GL_TRIANGLES) (digunakan untuk menggambar titik. Posisi titik yang akan digambar harus ditulis antara glBegin(GL_TRIANGLES) dan glEnd(). Polygon sendiri digunakan untuk menggambar dalam bentuk segitiga. e. glColor3f (0.0,0.0,0.5)adalah warna dari titk yang akan digambar. Format yang digunakan adalah format RGB f. glVertex2f adalah sebuah sintaks yang dipergunakan untuk menggambarkan object 2 dimensi dengan koordinat (x,y,). Sumbu X negatif berarti ke kiri, positif berarti ke kanan. Sumbu Y positif berarti ke atas, negatif ke bawah. Sedangkan untuk sumbu Z, tanda positif berarti di depan layar (di luar layar), jadi tidak terlihat di layar. Jadi sumbu Z harus menggunakan tanda negatif agar objek dapat dilihat. g. glEnd(); merupakan sintaks penutup h. void resize (int w, int h ) { (membuat fungsi yang akan dipanggil saat reshape) i. glViewport (0, 0, (GLsizei)h, (GLsizei)h) ; adalah sebagai fungsi yang dipergunakan untuk melakukan setting pada viewport dari suatu window yaitu bagian dari window yang digunakan untuk menggambar. j. if else (adalah suatu fungsi untuk melakukan suatu fungsi percabangan) k. void display(void) { (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan menggunakan windows buffer single atau double.) l. glClear(GL_COLOR_BUFFER_BIT);void display(void) { (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan menggunakan windows buffer single atau double.) m. glutSwapBuffers(); (untuk menukar bagian belakang buffer menjadi buffer layar (screen buffer) n. int main (int argc,char** argv){ (Fungsi ini menginisialisasi glut dan memproses argument command_line yg disertakan(jika ada). Fungsi ini harus di panggil pertama kali sebelum pemanggilan terhadap fungsi- fungsi yang lain.) o. glutInit(&argc,argv); (glutInit merupakan fungsi yang mengizinkan sebuah aplikasi untuk mendapatkan argument command line(pada cmd) dan system inisialisasi) p. glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGB); (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna.) q. glutInitWindowPosition(100,100); (Fungsi ini menentukan letak window dengan patokkannya ialah pada window kiri atas.) r. glutInitWindowSize(640,480); (fungsi ini menspesifikasikan ukuran window yang dibuat dalam pixel.) s. glutCreateWindow("praktikum 3"); (fungsi untuk membuat window dalam konteks openGL, dan akan menghasilkan identitas atau judul window tersebut) t. glClearColor(1.0,1.0,0.1,0.0); (sebagai pembaca warna yang akan ditampilkan atau Mendefinisikan warna dari windows yang dibuat dengan warna (1,1,1) yaitu warna putih) u. gluOrtho2D (-1.,1.,-1.,1)); (mendefinisikan besarnya sistem koordinat dengan range sumbu x adalah [-1,1] dan range untuk sumbu y adalah [- 1,1]) v. glutIdleFunc(display); Fungsi ini memanggil fungsi lain yg menentukan konten dari windows yg telah di buat sebelumnya.) w. glutReshapeFunc(resize); adalah sebuah fungsi yang dipergunakan untuk memanggil fungsi callback reshape yaitu Agar gambar tetap berada pada proporsi yang tepat. x. glutMainLoop(); (Fungsi untuk event perulangan, display pada callback akan terus ditampilkan selama aplikasi itu tidak ditutup) y. return0; (fungsi main () berakhir dan mengembalikan kode yang mengikuti instruksi tersebut, dalam kasus ini . Ini merupakan cara yang paling sering digunakan untuk mengakhiri program. D. LATIHAN 1. Program latihan 1 Hasil
Analisis sintaks perbaris
a. #include <GL/glut.h> (adalah header yang digunakan untuk program grafis menggunakan Open Gl-Glut). b. void garis {(Disini tempat untuk menggaris yaitu suatu fungsi untuk membuat kode program untuk menghasilkan suatu garis) c. glBegin (GL_TRIANGLE_STRIP) (digunakan untuk Menggambar sekelompok verteks yang terhubung menjadi segitiga. Sebuah segitiga baru didefinisikan untuk setiap titik yang diberikan setelah dua verteks pertama dan seterusnya.) d. glBegin (GL_TRIANGLE_FAN) (digunakan untuk menggambar sekelompok verteks yang terhubung menjadi segitiga dengan menarik garis tambahan dari verteks yang pertama). e. glBegin (GL_QUAD_STRIP) (digunakan untuk menggambar sekelompok verteks terhubung quadrilaterals. Satu segiempat didefinisikan untuk setiap empat pasang verteks yang diberikan setelah pasangan pertama). f. glColor3f (0.0,0.0,0.5)adalah warna dari titk yang akan digambar. Format yang digunakan adalah format RGB g. glVertex2f adalah sebuah sintaks yang dipergunakan untuk menggambarkan object 2 dimensi dengan koordinat (x,y,). Sumbu X negatif berarti ke kiri, positif berarti ke kanan. Sumbu Y positif berarti ke atas, negatif ke bawah. Sedangkan untuk sumbu Z, tanda positif berarti di depan layar (di luar layar), jadi tidak terlihat di layar. Jadi sumbu Z harus menggunakan tanda negatif agar objek dapat dilihat. h. glEnd(); merupakan sintaks penutup i. void resize (int w, int h ) { (membuat fungsi yang akan dipanggil saat reshape) j. glViewport (0, 0, (GLsizei)h, (GLsizei)h) ; adalah sebagai fungsi yang dipergunakan untuk melakukan setting pada viewport dari suatu window yaitu bagian dari window yang digunakan untuk menggambar. k. if else (adalah suatu fungsi untuk melakukan suatu fungsi percabangan) l. void display(void) { (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan menggunakan windows buffer single atau double.) m. glClear(GL_COLOR_BUFFER_BIT);void display(void) { (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan menggunakan windows buffer single atau double.) n. glutSwapBuffers(); (untuk menukar bagian belakang buffer menjadi buffer layar (screen buffer) o. int main (int argc,char** argv){ (Fungsi ini menginisialisasi glut dan memproses argument command_line yg disertakan(jika ada). Fungsi ini harus di panggil pertama kali sebelum pemanggilan terhadap fungsi- fungsi yang lain.) p. glutInit(&argc,argv); (glutInit merupakan fungsi yang mengizinkan sebuah aplikasi untuk mendapatkan argument command line(pada cmd) dan system inisialisasi) q. glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGB); (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna.) r. glutInitWindowPosition(100,100); (Fungsi ini menentukan letak window dengan patokkannya ialah pada window kiri atas.) s. glutInitWindowSize(640,480); (fungsi ini menspesifikasikan ukuran window yang dibuat dalam pixel.) t. glutCreateWindow("praktikum 3"); (fungsi untuk membuat window dalam konteks openGL, dan akan menghasilkan identitas atau judul window tersebut) u. glClearColor(1.0,1.0,0.1,0.0); (sebagai pembaca warna yang akan ditampilkan atau Mendefinisikan warna dari windows yang dibuat dengan warna (1,1,1) yaitu warna putih) v. gluOrtho2D (-20.0,20.0,-15.0,15.0); (mendefinisikan besarnya sistem koordinat dengan range sumbu x adalah [20.0,20.0] dan range untuk sumbu y adalah [-15.0,15.0]) w. glutIdleFunc(display); Fungsi ini memanggil fungsi lain yg menentukan konten dari windows yg telah di buat sebelumnya.) x. glutReshapeFunc(resize); adalah sebuah fungsi yang dipergunakan untuk memanggil fungsi callback reshape yaitu Agar gambar tetap berada pada proporsi yang tepat. y. glutMainLoop(); (Fungsi untuk event perulangan, display pada callback akan terus ditampilkan selama aplikasi itu tidak ditutup) z. return0; (fungsi main () berakhir dan mengembalikan kode yang mengikuti instruksi tersebut, dalam kasus ini . Ini merupakan cara yang paling sering digunakan untuk mengakhiri program. 2. Program Latihan 2 Hasil
Titik yang digambar di millimeter book
Analisis sintaks perbaris a. #include <GL/glut.h> (adalah header yang digunakan untuk program grafis menggunakan Open Gl-Glut). b. void garis {(Disini tempat untuk menggaris yaitu suatu fungsi untuk membuat kode program untuk menghasilkan suatu garis) c. glBegin (GL_TRIANGLES) (digunakan untuk menggambar titik. Posisi titik yang akan digambar harus ditulis antara glBegin(GL_TRIANGLES) dan glEnd(). Polygon sendiri digunakan untuk menggambar dalam bentuk segitiga d. glColor3f (0.0,0.0,0.5)adalah warna dari titk yang akan digambar. Format yang digunakan adalah format RGB e. glVertex2f adalah sebuah sintaks yang dipergunakan untuk menggambarkan object 2 dimensi dengan koordinat (x,y,). Sumbu X negatif berarti ke kiri, positif berarti ke kanan. Sumbu Y positif berarti ke atas, negatif ke bawah. Sedangkan untuk sumbu Z, tanda positif berarti di depan layar (di luar layar), jadi tidak terlihat di layar. Jadi sumbu Z harus menggunakan tanda negatif agar objek dapat dilihat. f. glEnd(); merupakan sintaks penutup g. void resize (int w, int h ) { (membuat fungsi yang akan dipanggil saat reshape) h. glViewport (0, 0, (GLsizei)h, (GLsizei)h) ; adalah sebagai fungsi yang dipergunakan untuk melakukan setting pada viewport dari suatu window yaitu bagian dari window yang digunakan untuk menggambar. i. if else (adalah suatu fungsi untuk melakukan suatu fungsi percabangan) j. void display(void) { (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan menggunakan windows buffer single atau double.) k. glClear(GL_COLOR_BUFFER_BIT);void display(void) { (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna. Dengan fungsi ini juga bisa menentukan apakah akan menggunakan windows buffer single atau double.) l. glutSwapBuffers(); (untuk menukar bagian belakang buffer menjadi buffer layar (screen buffer) m. int main (int argc,char** argv){ (Fungsi ini menginisialisasi glut dan memproses argument command_line yg disertakan(jika ada). Fungsi ini harus di panggil pertama kali sebelum pemanggilan terhadap fungsi- fungsi yang lain.) n. glutInit(&argc,argv); (glutInit merupakan fungsi yang mengizinkan sebuah aplikasi untuk mendapatkan argument command line(pada cmd) dan system inisialisasi) o. glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGB); (Fungsi ini digunakan untuk menentukan apakah akan menggunakan model pewarnaan RGBA atau indek warna.) p. glutInitWindowPosition(100,100); (Fungsi ini menentukan letak window dengan patokkannya ialah pada window kiri atas.) q. glutInitWindowSize(640,480); (fungsi ini menspesifikasikan ukuran window yang dibuat dalam pixel.) r. glutCreateWindow("praktikum 3"); (fungsi untuk membuat window dalam konteks openGL, dan akan menghasilkan identitas atau judul window tersebut) s. glClearColor(1.0,1.0,0.1,0.0); (sebagai pembaca warna yang akan ditampilkan atau Mendefinisikan warna dari windows yang dibuat dengan warna (1,1,1) yaitu warna putih) t. gluOrtho2D (-20.0,20.0,-15.0,15.0); (mendefinisikan besarnya sistem koordinat dengan range sumbu x adalah [20.0,20.0] dan range untuk sumbu y adalah [-15.0,15.0]) u. glutIdleFunc(display); Fungsi ini memanggil fungsi lain yg menentukan konten dari windows yg telah di buat sebelumnya.) v. glutReshapeFunc(resize); adalah sebuah fungsi yang dipergunakan untuk memanggil fungsi callback reshape yaitu Agar gambar tetap berada pada proporsi yang tepat. w. glutMainLoop(); (Fungsi untuk event perulangan, display pada callback akan terus ditampilkan selama aplikasi itu tidak ditutup) x. return0; (fungsi main () berakhir dan mengembalikan kode yang mengikuti instruksi tersebut, dalam kasus ini . Ini merupakan cara yang paling sering digunakan untuk mengakhiri program. E. KESIMPULAN