BAB II LANDASAN TEORI Penyusunan tugas akhir ini berisi tentang pembuatan visualisasi 3D yang dapat membantu dalam memberikan gagasan untuk model bus 3 tingkat dan menunjang transportasi yang sudah ada. Sehingga pembahasan teori yang mendukung isi dari tugas akhir ini mengenai teori, OpenGL, visualisasi, komputer grafik, transportasi dan beserta teori lain. 2.1
Komputer Grafik Grafika komputer (computer graphic) merupakan sekumpulan alat yang
digunakan untuk membuat gambar (to create picture) dan berinteraksi dengan gambar dengan cara-cara seperti biasa yang digunakan. Peralatan tersebut berupa perangkat keras (hardware) dan perangkat lunak (software), semua peralatan tersebut memberi faslitas kepada programming untuk membuat program-program grafis yang baik (Edhi,2005 : 1), secara umum program-program komputer grafis ditujukan untuk memudahkan berinteraksi antara manusia dengan komputer . dengan memvisualisasikan kata-kata menjadi gambar maka manusia akan lebih mudah berinteraksi dengan komputer. 2.1.1
Aplikasi Komputer Graik Grafika computer dapat digunakan diberbagai bidang kehidupan, mulai
dari bidang seni, sains, bisnis, pendidikan, dan juga hiburan (Edhi, 2005 : 5). Berikut adalah bidang aplikasi spesifik dari grafika komputer:
Antarmuka pengguna (Graphical User Interface – GUI)
Peta (cartography)
Kesehatan
Perancangan objek (Computer Aided Design – CAD)
Sistem multimedia
Presentasi saintifik
Pemrosesan citra
Simulasi
6
http://digilib.mercubuana.ac.id/
7
2.1.2
Pembagian Bidang Ilmu Komputer Grafik Dalam buku (Fadlisyah, 2007) bahwa bagian dari Grafika komputer
meliputi:
Geometri
: mempelajari cara menggambarkan permukaan
bidang
Animasi
: mempelajari cara menggambarkan dan manipulasi
gerakan
Rendering
: mempelajari algoritma untuk menampilkan efek
cahaya
Citra(imaging) : mempelajari cara pengambilan dan penyuntingan gambar.
2.2
Visualisasi Visualisasi (visualization) adalah penampilan informasi yang bersifat
komplek ke dalam bentuk visual (gambaran) (chapman,2004:665). Secara umum, visualisasi dalam bentuk gambar baik yang bersifat abstrak maupun nyata telah dikenal sejak awal dari peradaban manusia. Contoh dari hal ini meliputi lukisan didinding-dinding gua dari manusia purba, bentuk huruf hiroglip mesir, system geometri yunani, dan teknik pelikisan dari Leonardo da vinci untuk tujuan rekayasa, ilmiah, dll. Pada saat ini visualisai telah berkembang dan banyak dipakai untuk keperluan ilmu pengetahuan, rekayasa, dll. Pemakaian dari grafika komputer merupakan perkambangan penting dalam perkembangan dunia visualisasi, setalah ditemukan teknik garis perspektif pada zaman Renaissance. Perkembangan bidang animasi juga telah membantu banyak dalam bidang visualisasi yang lebih kompleks dan canggih.
http://digilib.mercubuana.ac.id/
8
2.3 2.3.1
OpenGL Pengertian OpenGL OpenGL (Open Graphic Library) adalah suatu spefikasi grafik yang low-
level yang menyediakan fungsi untuk mempermudah pekerjaan atau untuk keperluan-keperluan pemrograman grafis (graphics programming / GP), termasuk grafik primitif (titik, garis, dan, lingkaran) (Nicholas, 2011 : 541). OpenGL (Open Graphics Library) adalah sebuah library terdiri dari berbagai macam fungsi dan biasanya digunakan untuk mengambarkan sebuah obyek 2D atau 3D. OpenGL bersifat Open-source, multi platform dan multi-language (Nicholas, 2011:541). OpenGL juga
merupakan
suatu
antarmuka
pemrograman
aplikasi
(application programming interface (API)) yang tidak tergantung pada piranti dan platform yang digunakan, sehingga OpenGL dapat berjalan pada sistem operasi Windows, UNIX, SGI, Linux dan sistem operasi lainnya (Nicholas, 2011 :541). OpenGL pada awalnya didesain untuk digunakan pada bahasa pemrograman C/C++, namun dalam perkembangannya OpenGL dapat juga digunakan dalam bahasa pemrograman yang lain seperti Java, Visual Basic, Delphi, maupun Fortra. Namun OpenGL dipackage secara berbeda-beda sesuai dengan bahasa pemrograman yang digunakan (https://www.opengl.org/). Didalam system operasi Windows, OpenGL diimlementasikan ke dalam 2 buah file, yaitu: OpenGL32.dll dan glut32.dll. OpenGL32.dll merupakan pustaka program yang menyediakan perintah-perintah dari OpenGL sedangkan glut32.dll menyediakan perintah tambahan (utility) dari OpenGL (Edhi, 2005 : 180). 2.3.2
Sejarah OpenGL Tahun 1980-an, mengembangkan perangkat lunak yang dapat berfungsi
dengan berbagai hardware grafis adalah tantangan nyata. Pengembang perangkat lunak antarmuka dan kebiasaan menulis driver untuk setiap perangkat keras yang menjadikannya semakin mahal dan mengakibatkan banyak duplikasi. OpenGL dkembankan oleh Silicon Graphics (SGI) pada tahun 1990-an. Pendahulu openGL adalah IRIS GL dari Silicon Grapics, yang pada awalnya
http://digilib.mercubuana.ac.id/
9
berupa GL(Glut Library) 2D, yang berevolusi menjadi API program 3D untuk workstation canggih milik perusahaan tersebut. OpenGL adalah hasil dari usaha SGI untuk mengembangkan dan meningkatkan kemampuan portable IRIS. API grafis yang baru akan menawarkan kemampuan IRIS GL tetapi dengan standar yang lebih terbuka, dengan input dari pembuatan hardware lain dan sistem operasi lain, dan akan memudahkan adaptasi ke hardware platform dan sistem operasi lain. SGI menganggap bahwa IrisGL API itu sendiri tidak cocok untuk membuka karena masalah lisensi dan paten. Juga, IrisGL memiliki fungsi-fungsi API yang tidak relevan dengan grafis 3D. Sebagai contoh, termasuk windowing, keyboard dan mouse API, sebagian karena dikembangkan sebelum Sistem X Window dan Sun’s NEWS sistem dikembangkan. Tahun 1994 SGI mengeluarkan gagasan yang disebut “OpenGL + +” yang mencakup unsur-unsur seperti grafik adegan-API (mungkin berbasis di sekitar mereka Performer teknologi). Spesifikasi itu beredar di kalangan beberapa pihak yang berkepentingan – tetapi tidak pernah berubah menjadi sebuah produk pada tahun 1995, yang akan menjadi pesaing utama dari OpenGL. Pada tanggal 17 Desember 1997 Microsoft dan SGI memprakarsai Fahrenheit proyek, yang merupakan upaya bersama dengan tujuan mempersatukan OpenGL dan Direct3D antarmuka (dan menambahkan adegan-API grafik juga). Pada tahun 1998 Hewlett-Packard bergabung dengan proyek ini. Ini awalnya menunjukkan beberapa janji untuk membawa dunia komputer grafis 3D interaktif API, melainkan karena kendala keuangan di SGI, alasan strategis di Microsoft, dan kurangnya dukungan industri , itu ditinggalkan pada tahun 1999. OpenGL mengalami beberapa revisi yang sebagian besar ada penambahan ektensi secara berangsur-angsur pada main body dari API. Contohnya OpenGL 1.1 (1997) ada penambahan glBindTexture. OpenGL 2.0 (2004) memasukkan tambahan yang paling penting yaitu OpenGL Shading Language (GLSL).
http://digilib.mercubuana.ac.id/
10
2.3.3 Menggambar di OpenGL Didalam buku (Edhi,2005:186-188) dikatakan bahwa semua proses menggambar didalam OpenGL harus diletakkan diantara perintah glBegin dan glEnd seperti pada listing dibawah ini: glBegin <mode gambar>;
glEnd; Beberapa perintah yang dapat digunakan dalam menggambar di OpenGL antara lain: a) glBegin (mode) perintah mengawali untuk menggambar. Mode merupakan konstanta yang menyatakan bagaimana OpenGL harus menghubungkan titik/vertex yang akan digambar.
Mode pada glBegin Tabel 2.1 mode glBegin Syntax
Arti
GL_POINT
Setiap verteks diperlakukan sebagai titik terpisah
GL_LINES
Dua pasang verteks diperlakukan sebagai garis
GL_LINE_STRIP
Sama seperti GL_LINES tetapi setiap garis saling dihubungkan
GL_LINE_LOOP
Sama seperti GL_LINE_STRIP tetapi verteks pertama dan terakhir membentuk garis
GL_TRIANGLES
Tiga pasang verteks dianggap sebagai bidang segitiga
GL_TRIANGLES_STRIP
Bidang segitiga yang saling berhubungan
GL_TRIANGLES_FAN
Mirip GL_TRIANGLES_STRIP tetapi semua bidang menggunakan satu verteks yang sama
GL_QUADS
Empat Verteks dianggap sebagai polygon empat sisi
http://digilib.mercubuana.ac.id/
11
(quadrilaters) GL_QUAD_STRIPS
Pasangan quadrilaters
GL_POLYGON
Vertex dianggap sebagai titik sudut polygon
Hubungan antara masing-masing mode di perhatikan dalam gambar 2.1
Gambar 2.1 Mode menghubungkan vertex b) glColor3f(Red,green,Blue:GLFloat) Perintah untuk menyatakan warna depan/warna objek yang akan digambar. Nilai Red,Green,Blue berkisar 0 sampai 1. c) glVertex3f(x,y,z:GLFloat) Perintah untuk menggambar sebuah vertex dilayar dengan menggunakan koordinat 3 dimensi. Sebagai contoh, perintah glVertex3f(0.1, 0.2, 0.3) maka verteksnya di lokasi x = 0.1, y = 0.2, z = 0.3. d) glVertex4f(x,y,z,w:GLFloat) Sama seperti glVertex3f tetapi nilai x,y,z yang sebenarnya merupakan hasil pembagian dengan parameter w. Sebagai contoh, perintah glVerex4f(1.0, 2.0, 3.0, 4.0) maka akan digambarkan pada x = 1.0/4.0 = 0,25, y = 2.0/0,5 dan z = 3.0/0,75.
http://digilib.mercubuana.ac.id/
12
e) glFlush Pada saat OpenGL menerima perintah mengambar, OpenGL akan menggambar di buffer internalnya dan memindahkan isi buffer ke layar saat menerima perintah glFlush. Hal ini ditujukan agar implementasi OpenGL tidak tergantung kepada system. f) glTranslatef Digunakan untuk merubah titik tengah sumbu koordinat. Bila tadinya pusat sumbu korrdinat terletak tepat di tengah-tengah layar , sekarang titik pusat sumbu koordinat terletak di posisi -5, 5,-20. Jadi kita bisa melihat titik yang digambar di posisi 0,0,0. Setelah menggambar titik, titik tengah sumbu koordinat dikembalikan ke posisi awal dengan glTranslatef( 5.0f, -5.0f, 20.0f). Bila tidak dikembalikan, akan menimbulkan kebingungan karena titik tengah sumbu koordinat tidak terletak di tengah. g) glPushMatrix dan glPopMatrix glPushMatrix berfungsi menyimpan koordinat yang ada. Sedangkan glPopMatrix adalah suatu fungsi guna memanggil suatu fungsi yang telah disimpan pada glPushMatrix. h) glScalef merubah suatu objek dengan mengalihkan semua titik atau vetex pada objek dengan factor skala masing- masing sumbu. 2.4 2.4.1
GLUT(OpenGL Utility Toolkit) Pengertian GLUT Dikarenakan OpenGL tidak menyediakan interface sistem window
ataupun input, maka untuk tujuan ini aplikasi harus mengunakan keseragaman spesifik platform. Dengan demikian jika aplikasi yang diinginkan tidak hanya berjalan di satu platfrom saja, maka perlu menggunakan GLUT untuk membuat interface yang independen. GLUT merupakan pengembangan dari OpenGL yang didesain untuk aplikasi dengan level kecil hingga menengah dan menggunkan callback function untuk menambahkan interaksi dari user. GLUT menyediakan interface untuk
http://digilib.mercubuana.ac.id/
13
menejemen window, menu, dan peralatan input (keyboard, dan mouse). GLUT juga menyediakan fungsi otomatis untuk menggambar objek primitif (garis, lingkaran, titik, persegi), objek 3 dimensi wire (kerangka) maupun yang solid, seperti cube (kubus), sphere (bola), dan teapot (poci teh), cone (kerucut), torus, dan lain-lain. Dua tujuan GLUT ialah menciptakan fleksibitas code antar platform yang dapat dijalankan lebih dari satu sistem operasi (Windows, Linux, Mac OS X, FreeBSD, OpenBSD, NetBSD), dan untuk lebih mudah mempelajari OpenGL. Dengan menggunakan GLUT hanya memerlukan sedikit code dibandingkan dengan OpenGL, tanpa mengetahui spesifikasi sistem operasi, dikarenakan OpenGL adalah sebagai mesin. 2.4.2
Pemrograman Berbasis Event GLUT pada dasarnya GLUT pada dasarnya dibangun untuk menciptakan
aplikasi grafis menggunakan pemrograman yang bersifat prosedural. Di dalamnya terdapat fungsi main loop yang diatur oleh GLUT dan looping yang terjadi dalam aplikasi bertujuan untuk penanganan fungsi-fungsi callback sebagai input dari user seperti fungsi redraw, mouse, keyboard, joystick, dan lain-lain (Binti rosyidah, 2013, opengl-glut, http://rosyidah-binti.blogspot.co.id/2013/04/openglglut.html, di akses 1 maret 2016) Untuk pemrograman OpenGL menggunakan C++, diperlukan library tambahan yaitu : 1. glut.h yang
dicopy
ke
drive:\Program
Files
(86x)\Dev-
C++\MinGW32\include\GL. 2. glut32.lib
yang
dicopy
ke
drive:\Program
C++\MinGW32\lib. 3. glut32.dll yang dicopy ke drive:\Windows\System32.
http://digilib.mercubuana.ac.id/
Files
(86x)\Dev-
14
2.4.3 Manajemen window Ada 5 fungsi yang harus dipanggil untuk melakukan instalasi window yaitu: a.
glutInit(int argc,char**argv) Fungsi
ini
menginstalasi
glut
dan
memproses
argument
command_line yang disertakan. Fungsi ini harus di panggil pertama kali sebelum pemanggilan terhadap fungsi-fungsi yang lain (Dave, 2013:652). b.
glutInitDisplayMode(unsigned intmode)
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 (Dave, 2013:653). c.
GlutInitWindowPosisition(int.x,int.y) Fungsi ini menentukan letak window dengan patokkannya ialah pada window kiri atas (Dave, 2013:654).
d.
glutInitWindowSize(int width,int height) fungsi ini menspesifikasikan ukuran window yang dibuat dalam pixel (Dave, 2013:654).
e.
glutCreateWindow(char *string) fungsi untuk membuat window dalam konteks openGL, dan akan menghasilkan identitas atau judul window tersebut (Dave, 2013:654).
2.5
Dunia 3 Dimensi Perbedaan yang mendasar antara dua dimensi dan tiga dimensi adalah
kedalaman. Kedalaman didefinisikan sebagai jarak antara viewer terhadap benda yang terlihat, Berbeda dengan dua dimensi yang hanya menggunakan 2 ukuran, yaitu panjang dan lebar, maka tiga dimensi menggunakan 3 ukuran, yaitu: panjang, lebar dan kedalaman. Secara geometri ketiga ukuran tersebut disimbolkan dengan sumbu x,y,dan z (Edhi, 2005 : 175).
http://digilib.mercubuana.ac.id/
15
Gambar 2.2 Contoh 3D
Gambar 2.3 Sistem Koordinat 3 Dimensi
2.6 2.6.1
Transportasi Pengertian Menurut Utomo, transportasi adalah pemindahan barang dan manusia dari
tempat asal ke tempat tujuan. Sedangkan menurut Sukarto, transportasi adalah perpindahan dari suatu tempat ke tempat lain dengan menggunakan alat pengangkutan, baik yang digerakkan oleh tenaga manusia, hewan (kuda, sapi, kerbau), atau mesin. Konsep transportasi didasarkan pada adanya perjalanan antara asal dan tujuan (Djafarudin Lukman, 2012, pengertian fungsi manfaat dan jenis
Transportasi,
http://zonageograp.blogspot.co.id/2011/11/pengertian-
transportasi.html, diakses 1 maret 2016). Transportasi sendiri dibagi 3 yaitu : transportasi darat, laut, dan udara. Transportasi udara merupakan transportasi yang membutuhkan banyak uang untuk memakainya. Selain karena memiliki teknologi yang lebih canggih, transportasi udara merupakan alat transportasi tercepat dibandingkan dengan alat transportasi lainnya.
http://digilib.mercubuana.ac.id/
16
2.6.2 Unsur Transportasi Di dalam transportasi, terdapat unsur-unsur yang terkait erat dalam berjalannya konsep transportasi itu sendiri. Unsur-unsur tersebut adalah sebagai berikut:
2.6.3
Manusia yang membutuhkan
Barang yang dibutuhkan
Kendaraan yang dibutuhkan
Kendaraan sebagai alat/sarana
Jalan dan terminal sebagai prasarana transportasi
Organisasi(pengelola transportasi)
Manfaat Kegiatan ekonomi bertujuan memenuhi kebutuhan manusia dengan
menciptakan manfaat. Transportasi adalah salah satu jenis kegiatan yang menyangkut peningkatan kebutuhan manusia dengan mengubah letak geografis barang dan orang sehingga akan menimbulkan adanya transaksi. A. Manfaat Sosial Transportasi menyediakan berbagai kemudahan, diantaranya a.
pelayanan untuk perorangan atau kelompok,
b.
pertukaran atau penyampaian informasi,
c.
Perjalanan untuk bersantai,
d.
Memendekkan jarak,
e.
Memencarkan penduduk.
B. Manfaat Politis Transportasi menciptakan persatuan, pelayanan lebih luas, keamanan negara, mengatasi bencana, dll. C. Manfaat Kewilayahan Memenuhi kebutuhan penduduk di kota, desa, atau pedalaman. 2.6.4
Fungsi melancarkan arus barang dan manusia dan menunjang perkembangan
pembangunan.
http://digilib.mercubuana.ac.id/
17
2.6.5
Jenis Transportasi darat: kendaraan bermotor, kereta api, gerobak yang ditarik
oleh hewan (kuda, sapi,kerbau), atau manusia. Transportasi darat dipilih berdasarkan faktor-faktor seperti jenis dan spesifikasi kendaraan, jarak perjalanan, tujuan perjalanan, ketersediaan moda, ukuran kota dan kerapatan permukiman, faktor sosial-ekonomi. Menurut Sukarto, transportasi publik adalah seluruh alat transportasi di mana
penumpang
tidak
bepergian
menggunakan
kendaraannya
sendiri.
Transportasi publik umumnya termasuk kereta dan bis, namun juga termasuk pelayanan maskapai penerbangan, feri, taxi, dan lain-lain. 2.7
Metode Waterfall Model siklus hidup (life cycle model) adalah model utama dan dasar dari
banyak model. Salah satu model yang cukup dikenal dalam dunia rekayasa perangkat lunak adalah Model Waterfall (Rosa, 2013:28). Ada 5 tahapan utama dalam Model Waterfall seperti terlihat pada Gambar 2.4. Disebut waterfall (berarti air terjun) karena memang diagram tahapan prosesnya mirip dengan air terjun yang bertingkat. Tahapan-tahapan dalam Model Waterfall secara ringkas adalah sebagai berikut: •
Tahap investigasi dilakukan untuk menentukan apakah terjadi suatu masalah atau adakah peluang suatu sistem informasi dikembangkan. Pada tahapan ini studi kelayakan perlu dilakukan untuk menentukan apakah sistem informasi yang akan dikembangkan merupakan solusi yang layak.
•
Tahap analisis bertujuan untuk mencari kebutuhan pengguna dan organisasi serta menganalisa kondisi yang ada (sebelum diterapkan sistem informasi yang baru).
•
Tahap
desain
bertujuan
menentukan
spesifikasi
detil
dari
komponenkomponen sistem informasi (manusia, hardware, software, network dan data) dan produk produk informasi yang sesuai dengan hasil tahap analisis.
http://digilib.mercubuana.ac.id/
18
•
Tahap
implementasi
merupakan
tahapan
untuk
mendapatkan
atau
mengembangkan hardware dan software (pengkodean program), melakukan pengujian, pelatihan dan perpindahan ke sistem baru. •
Tahapan perawatan (maintenance) dilakukan ketika sistem informasi sudah dioperasikan. Pada tahapan ini dilakukan monitoring proses, evaluasi dan perubahan (perbaikan) bila diperlukan.
Gambar 2.4 Model Waterfall
http://digilib.mercubuana.ac.id/