laporan ahmad ariando purba
DESCRIPTION
TugasTRANSCRIPT
-
LAPORAN PRAKTIKUM
KOMPUTER APLIKASI
ama
Praktikan
Nomor
Mahasiswa
Tanggal
Kumpul
Tanda tangan
Pratikan
AHMAD
ARIANDO
PURBA
1214370186 12-JUNI-2014
Nama Penilai Tanggal
Koreksi Nilai
Tanda tangan
Dosen
Indri Sulistianingsih, S.Kom
Universitas Pembangunan Panca Budi
Fakultas Teknik
Jurusan Sistem Komputer
Medan
2014
-
DAFTAR ISI
DAFTAR ISI ....................................................................
KATA PENGANTAR ....................................................................
BAB 1 PENDAHULUAN ....................................................................
1.1 Latar Belakang ....................................................................
1.2 Rumusan Masalah ....................................................................
1.3 Batasan Masalah ....................................................................
1.4 Tujuan Penelitian ....................................................................
1.5 Manfaat Penelitian ....................................................................
1.6 Tinjauan Pustaka ....................................................................
1.7 Metode Penelitian ....................................................................
DAFTAR PUSTAKA ....................................................................
-
KATA PENGANTAR
Perkembangan komputer grafik menuntut para pengembang sistem aplikasi komputer
grafik untuk dapat mengembangkan suatu informasi yang dilengkapi dengan visualisasi dan
animasi, agar dapat lebih mudah dipahami oleh pihak yang menggunakan sistem tersebut.
Komputer grafik telah menunjukkan kemajuan yang pesat dalam pengembangan berbagai
aplikasi untuk menghasilkan gambar komputer grafik yang digunakan untuk menunjang
berbagai bidang dengan teknologi grafik berbasis komputer.
Penggunaan komputer grafik telah lama digunakan dalam beberapa macam aplikasi,
diantaranya pendidikan, kedokteran, fisika, matematika, multimedia, dan lain-lain. Pada saat
ini komputer grafik sudah digunakan pada bidang sains, engineering, kedokteran, bisnis,
industri, pemerintahan, seni, hiburan, iklan, pendidikan, dan lain-lain.
Medan, 05 Juni 2014
Penulis
AHMAD ARIANDO PURBA
NPM. 1214370186
-
BAB I
PENDAHULUAN
1. 1 Latar Belakang
Perkembangan grafika komputer menuntut para pengembang sistem aplikasi
grafika komputer untuk dapat mengembangkan suatu informasi yang dilengkapi dengan
visualisasi dan animasi, agar dapat lebih mudah dipahami oleh pihak yang
menggunakan sistem tersebut. Grafika komputer telah menunjukkan kemajuan yang
pesat dalam pengembangan berbagai aplikasi untuk menghasilkan gambar. Grafika
komputer digunakan untuk menunjang berbagai bidang dengan teknologi grafika
berbasis komputer. Penggunaan grafika komputer telah lama digunakan dalam
beberapa macam aplikasi, diantaranya pendidikan, kedokteran, fisika, matematika,
multimedia, dan lain-lain. Pada saat ini grafika komputer sudah digunakan pada bidang
sains, engineering, kedokteran, bisnis, industri, pemerintahan, seni, hiburan, iklan,
pendidikan, dan lain-lain. Oleh karena itu, sudah semakin banyak pula bahasa
pemrograman yang dilengkapi dengan tools/library pembuatan grafik Salah satu
tools/library pembuatan aplikasi grafik adalah OpenGL (Open Graphics Library).
OpenGL(Open Graphics Library) adalah suatu spefikasi grafik yang low-level yang
menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis, dan
lingkaran. OpenGL digunakan untuk mendefinisikan suatu objek, baik objek 2 dimensi
maupun objek 3 dimensi. Dan makalah yang disampaikan kali ini khusus membahas
mengenai perancangan bangun 3 dimensi menggunakan Visual Basic 6.0
1. Batasan Masalah
Batasan masalah pada perancangan bangun 3 Dimensi ini adalah :
1. Penggambaran objek 3D didalam komputer.
2. Penerapan konsep transformasi menggunakan fungsi-fungsi dari OpenGL.
3. Pemrograman menggunakan bahasa Visual Basic 6.0
2. Tujuan
1. Menyelesaikan Ujian Akhir Semester mata kuliah Grafika Komputer semester 6.
2. Mahasiswa mampu menggampar objek 3 Dimensi menggunakan bahasa pemrograman Visual Basic dan OpenGL
3. Mahasiswa mampu mengimplementasikan fungsi transformasi 3D.
-
3. Sistematika Penulisan
Agar makalah dipahami dengan baik oleh pembaca, maka penyusun membuat
sistematika penulisan makalah sebagai berikut :
BAB I PENDAHULUAN
Pendahuluan berisikan latar belakang, identifikasi masalah, pembatasan masalah,
Tujuan dibuatnya makalah dan sistematika penulisan makalah.
BAB II LANDASAN TEORI
Landasan teori berisikan teori-teori yang digunakan didalam makalah.
BAB III PEMBAHASAN
Pembuatan program untuk menggambar grafik 3D
BAB IV KESIMPULAN DAN SARAN
Kesimpulan dan saran merupakan bab terakhir yang berisikan tentang kesimpulan
dari pembahasan serta pengajuan usulan atau saran-saran.
-
BAB II
LANDASAN TEORI
2.1 Definisi Objek 3 Dimensi
Obyek 3-D adalah sekumpulan titik-titik 3-D (x,y,z) yang membentuk luasan-luasan
(face) yang digabungkan menjadi satu kesatuan. Face adalah gabungan titik-titik yang
membentuk luasan tertentu atau sering dinamakan dengan sisi.
Sistem Koordinat 3 Dimensi
-
Contoh pernyataan Objek : Limas Segiempat
Titik-titik yang membentuk obyek:
Titik 0 (0,150,0)
Titik 1 (100,0,0)
Titik 2 (0,0,100)
Titik 3 (-100,0,0)
Titik 4 (0,0,-100)
2.2 Fungsi OpenGL 3D
1. Membersihkan Windows
Pada komputer, memory untuk menampilkan gambar biasanya diisi dengan gambar
yang berasal dari perintah gambar paling akhir, jadi perlu dibersihkan dengan
warna latar belakang sebelum digambar lagi. Contoh berikut ini perintah yang
digunakan untuk membersihkan layar latar belakang dengan warna hitam dan
buffer apa yang akan dibersihkan. Dalam hal ini, buffer warna yang akan
dibersihkan karena buffer warna merupakan tempat gambar disimpan.
glClearColor 0, 0, 0, 0
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
-
2. Spesifikasi Warna
Pada OpenGL mendeskripsikan objek dengan warna objek adalah proses yang
berjalan sendiri-sendiri. Sebelum warna diubah maka semua objek yang digambar
sesudah perintah tersebut akan menggunakan warna terakhir yang terdapat pada
coloring scheme. Untuk warna digunakan perintah glColor3f. Contoh berikut
menunjukkan urutan langkah dalam proses spesifikasi warna sebelum objek
digambar. Warna yang ditampilkan adalah warna merah.
glColor3f 1, 0, 0
3. Memaksa Proses Menggambar Sampai Selesai
Kebanyakan sistem grafik modern sudah menggunakan sistem graphics pipeline.
Dimana CPU utama memberikan issue perintah menggambar dan hardware lain yang
melakukan transformasi, clipping, shading, texturing dan lain-lain. Pada arsitektur
yang demikian, proses tidak dilakukan pada satu computer karena setiap komputer
mempunyai tugas sendiri. CPU utama tidak harus menunggu proses pada masing-
masing komputer tadi selesai, tapi bisa dengan memberikan issue perintah gambar
yang berikutnya. Untuk inilah OpenGL menyediakan perintah glFlush yang memaksa
client untuk segera mengirim paket network walaupun belum penuh. Program
sebaiknya ditulis menggunakan perintah ini karena glFlush tidak memaksa proses
gambar untuk selesai tetapi memaksa proses gambar untuk segera dieksekusi,
sehingga dijamin semua perintah gambar yang sebelumnya akan segera dieksekusi
dalam suatu waktu tertentu.
4. Menggambar di Bidang Tiga Dimensi
Untuk menggambar grafik jenis apapun pada komputer biasanya dimulai dengan
pixel. Pixel adalah elemen terkecil dari layar monitor yang mempunyai atribut warna
-
dan posisi. Sedangkan untuk membentuk garis, poligon, objek dan lain-lain dapat
dilakukan melalui urutan pixel yang berbeda. Menggambar dengan menggunakan
OpenGL mempunyai perbedaan dengan bahasa lain, yaitu tidak perlu memikirkan
koordinat layar secara fisik tetapi hanya perlu menspesifikasikan posisi koordinat
dengan volume penglihatan. OpenGL memikirkan sendiri bagaimana caranya
menggambar titik, garis, dan lainnya yang berada dalam ruang tiga dimensi ke gambar
dua dimensi pada layar komputer.
Area gambar yang dibatasi ini adalah ruang koordinat kartesian yang mempunyai
range dari -100 hingga 100 untuk sumbu x, y dan z. Secara sederhana bidang ini
dapat dianggap sebagai bidang gambar untuk perintah-perintah OpenGL.
Untuk menggambar titik digunakan suatu perintah OpenGL yaitu : glVertex. Fungsi
ini dapat mempunyai 2 sampai 4 parameter dari berbagai macam tipe data. Sebagai
contoh perintah glVertex di bawah ini akan menspesifikasikan sebuah titik pada posisi
4 sumbu x, 4 sumbu y dan 0 untuk sumbu z. glVertex3f 4, 4, 0. Setelah diketahui cara
untuk menspesifikasikan sebuah titik di ruang pada OpenGL. Selanjutnya yang harus
ditambahkan adalah informasi tambahan mengenai titik tersebut, apakah titik tersebut
akhir dari sebuah garis, atau merupakan sebuah titik sudut dari sebuah poligon atau
lainnya, karena definisi geometrik dari sebuah vertex sebenarnya bukanlah hanya
sebuah titik pada layar tetapi lebih merupakan sebuah titik dimana terjadi interseksi
antara dua buah garis atau kurva.
Primitif adalah interpretasi sejumlah set atau deretan titik pada sebuah bentuk yang
digambar pada layar. Pada OpenGL terdapat sepuluh macam primitif dari mulai
menggambar sebuah titik hingga poligon. Untuk itu digunakan perintah glBegin
sebagai cara memberitahu OpenGL untuk memulai menginterpretasi sederetan titik
-
sebagai salah satu bentuk primitif. Dan untuk mengakhiri deretan titik ini digunakan
perintah glEnd. Sebagai Contoh sebagai berikut :
glBegin bmPolygon // spesifikasikan titik sebagai primitif
glVertex3f 4, 4, 0 // spesifikasikan posisi titik
glEnd // mengakhiri perintah menggambar titik
5. Fungsi untuk keperluan Transformasi
a. Fungsi Translasi (Translation)
Translasi merupakan bentuk transformasi yang memindahkan posisi suatu objek,
baik pada sumbu x, sumbu y, atau sumbu z. Fungsi yang digunakan untuk
melakukan translasi adalah :
glTranslatef Tx, Ty, Tz
Parameter Tx digunakan untuk menentukan arah dan seberapa jauh suatu benda
akan dipindahkan berdasarkan sumbu x. Parameter Ty digunakan untuk
menentukan arah dan seberapa jauh suatu benda akan dipindahkan berdasarkan
sumbu y. Sedangkan parameter Tz digunakan untuk menentukan arah dan
seberapa jauh suatu benda akan dipindahkan berdasarkan sumbu z.
Contohnya :
glTranslatef 2, 2, 2
b. Fungsi Rotasi (Rotation)
Rotasi merupakan bentuk transformasi yang digunakan untuk memutar
posisisuatu benda. Fungsi yang digunakan untuk melakukan rotasi ialah
glRotatef(, Rx, Ry, Rz)
-
Parameter yang dibutuhkan pada fungsi tersebut ada 4 macam, yaitu parameter
untuk besar sudut putaran, parameter Rx untuk putaran berdasarkan sumbu x,
parameter Ry untuk putaran berdasarkan sumbu y, dan parameter Rz untuk
putaran berdasarkan sumbu z. Jika parameter bernilai postif, maka objek akan
diputar berlawanan arah jarum jam. Sedangkan jika parameter bernilai negatif,
maka objek akan diputar searah jarum jam. Contohnya :
glRotatef -30, 2, 2, 1
c. Fungsi Skala (Scalling)
Skalasi merupakan bentuk transformasi yang dapat mengubah ukuran (besar-
kecil) suatu objek. Fungsi yang digunakan untuk melakukan skalasi ialah :
glScalef(Sx, Sy, Sz)
Perubahan ukuran suatu objek diperoleh dengan mengalikan semua titik atau atau
vertex pada objek dengan faktor skala pada masing-masing sumbu (parameter Sx
untuk sumbu x, Sy untuk sumbu y, dan Sz untuk sumbu z). Contohnya :
glScalef(2, 2, 2)
-
BAB III
PEMBAHASAN
1. Perancangan Form
Berikut ini adalah properties untuk masing-masing objek pada form di atas :
CommandButton :
(Name) : Command1
Caption : Tampilkan
TextBox :
(Name) : Text1
Caption : Aksi
-
HscrollBar1 :
(Name) : HScroll1
Min : -360
Max : 360
HscrollBar2 :
(Name) : HScroll2
Min : -360
Max : 360
HscrollBar3 :
(Name) : HScroll3
Min : -360
Max : 360
2. Perancangan Bangun 3D
Bangun 3D yang dibuat akan ditampilkan saat tombol Tampilkan ditekan.
Berikut tampilannya :
-
3.2.1 Script Pada Module
'VARIABEL Buatan
Public Type Titik3D
x As Single
y As Single
z As Single
geser As Double
End Type
Mendaftarkan variabel yang digunakan.
Public Type Sisi
balok_atas(1 To 4) As Titik3D
balok_bawah(1 To 4) As Titik3D
balok_kanan(1 To 4) As Titik3D
balok_kiri(1 To 4) As Titik3D
balok_Depan(1 To 4) As Titik3D
balok_belakang(1 To 4) As Titik3D
prisma_bawah(1 To 4) As Titik3D
prisma_belakang(1 To 4) As Titik3D
-
prisma_kanan(1 To 4) As Titik3D
prisma_kiri(1 To 4) As Titik3D
prisma_depan(1 To 4) As Titik3D
tanah_bawah(1 To 4) As Titik3D
tanah_atas(1 To 4) As Titik3D
tanah_belakang(1 To 4) As Titik3D
tanah_depan(1 To 4) As Titik3D
tanah_kanan(1 To 4) As Titik3D
tanah_kiri(1 To 4) As Titik3D
pohon_atas(1 To 4) As Titik3D
pohon_bawah(1 To 4) As Titik3D
pohon_kanan(1 To 4) As Titik3D
pohon_kiri(1 To 4) As Titik3D
pohon_Depan(1 To 4) As Titik3D
pohon_belakang(1 To 4) As Titik3D
limas_kanan(1 To 4) As Titik3D
limas_kiri(1 To 4) As Titik3D
limas_Depan(1 To 4) As Titik3D
limas_belakang(1 To 4) As Titik3D
End Type
Mendaftarkan variabel yang digunakan.
Public balok As Sisi, prisma As Sisi, tanah As Sisi, pohon As Sisi, limas As Sisi
Mendaftarkan variabel yang digunakan.
Sub EnableOpenGL(ghDC As Long)
Dim pfd As PIXELFORMATDESCRIPTOR
Sub EnableOpenGL(ghDC As Long)digunakan untuk mengaktifkan fungsi OpenGL.
PIXELFORMATDESCRIPTOR merupakan sebuah struktur yang berisi data pixel
format untuk menampilkan data pada layar.
ZeroMemory pfd, Len(pfd)
pfd.nSize = Len(pfd)
pfd.nVersion = 1
pfd.dwFlags = PFD_DRAW_TO_WINDOW Or PFD_SUPPORT_OPENGL Or
PFD_DOUBLEBUFFER
pfd.iPixelType = PFD_TYPE_RGBA
-
pfd.cColorBits = 24
pfd.cDepthBits = 32
pfd.iLayerType = PFD_MAIN_PLANE
PixFormat = ChoosePixelFormat(ghDC, pfd)
If PixFormat = 0 Then GoTo ee
SetPixelFormat ghDC, PixFormat, pfd
hrc = wglCreateContext(ghDC)
wglMakeCurrent ghDC, hrc
ChoosePixelFormat merupakan suatu fungsi yang digunakan OpenGL secara otomatis
mencari device context terbaik yang dimiliki sekarang ini.
SetPixelFormat merupakan suatu fungsi yang digunakan untuk mengeset pixel format
berdasarkan hasil function ChoosePixelFormat yang telah dilakukan sebelumnya.
Exit Sub
ee: MsgBox ""
End
End Sub
Digunakan untuk menampilkan pesan/informasi kepada user.
Sub DisableOpenGL()
wglMakeCurrent 0, 0
wglDeleteContext hrc
End Sub
wglMakeCurrent digunakan untuk memanggil rendering context dari OpenGL.
3.2.2 Script Pada Project
Sub Inisialisasi_Awal()
'========== Inisialisasi ==========
EnableOpenGL Me.hDC
hrc = wglCreateContext(hDC)
wglMakeCurrent hDC, hrc
'Inisilisasi Koordinat Bidang Dimensi-3
xmin = -30: xmax = 30
ymin = -30: ymax = 30
-
zmin = 30: zmax = -30
glOrtho xmin, xmax, ymin, ymax, zmin, zmax
glClearColor 0.4, 1, 0.3, 0
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
glClear clrColorBufferBit
glMatrixMode GL_PROJECTION
glLoadIdentity
End Sub
wglCreateContext merupakan fungsi OpenGL yang membuat rendering baru yang sesuai
untuk menggambar sesuai dengan referenci hDC, dimana rendering context tersebut sama
seperti pixel format yang telah diinisialisasi.
xmin = -30: xmax = 30 mendefinisikan range koordinat pada sumbu x.
ymin = -30: ymax = 30 mendefinisikan range koordinat pada sumbu y.
zmin = 30: zmax = -30 mendefinisikan range koordinat pada sumbu z.
glClearColor 0.4, 1, 0.3, 0 mendefinisikan warna dari windows yang dibuat dengan
warna (0.4, 1, 0.3) yaitu abu-abu.
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT untuk
membersihkan memori buffer warna atau memori buffer kedalaman dari keadaan
sebelumnya.
glMatrixMode GL_PROJECTION berfungsi untuk memberi nilai masukan pada
matrix dengan model projection.
glLoadIdentity untuk memanggil matriks terakhir yang disimpan.
Sub Bersihkan_Layar()
glClearColor 0.4, 1, 0.3, 0
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
End Sub
Fungsinya telah dijelaskan pada script sebelumnya.
Sub Tampilkan_Gambar()
'Menampilkan Hasil
glFlush
SwapBuffers Me.hDC
End Sub
-
glFlush dan SwapBuffers Me.hDC adalah perintah yang digunakan untuk
menampilkan gambar di layar.
Untuk menggambar objek :
glVertex3f(x,y,z) : Lokasi titik berada di (x,y,z). Tipe argumennya adalah
float dan 3 dimensi yaitu x, y dan z
glColor3f(R, G, B) : Warna latar muka (pena) Tiga komponen warna yaitu
Red, Green dan Blue
glBegin bmPOINTS : Titik
glBegin bmLINES : Garis
glBegin bmLINE_LOOP : Poligaris tertutup (polygon)
glBegin bmTRIANGLES : Segitiga
glBegin bmQUADS : Segiempat
glBegin bmPOLYGON : Poligon
glEnd : Akhir perintah OpenGL
1. Membuat objek bagian atas pohon
Terbentuk dari bangun Limas yang memiliki 5 sisi.
'titik 1 bagian belakang
limas.limas_belakang(1).x = -8
limas.limas_belakang(1).y = 5
limas.limas_belakang(1).z = 4
'titik 2 bagian belakang
With limas.limas_belakang(2)
.x = -2
.y = 7
.z = 4
End With
'titik 3 bagian belakang
With limas.limas_belakang(3)
.x = -5
.y = 15
.z = -1
End With
Sub Membuat_Titik()
'====limas pohon====
-
'titik 1 bagian depan
limas.limas_Depan(1).x = -8
limas.limas_Depan(1).y = 5
limas.limas_Depan(1).z = -2
'titik 2 bagian depan
With limas.limas_Depan(2)
.x = -2
.y = 5
.z = -2
End With
'titik 3 bagian depan
With limas.limas_Depan(3)
.x = -5
.y = 15
.z = -1
End With
'titik 4 bagian depan
With prisma.prisma_depan(4)
.x = 0
.y = 8
.z = 2
End With
'titik 1 bagian kanan
limas.limas_kanan(1).x = -2
limas.limas_kanan(1).y = 5
limas.limas_kanan(1).z = -2
'titik 2 bagian kanan
With limas.limas_kanan(2)
.x = -2
.y = 7
.z = 4
End With
'titik 3 bagian kanan
With limas.limas_kanan(3)
.x = -5
.y = 15
.z = -1
End With
'titik 1 bagian kiri
limas.limas_kiri(1).x = -8
limas.limas_kiri(1).y = 5
limas.limas_kiri(1).z = -2
-
'titik 2 bagian kiri
With limas.limas_kiri(2)
.x = -8
.y = 5
.z = 4
End With
'titik 3 bagian kiri
With limas.limas_kiri(3)
.x = -5
.y = 15
.z = -1
End With
'=====limas pohon===
glColor3f 0, 0.5, 0
glBegin bmPolygon
For ttk = 1 To 3
With limas.limas_Depan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 1, 0.8
glBegin bmPolygon
For ttk = 1 To 3
With limas.limas_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0, 0.6, 0
glBegin bmPolygon
For ttk = 1 To 3
With limas.limas_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0, 0.5, 0
glBegin bmPolygon
For ttk = 1 To 3
With limas.limas_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
End Sub
-
Tampilan :
2. Membuat objek batang pohon
'titik 3 bagian depan
With pohon.pohon_Depan(3)
.x = -4
.y = 5
.z = 0
End With
'titik 4 bagian depan
With pohon.pohon_Depan(4)
.x = -6
.y = 5
.z = 0
End With
'====pohon====
'titik 1 bagian depan
pohon.pohon_Depan(1).x = -6
pohon.pohon_Depan(1).y = 0
pohon.pohon_Depan(1).z = 0
'titik 2 bagian depan
-
With pohon.pohon_Depan(2)
.x = -4
.y = 0
.z = 0
End With
Terbentuk dari bangun balok, memiliki 6 sisi.
'titik 1 bagian belakang
pohon.pohon_belakang(1).x = -6
pohon.pohon_belakang(1).y = 0
pohon.pohon_belakang(1).z = 2
'titik 2 bagian belakang
With pohon.pohon_belakang(2)
.x = -4
.y = 0
.z = 2
End With
'titik 3 bagian belakang
With pohon.pohon_belakang(3)
.x = -4
.y = 5
.z = 2
End With
'titik 4 bagian belakang
With pohon.pohon_belakang(4)
.x = -6
.y = 5
.z = 2
End With
'titik 1 bagian atas
pohon.pohon_atas(1).x = -6
pohon.pohon_atas(1).y = 5
pohon.pohon_atas(1).z = 0
'titik 2 bagian atas
With pohon.pohon_atas(2)
.x = -4
.y = 5
.z = 0
End With
'titik 3 bagian atas
With pohon.pohon_atas(3)
-
.x = -4
.y = 5
.z = 2
End With
'titik 1 bagian bawah
pohon.pohon_bawah(1).x = -6
pohon.pohon_bawah(1).y = 0
pohon.pohon_bawah(1).z = 0
'titik 2 bagian bawah
With pohon.pohon_bawah(2)
.x = -4
.y = 0
.z = 0
End With
'titik 3 bagian bawah
With pohon.pohon_bawah(3)
.x = -4
.y = 0
.z = 0
End With
'titik 4 bagian bawah
With pohon.pohon_bawah(4)
.x = -6
.y = 0
.z = 2
End With
'titik 1 bagian kanan
pohon.pohon_kanan(1).x = -4
pohon.pohon_kanan(1).y = 0
pohon.pohon_kanan(1).z = 0
'titik 2 bagian kanan
With pohon.pohon_kanan(2)
.x = -4
.y = 0
.z = 2
End With
'titik 3 bagian kanan
With pohon.pohon_kanan(3)
.x = -4
.y = 5
.z = 2
End With
'titik 4 bagian kanan
-
With pohon.pohon_kanan(4)
.x = -4
.y = 5
.z = 0
End With
glColor3f 0.5, 0.3, 0
glBegin bmPolygon
or ttk = 1 To 4
With pohon.pohon_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0.5, 0.3, 0
glBegin bmPolygon
For ttk = 1 To 4
With pohon.pohon_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0.4, 0.2, 0
glBegin bmPolygon
For ttk = 1 To 4
With pohon.pohon_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
'====pohon===
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With pohon.pohon_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0, 0.3
glBegin bmPolygon
For ttk = 1 To 4
With pohon.pohon_atas(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
-
glColor3f 0.4, 0.2, 0
glBegin bmPolygon
For ttk = 1 To 4
With pohon.pohon_Depan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
Tampilan :
3. Membuat objek atap rumah
Terbentuk dari bangun prisma yang memiliki 5 sisi
'======PRISMA======
'titik 1 bagian depan
prisma.prisma_depan(1).x = 0
prisma.prisma_depan(1).y = 5
prisma.prisma_depan(1).z = -3
'titik 2 bagian depan
With prisma.prisma_depan(2)
-
.x = 10
.y = 5
.z = -3
End With
'titik 3 bagian depan
With prisma.prisma_depan(3)
.x = 10
.y = 8
.z = 2
End With
'titik 4 bagian depan
With prisma.prisma_depan(4)
.x = 0
.y = 8
.z = 2
End With
'titik 1 bagian belakang
prisma.prisma_belakang(1).x = 0
prisma.prisma_belakang(1).y = 5
prisma.prisma_belakang(1).z = 7
'titik 2 bagian belakgn
With prisma.prisma_belakang(2)
.x = 10
.y = 5
.z = 7
End With
'titik 3 bagian belakng
With prisma.prisma_belakang(3)
.x = 10
.y = 8
.z = 2
End With
'titik 4 bagian belakng
With prisma.prisma_belakang(4)
.x = 0
.y = 8
.z = 2
End With
'titik 1 bagian kanan
prisma.prisma_kanan(1).x = 10
prisma.prisma_kanan(1).y = 5
prisma.prisma_kanan(1).z = -3
'titik 2 bagian kanan
-
With prisma.prisma_kanan(2)
.x = 10
.y = 5
.z = 7
End With
'titik 3 bagian kanan
With prisma.prisma_kanan(3)
.x = 10
.y = 8
.z = 2
End With
'titik 1 bagian kiri
prisma.prisma_kiri(1).x = 0
prisma.prisma_kiri(1).y = 5
prisma.prisma_kiri(1).z = -3
'titik 2 bagian kiri
With prisma.prisma_kiri(2)
.x = 0
.y = 5
.z = 7
End With
'titik 3 bagian kiri
With prisma.prisma_kiri(3)
.x = 0
.y = 8
.z = 2
End With
'titik 1 bagian bawah
prisma.prisma_bawah(1).x = 0
prisma.prisma_bawah(1).y = 5
prisma.prisma_bawah(1).z = -3
'titik 2 bagian bawah
With prisma.prisma_bawah(2)
.x = 10
.y = 5
.z = -3
End With
'titik 3 bagian bawah
With prisma.prisma_bawah(3)
.x = 10
.y = 5
.z = 7
End With
-
.z = 7
End With
glColor3f 0, 0.5, 1
glBegin bmTriangles
For ttk = 1 To 3
With prisma.prisma_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0, 0.1, 0.9
glBegin bmPolygon
For ttk = 1 To 4
With prisma.prisma_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
'titik 4 bagian bawah
With prisma.prisma_bawah(4)
.x = 0
.y = 5
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With prisma.prisma_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 1, 1
glBegin bmTriangles
For ttk = 1 To 3
With prisma.prisma_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0, 0.4, 1
glBegin bmPolygon
For ttk = 1 To 4
With prisma.prisma_depan(ttk)
-
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
Tampilan :
4. Membuat objek dinding rumah
Terbentuk dari bangun balok yang memiliki 6 sisi.
'titik 1 bagian belakang
balok.balok_belakang(1).x = 10
balok.balok_belakang(1).y = 0
balok.balok_belakang(1).z = 4
'titik 2 bagian belakang
With balok.balok_belakang(2)
.x = 0
.y = 0
.z = 4
End With
'titik 3 bagian belakang
-
With balok.balok_belakang(3)
.x = 0
.y = 5
.z = 4
End With
'titik 4 bagian belakang
With balok.balok_belakang(4)
.x = 10
.y = 5
.z = 4
End With
'=======BALOK===========
'titik 1 bagian depan
balok.balok_Depan(1).x = 0
balok.balok_Depan(1).y = 0
balok.balok_Depan(1).z = 0
'titik 2 bagian depan
With balok.balok_Depan(2)
.x = 10
.y = 0
.z = 0
End With
'titik 3 bagian depan
With balok.balok_Depan(3)
.x = 10
.y = 5
.z = 0
End With
'titik 4 bagian depan
With balok.balok_Depan(4)
.x = 0
.y = 5
.z = 0
End With
'titik 1 bagian kanan
balok.balok_kanan(1).x = 10
balok.balok_kanan(1).y = 0
balok.balok_kanan(1).z = 0
'titik 2 bagian kanan
With balok.balok_kanan(2)
.x = 10
-
.y = 0
.z = 4
End With
'titik 3 bagian kanan
With balok.balok_kanan(3)
.x = 10
.y = 5
.z = 4
End With
'titik 4 bagian kanan
With balok.balok_kanan(4)
.x = 10
.y = 5
.z = 0
End With
'titik 1 bagian kiri
balok.balok_kiri(1).x = 0
balok.balok_kiri(1).y = 0
balok.balok_kiri(1).z = 0
'titik 2 bagian kiri
With balok.balok_kiri(2)
.x = 0
.y = 0
.z = 4
End With
'titik 3 bagian kiri
With balok.balok_kiri(3)
.x = 0
.y = 5
.z = 4
End With
'titik 4 bagian kiri
With balok.balok_kiri(4)
.x = 0
.y = 5
.z = 0
End With
'titik 1 bagian atas
balok.balok_atas(1).x = 0
balok.balok_atas(1).y = 5
balok.balok_atas(1).z = 0
'titik 2 bagian atas
With balok.balok_atas(2)
.x = 10
-
.y = 5
.z = 0
End With
'titik 3 bagian atas
With balok.balok_atas(3)
.x = 10
.y = 5
.z = 4
End With
'titik 4 bagian atas
With balok.balok_atas(4)
.x = 0
.y = 5
.z = 4
End With
'titik 1 bagian bawah
balok.balok_bawah(1).x = 0
balok.balok_bawah(1).y = 0
balok.balok_bawah(1).z = 0
'titik 2 bagian bawah
With balok.balok_bawah(2)
.x = 10
.y = 0
.z = 0
End With
'titik 3 bagian bawah
With balok.balok_bawah(3)
.x = 10
.y = 0
.z = 4
End With
====balok======
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
-
glColor3f 1, 0, 0.3
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_atas(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_Depan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 1, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 1, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With balok.balok_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
-
Tampilan :
5. Membuat objek tanah
Terbentuk dari balok yang memiliki 6 sisi.
'=============balok tanah=====
'titik 1 bagian depan
tanah.tanah_depan(1).x = -8
tanah.tanah_depan(1).y = 0
tanah.tanah_depan(1).z = 0
'titik 2 bagian depan
With tanah.tanah_depan(2)
.x = -8
.y = -2
.z = 0
End With
'titik 3 bagian depan
With tanah.tanah_depan(3)
.x = 18
.y = -2
-
.z = 0
End With
'titik 4 bagian depan
With tanah.tanah_depan(4)
.x = 18
.y = 0
.z = 0
End With
'titik 1 bagian belakang
tanah.tanah_belakang(1).x = -8
tanah.tanah_belakang(1).y = 0
tanah.tanah_belakang(1).z = 8
'titik 2 bagian belakang
With tanah.tanah_belakang(2)
.x = -8
.y = -2
.z = 8
End With
'titik 3 bagian belakang
With tanah.tanah_belakang(3)
.x = 18
.y = -2
.z = 8
End With
'titik 4 bagian belakang
With tanah.tanah_belakang(4)
.x = 18
.y = 0
.z = 8
End With
'titik 1 bagian atas
tanah.tanah_atas(1).x = -8
tanah.tanah_atas(1).y = 0
tanah.tanah_atas(1).z = 0
'titik 2 bagian atas
With tanah.tanah_atas(2)
.x = 18
.y = 0
.z = 0
End With
glColor3f 1, 0.6, 0
glBegin bmPolygon
-
For ttk = 1 To 4
With tanah.tanah_kanan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0.8, 0
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_bawah(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0.2, 0.2, 0.2
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_depan(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0.5, 0, 0
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_belakang(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 0.7, 0, 0
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_kiri(ttk)
glVertex3f .x, .y, .z
End With
Next ttk
glEnd
glColor3f 1, 0, 0.3
glBegin bmPolygon
For ttk = 1 To 4
With tanah.tanah_atas(ttk)
glVertex3f .x, .y, .z
End With
-
Next ttk
glEnd
Tampilan :
Jika seluruh scrip diatas kita gabungkan, maka keseluruhan objek berbentuk rumah akan
tampil, sebagai berikut :
1. Membuat Transformasi Objek
1. Rotasi
a. Berdasarkan sumbu-X
Private Sub HScroll1_Change()
Call Bersihkan_Layar
'=====================================
glRotatef HScroll1.Value, 1, 0, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
-
Script diatas diletakkan pada HScroll1.
Fungsi ini digunakan digunakan untuk memutar posisi objek berdasarkan
sumbu-X.
glRotatef HScroll1.Value, 1, 0, 0. Maksudnya adalah besar sudut putaran
ditentukan oleh nilai pada HScroll1. Karena Scroll ini digunakan untuk
memutar objek berdasarkan sumbu-X saja, maka putaran berdasarkan sumbu x
bernilai 1, sedangkan berdasarkan sumbu y dan sumbu z adalah 0.
Tampilan Objek setelah dirotasi berdasarkan sumbu-X :
b. Berdasarkan sumbu-Y
Private Sub HScroll2_Change()
Call Bersihkan_Layar
'=====================================
glRotatef HScroll2.Value, 0, 1, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
-
Script diatas diletakkan pada HScroll2.
Fungsi ini digunakan digunakan untuk memutar posisi objek berdasarkan
sumbu-Y.
glRotatef HScroll2.Value, 0, 1, 0. Maksudnya adalah besar sudut putaran
ditentukan oleh nilai pada HScroll2. Karena Scroll ini digunakan untuk
memutar objek berdasarkan sumbu-Y saja, maka putaran berdasarkan sumbu x
dan sumbu z bernilai 0, sedangkan berdasarkan sumbu y bernilai 1.
Tampilan Objek setelah dirotasi berdasarkan sumbu-Y :
c. Berdasarkan sumbu-Z
Private Sub HScroll3_Change()
Call Bersihkan_Layar
'=====================================
glRotatef HScroll2.Value, 0, 0, 1
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End Sub
-
Script diatas diletakkan pada HScroll3.
Fungsi ini digunakan digunakan untuk memutar posisi objek berdasarkan
sumbu-Z.
glRotatef HScroll2.Value, 0, 0, 1. Maksudnya adalah besar sudut putaran
ditentukan oleh nilai pada HScroll3. Karena Scroll ini digunakan untuk
memutar objek berdasarkan sumbu-Z saja, maka putaran berdasarkan sumbu x
dan sumbu y bernilai 0, sedangkan berdasarkan sumbu z bernilai 1.
Tampilan Objek setelah dirotasi berdasarkan sumbu-Z :
2. Translasi
a. Ke arah kiri
Private Sub Text1_KeyPress(KeyAscii As Integer)
'GESER Kiri
If KeyAscii = 120 Then
Call Bersihkan_Layar
'=====================================
glTranslatef 1 / 10, 0, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
-
End If
glTranslatef 1 / 10, 0, 0 Digunakan untuk memindahkan posisi objek berdasarkan sumub-X
ke arah kiri, yJaitu bernilai 1. Nilai 10 menunjukkan seberapa jauh objek dipindahkan pada
sumbu-X.
fungsi translasi ini akan berfungsi jika pada objek Text pada form diberi inputan
berupa huruf z yang pada KeyAscii nya adalah 120.
Tampilan objek setelah ditranslasi ke kiri :
b. Ke arah kanan
If KeyAscii = 122 Then
Call Bersihkan_Layar
'=====================================
'glRotatef HScroll2.Value, 0, 1, 0
glTranslatef -1 / 10, 0, 0
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
-
glTranslatef -1 / 10, 0, 0 Digunakan untuk memindahkan posisi objek berdasarkan sumub-X
ke arah kanan, yaitu bernilai 1. Nilai 10 menunjukkan seberapa jauh objek dipindahkan pada
sumbu-X.
fungsi translasi ini akan berfungsi jika pada objek Text pada form diberi inputan
berupa huruf x yang pada KeyAscii nya adalah 122.
Tampilan objek setelah ditranslasi ke kanan :
3. Skala
a. Memperbesar
If KeyAscii = 99 Then
Call Bersihkan_Layar
'=====================================
glScalef 1.05, 1.05, 1.05
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
-
glScalef 1.05, 1.05, 1.05 Digunakan untuk mengubah ukuran objek menjadi
lebih besar sebesar 0.05x dari ukuran semula.
fungsi translasi ini akan berfungsi jika pada objek Text pada form diberi inputan
berupa huruf c yang pada KeyAscii nya adalah 99.
Tampilan objek setelah skalanya di perbesar :
b. Memperkecil
If KeyAscii = 118 Then
Call Bersihkan_Layar
'=====================================
glScalef 0.95, 0.95, 0.95
Call Tampilkan_Data
'===========================
Call Tampilkan_Gambar
End If
-
glScalef 0.05, 0.05, 0.05 Digunakan untuk mengubah ukuran objek menjadi
lebih kecil sebesar 0.05x dari ukuran semula.
Fungsi translasi ini akan berfungsi jika pada objek Text pada form diberi
inputan berupa huruf v yang pada KeyAscii nya adalah 118.
Tampilan objek setelah skalanya di perkecil :
-
BAB IV
KESIMPULAN DAN SARAN
4.1 Kesimpulan Dari pembahasan dapat diambil kesimpulan sebagai berikut :
1. Didalam pembuatan grafik di jaman serba teknologi ini kita bebas menentukan alat
apa yang akan kita pakai, dan untuk memahami secara mendalam transformasi
didalam grafik komputer sangatlah penting menguasai ilmu matematik.
2. Perbandingan hasil pembuatan program dengan menggunakan bahasa programan
lebih sulit dan berbeda jauh dari segi tampilan, maupun tata cara pembuatannya
dibandingkan dengan program aplikasi yang menerapkan system just click (event
driven).
4.2 Saran
Setelah melihat uraian di atas, penyusun mempunyai saran.
1. Terlebih dahulu harus belajar algoritma, karena algorima adalah salah satu kunci
untuk dapat memahami permasalahan yang akan dihadapi didalam pembuatan
grafik komputer.
2. Bila ingin membuat suatu gambar/grafik, pilihlah program aplikasi yang lebih bagus
menurut anda, lebih kompleks, dan yang khusus menanganipembuatan
gambar/grafik serta yang mengikuti perkembangan jaman .
3. Harus memahami sintak-sintak (gaya bahasa penulisan dalam bahasa pemrograman )
yang terdapat dalam bahasa pemrograman ataupun fitur fitur yang terdapat didalam program aplikasi.
LAPORAN PRAKTIKUM