OLEH :
IMAM ZAINUDIN
DIMAS RICKY FIRMANSYAH
SANI SURYA
HAMDI JAMIN
KURNIAWAN
10108380
10108401
10108416
10109701
10106268
Kelas : IF8/VIII
BAB I
PENDAHULUAN
1.1.
Latar Belakang
Jam Gadang adalah nama untuk menara jam mirip Big Ben yang terletak di
pusat kota Bukittinggi, Sumatera Barat, Indonesia. Menara jam ini memiliki jam
dengan ukuran besar di empat sisinya sehingga dinamakan Jam Gadang, dimana bila
diterjemahkan dari bahasa Minang ke dalam bahasa Indonesia maka berarti "jam
besar".
Jam Gadang memiliki denah dasar seluas 13 x 4 meter dan tinggi 26 meter ini
terdiri dari beberapa tingkat. Di bagian atas menaraterdapat 4 (empat) jam dengan
diameter masing-masing 80 cm.
Dalam pemanfaatan komputer grafik untuk manipulasi objek 2D/3D, ada dua
jenis obyek yang bisa dimodelkan yaitu obyek sederhana dan obyek kompleks.obyek
sederhana biasanya memiliki bentuk yang kurang bervariasi. Biasanya untuk
mendapatkan obyek yang lebih bervariasi adalah dengan menggabungkan obyek
sederhana dan obyek kompleks.
Dalam kegiatan komputer grafik yang termasuk kedalam mata kuliah, kami
membuat bangun ruang Jam Gadang yang terdiri dari obyek sederhana di bagian luar
obyek dan memiliki obyek kompleks dalam setiap bangunan nya. Seperti bentuk
gonjong atau atap pada rumah adat Minangkabau, Rumah Gadang. Bentuk jam ini-lah
yang menjadi ciri utama dari bangun ruang 3D, jam gadang ini nantinyadapat
berputar layaknya jam jam pada umumnya. Dan sedikit sentuhan taman kecil yang
mengelilingi ornamen 3D jam gadang.
Ekspetasi yang kami berikan adalah pegambaran langsung dari lokasi Jam
Gadang yang nantinya dituangkan dalam bentuk 3D. Dimana di sekitar jam gadang
akan terdapat jalan jalan dengan angkutan kota yang berlalu lalang, Jam Gadang
sendiri yang dapat berputar layaknya jam pada umumnya dan efek cahaya lampu
pada taman kecil yang berada di sekitar Jam Gadang yang menyinari ke arah Jam
Gadang yang menjadi fokus utama tugas dalam objek 3D kami.
Kami juga akan menerapkan key keyboard untuk mengatur cahaya,
perputaran jam, laju jalannya angkutan angkutan kota serta efek kamera yang bisa
di atur arah melihatnya dan juga adanya efek siang serta malam yang dapat
menjadikan suasana Jam Gadang 3D ini berasa seperti aslinya sehingga kita dapat
merasa berada langsung di kota Bukittinggi, Sumatra Barat.
1.2.
Perumusan Masalah
Dalam melaksanakan perancangan bangun ruang 3D ini, permasalah yang ada
3.
bersamaan.
Bagaimana mengimplementasikan bahan ajar mata kuliah Komputer
Grafika dalam membuat bangun ruang dengan menggunakan OpenGL.
1.3.
1.3.1. Maksud
Maksud dari penulisan ini adalah untuk Membuat aplikasi suasana Bangun
Ruang Jam Gadang dengan menggunakan OpenGL yang menampilkan objek-objek
seperti Jam Gadang, Taman, Jalan Lalu Lintas, Sungai, Kincir angin dan Bus.
1.3.2. Tujuan
Adapun tujuan yang akan dicapai dari penulisan tugas besar ini adalah
sebagai berikut :
1. Menampilkan bangunan Jam Gadang beserta taman yang berada disekitarannya
yang dikelilingi oleh pohon-pohon disertai juga adanya kincir angin dan simulasi
pergerakan bus saat melintasi bangunan jam gadang.
2. Mengetahui fungsi-fungsi pada openGL dengan menggunakan empat unsur yaitu
coloring, lighting, blending, dan mapping.
2.1.
Batasan Masalah
Agar pembahasan masalah tidak menyimpang dari pokok bahasan, maka
batasan masalah dalam pembuatan perangkat lunak ini adalah sebagai berikut :
1. Hanya menampilkan Bangunan Jam Gadang 3D, taman, bus, pohon-pohon,
kincir angin dan jalan lalu lintas
2. Menampilkan pergerakan bus saat melintas.
3. Menampilkan pergerakan kincir angin.
4. Objek ditampilkan dalam 3 Dimensi
5. Menggunakan tools Code::Blocks 10.05.
BAB II
LANDASAN TEORI DAN IMPLEMENTASI PROGRAM
2.1
yang berkaitan dengan pembuatan dan manipulasi gambar secara digital. Bentuk
sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian
berkembang menjadi grafika komputer 3D, pemrosesan citra(image processing), dan
pengenalan pola(pattern recognition).Grafika komputer sering dikenal juga dengan
istilah visualisasi data.
Bagian dari grafika komputer meliputi:
1. Geometri: mempelajari cara menggambarkan permukaan bidang
2. Animasi: mempelajari cara menggambarkan dan memanipulasi gerakan
3. Rendering: mempelajari algoritma untuk menampilkan efek cahaya
4. Citra (Imaging): mempelajari cara pengambilan dan penyuntingan gambar.
2.2
Grafik Komputer 2D
Grafik komputer 2D adalah pembuatan objek gambar dengan menggunakan 2
titik sebagai acuannya yaitu sumbu x dan y. Grafik 2D ini dapat digunakan dalam
berbagai aplikasi yang pada awalnya dikembangkan pada teknologi cetak tradisional
dan gambar, seperti tipografi, kartografi, gambar teknik, iklan, dan lain-lain.
Grafik komputer 2D ini merupakan langkah paling awal dalam membentuk
model objek yang akan dibangun dalam grafik komputer 3D. Dalam aplikasi, gambar
dua dimensi adalah bukan hanya representasi dari objek dunia nyata, tetapi sebuah
artefak independen dengan nilai tambah semantik. Keseluruhan obyek 2D dapat
dimasukkan dengan jumlah lebih dari satu, model yang akan dibentuk sesuai dengan
kebutuhan. Tahap rekayasa hasil obyek 2D dapat dilakukan dengan aplikasi program
grafis seperti Adobe Photoshop, Corel Draw, dan lain sebagainya.
2.4
grafik komputer 3D
Grafik komputer 3D merupakan representasi dari data geometrik 3 dimensi
sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafik komputer
2D.hasilnya dapat ditampilkan secara real time untuk keperluan simulasi. Prinsip
yang dipakai mirip dengan grafik komputer 2D dalam penggunaan algoritma, grafika
vektor, model frame kawat (wire frame model), dan grafik rasternya.
Grafik komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini
lebih menekankan pada representasi matematis untuk objek 3 dimensi. Obyek pada
grafik 3D adalah sekumpulan titik-titik 3D (x,y,z) yang membentuk suatu face
(bidang) yang digabungkan menjadi satu kesatuan. Face sendiri adalah gabungan
titik-titik yang membentuk bidang tertentu. Data matematis ini belum bisa dikatakan
sebagai gambar grafis hingga saat ditampilkan secara visual pada layar komputer atau
printer. Proses penampilan suatu model matematis ke bentuk citra 2 D biasanya
dikenal dengan proses 3D rendering.
2.5
Transformasi
Transformasi dasar pada objek dua dimensi yang pertama adalah translasi
(translation). Translasi berarti memindahkan suatu objek sepanjang garis lurus dari
suatu lokasi koordinat tertentu ke lokasi yang lain. Transformasi skala (scaling)
digunakan untuk mengubah ukuran suatu objek, sedangkan rotasi (rotation) adalah
pemindahan objek menurut garis melingkar.
Jenis jenis dari transformasi dasar sebagai berikut :
a) Translasi
Translasi dilakukan dengan penambahan translasi pada suatu titik koordinat
dengan translasi vektor atau shift vektor, yaitu (t x,ty), dimana tx adalah translation
vektor menurut sumbu x, sedangkan t y adalah translation vektor menurut sumbu
y. koordinat baru titik yang ditranslasi dapat diperoleh dengan
X= x + tx
Y= y + ty
Dimana (x,y) adalah koordinat asal suatu objek dan (x , y) adalah koordinat
baru objek tersebut setelah ditranslasi.
Kadang-kadang transformasi dinyatakan dalam bentuk matriks, sehingga matriks
tranformasi untuk translasi dapat dinyatakan sebagai berikut :
Dengan demikian translasi dua dimensi dapat ditulis dalam bentuk matriks :
P = P + T
Rotasi dua dimensi pada suatu objek kan memindahkan objek tersebut
menurut garis melingkar. Pada bidang xy. Untuk melakukan rotasi diperlukan
sudut rotasi dan pivot point (xp yp ) atau rotasi point dimana objek di rotasi,
seperti pada gambar 5-3 nilai positif dari sudut rotasi menentukan arah rotasi
berlawanan dengan jarum jam, dan sebaliknya nilai negative akan memutar
objek searah jarum jam.
Rotasi dapat dilakukan dengan pivot point yaitu titik pusat koordinat, seperti
pada gambar 5-4. Pada betuk ini, r adalah jarak konstan dari titik pusat, sudut
adalah sudut posisi suatu titik dengan sumbu horizontal, sedangkan adalah
sudut rotasi. Menggunakan trigonometri, transformasi dapat dinyatakan dengan
sudut dan sebagai berikut:
X= r cos ( + ) = r cos cos r sin sin
y = r sin ( + ) = r cos sin + r sin cos
sedangkan dengan koordinat polar diketahui bahwa
x = r cos ,
y = r sin
Rotasi suatu titik terhadap pivot point (x p yp ) seperti pada gambar 5-5,
menggunakan bentuk trigonometri, secara umum dapat dituliskan sebagai
berikut:
X = xp +(x - xp) cos (y - yp) sin
Y = yp + (x xp) sin + (y yp) cos
2.7
Color (Warna)
Bentuk gelombang elektromagnetik yang terkandung dalam cahaya yang
Dari sekian banyak warna, dapat dibagi dalam beberapa bagian yang sering
dinamakan dengan sistem warna Prang System yang ditemukan oleh Louis Prang
pada 1876 meliputi :
1.
Hue, adalah istilah yang digunakan untuk menunjukkan nama dari suatu
warna, seperti merah, biru, hijau dsb.
2.
3.
Intensity, seringkali
disebut
dengan
chroma,
adalah
dimensi
yang
Lighting (pencahayaan)
Lighting merupakan proses menghitung intensitas cahaya terutama pada 3-
Pada dunia maya, layaknya cahaya, terdapat beberapa jenis bayangan yang
dapat dihasilkan oleh komputer.
Bayangan bekerja sama dengan cahaya untuk memberi kesan natural atau
realistic pada scene yang ada. Bayangan dapat membantu mendefinisikan
posisi objek-objek, apakah berada di lantai atau melayang di udara.Bayangan
yang dihasilkan bisa tajam dan solid namun bisa juga lembut dan buram
(blurry).Keberadaan bayangan atau ketiadaannya dapat digunakan untuk
memberi keseimbangan dan kontras pada objek-objek di dalam scene.
2.9
Blending (Pencampuran)
Pencampuran merupakan fungsi yang menggabungkan nilai warna dari
sumber dan tujuan. Operasi campuran yaitu cara yang paling alami untuk mengetahui
bahwa komponen RGB adalah suatu fragmen yang mewakili warna dan komponen
alfa adalah suatu fragmen yang mewakili sifat tidak tembus cahaya.
Faktor sumber dan tujuan
Pada proses pencampuran, nilai cairan warna yang masuk fragmen (sumber)
digabungkan dengan warna yang sesuai dengan nilai saat ini yang disimpan pada
piksel (tujuan) dalam dua tahap proses. Yang pertama menghitung faktor sumber dan
tujuan, factor-faktor tersebut adalah RGBA quadruplets yang masing-masing dikalian
dengan komponen-komponen R, G, B dan nilai-nilai dari sumber dan tujuan.
Kemudian komponen yang sesuai dalam dua set RGBA quadruplets. Secara
sistematis, faktor sumber dan tujuan pencampuran (SR, Sg, Sb, Sa) dan (Dr, Dg, dB,
Da) dan nilai RGBA ditandai dengan s atau d dan terakhir nilai RGBA dicampurkan
yang diperoleh dengan (RsSr + RdDr, GsSg + GdDg, BsSb + BdDb, AsSa + Adda)
dimana setiap komponen adalah quadruplets is eventually clamped to [0,1].
Dengan menggunakan glBlendFunc () untuk persediaan pada dua hal utama,
yang pertama menentukan bagaimana faktor sumber dan tujuan harus dihitung dan
yang kedua menunjukan bagaimana faktor sumber dan tujuan dihitung. Dan untuk
proses pencampurannya harus ada faktor pengaktifannya menggunakan : glEnable
(GL_BLEND).
Menggunakan
glDisable
()
dengan
GL_BLEND
untuk
bagaimana
nilai
warna
dalam
fragmen
yang
diproses
Campuran faktor yang diasumsikan terletak pada rentang [0,1]; setelah nilai warna
dalam sumber dan tujuan digabungkan, setelah dihitung kisaran [0,1].
2.10
Texture Mapping
Texture mapping merupakan teknik pemetaan sebuah tekstur pada pola
gambar wireframe, dimana wireframe yang telah dibuat akan ditampilkan memiliki
kulit luar seperti tekstur yang diinginkan. Dalam pemberian tekstur, perlu
diperhatikan dasarnya seperti:
1.
2.
3.
Menentukan tekstur
a) Membaca atau membangkitkan tekstur.
b) Menandai tekstur.
c) Mengenablekan tekstur.
Menandai koordinat tekstur pada vertek.
Menentukan parameter tekstur seperti : Wrapping , filtering, dsb.
2.
3.
7.
8.
3.
4.
d) Mapping Tekstur :
1. Didasarkan pada koordinat tekstur parametric.
2. glTexCoord*() ditetapkan pada masing masing vertex.
2.11
Fog
Fog adalah suatu istilah umum yang menggambarkan bentuk yang sama dari
pengaruh atmosfer, yang digunakan untuk menirukan kabut, kabut tipis, asap, atau
polusi. fog sangat penting di dalam aplikasi-aplikasi simulasi yang visual, yang
dibatasi oleh jarak penglihatan untuk itu perlu lebih mendekati objek. Juga sering
disatukan ke dalam tampilan simulator penerbangan.
Ketika fog memungkinkan, sudut pandang objek bersifat lebih jauh untuk
memudarkan warna fog. Anda dapat mengendalikan kepadatan fog, yang mana
menentukan tingkat objek memudar dengan jarak meningkat, seperti juga warna fog.
Fog terdapat di dalam kedua gaya yaitu gaya RGBA dan indeks warna, meski
perhitungannya sedikit berbeda di kedua gaya
2.12
Pengertian OpenGl
OpenGL adalah API (Application Programing Interface) yang dikenalkan oleh
SGI (Silicon Graphics Inc) kali pertama pada tahun 1980-an. Awalnya OpenGL
diciptakan untuk mendukung proses rendering, pada saat itu hanya digunakan untuk
mendukung proses redering yang dilakukan oleh komputer graphic produksi SGI.
Namun akhirnya, OpenGL dijadikan standar oleh berbagai perusahaan software dan
hardware.
open GL (program java for openGL).
Visual C++
Visual C++ adalah sebuah produk Integrated Development Environment
(IDE) untuk bahasa pemrogramanC dan C++ yang dikembangkan Microsoft. Visual
C++ merupakan salah satu bagian dari paket MicrosoftVisual Studio.Bahasa C atau
C++ adalah suatu bahasa pemrograman.Bahasa C termasuk sebagai bahasa
pemrograman tingkat menengah, maksudnya bahasa C bisa dipelajari dengan lebih
mudah karena mudah dimengerti tetapi mempunyai kemampuan yang tinggi.
Bahasa C bisa digunakan untuk merekayasa program untuk segala kebutuhan,
baik untuk aplikasi bisnis, matematis atau bahkan game.Semua bahasa mempunyai
kelemahan atau kelebihan sendiri-sendiri. Begitu juga dengan bahasa C. Adapun
sebagian kelebihan dari bahasa C adalah sebagai
berikut :
Bahasa C lebih mudah dimengerti karena lebih mirip kepada bahasa manusia.
dalam bahasa C bersifat case sensitiv (huruf kapital dan huruf kecil dibedakan
2.14
Implementasi
Pembuatan objek yang kami lakukan dilakukan dengan pemanggilan fungsi-
fungsi umum yang sudah tersedia di library OpenGL itu sendiri. Berikut objek-objek
yang kami panggil :
2.14.1 Rincian Program
1. Terrain yang dibuat terdiri dari terrain tanah, terrain air dan terrain jalan raya.
2. Bangun jam gadang dibuat dengan menggabungkan kubus-kubus baik yang
solid maupun yang berbentuk wire sebagai jendela dan relif-relief. Jam dibuat
menggunakan gabungan lingkaran dan jarum jam dengan kubus. Bagian atas
dari jam gadang dibuat menggunakan vertex.
3. Kincir dibangun menggunakan gabungan kubus dan bangun torrus yang
terdapat pada openGl. Sedangkan untuk memutar kincir menggunakan fungsi
TimeFunc yang dirotasikan.
4. Bus dibangun menggunakan gabungan kubus dan lingkaran (sphere). Bus bisa
melakukan aksi maju mundur dengan menekan keyboard n dan untuk
mundur menggunakan keyboard m.
5. Taman dibuat dengan menggabungkan kubus yang dibentuk sedemikian rupa
agar bisa menjadi lampu hiasan, bangku dan dasar taman.
6. Pohon-pohonan menggabungkan kubus dengan kerucut (cone) yang di
transformasikan dan di rotasi sedemikian rupa sehingga terlihat seperti pohon
cemara.
7. Pagar dibangun dengan menggunakan gabungan kubus-kubus (cube), begitu
pula dengan lampu hanya ditambah dengan lingkaran (sphere) sebgai
lampunya.
Gambar
2.
Gambar
3.
Tampilan Taman
Gambar
4.
Gambar
5.
Gambar
BAB III
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Kesimpulan merupakan proses terakhir yang berisi hasil dari penelitian yang telah
dilakukan. Berikut adalah kesimpulan yang dapat di ambil dari tugas ini :
1. Mengetahui fungsi-fungsi pencampuran lighting, color, blending, fog.
2. Dapat melihat secara langsung perubahan yang terjadi pada objek.
5.2 Saran
Kami sangat mengharapkan saran dan kritik dari pembaca yang sifatnya membangun
bagi kami untuk memperbaiki segala kekurangan, maka kami dapat menghasilkan makalah yang
lebih baik lagi.
DAFTAR PUSTAKA
1.
2.
3.
4.
5.
http://dhanstar.blogspot.com/2010/10/grafik-komputer-2d-dan-3d.html.
http://aflah7.wordpress.com/2010/10/14/konsep-pemodelan-grafik-2d-dan-3d/
http://www.ilhamsk.com/desain-pemodelan-grafik/
http://id.wikipedia.org/wiki/Grafika_komputer_3D
http://id.wikipedia.org/wiki/Grafika_komputer.
LAMPIRAN
SOURCE KODE
//Tugas Besar Grafika Komputer "Pembuatan Jam
Gadang"
//Imam Zainudin
10108380
//Dimas Ricky
10108401
//Sani Surya S
10108416
//Hamdi Jamin
10109701
//Kurniawan
10106268
computedNormals = false;
}
~Terrain() {
for (int i = 0; i < l; i++) {
delete[] hs[i];
}
delete[] hs;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#ifdef __APPLE__
#include <OpenGL/OpenGL.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include "imageloader.h"
#include "vec3f.h"
#endif
Vec3f[w];
Vec3f sum(0.0f,
0.0f, 0.0f);
Vec3f out;
if (z > 0) {
out =
Vec3f(0.0f, hs[z - 1][x] - hs[z][x], -1.0f);
}
Vec3f in;
if (z < l - 1) {
in =
Vec3f(0.0f, hs[z + 1][x] - hs[z][x], 1.0f);
}
Vec3f left;
if (x > 0) {
left =
Vec3f(-1.0f, hs[z][x - 1] - hs[z][x], 0.0f);
}
Vec3f right;
if (x < w - 1) {
right =
Vec3f(1.0f, hs[z][x + 1] - hs[z][x], 0.0f);
}
}
normals[z][x] =
sum;
}
if (x > 0 && z < l
- 1) {
sum +=
left.cross(in).normalize();
}
if (x < w - 1 && z
< l - 1) {
sum +=
in.cross(right).normalize();
}
if (x < w - 1 && z
> 0) {
sum +=
right.cross(out).normalize();
}
normals2[z][x] =
sum;
}
sum +=
out.cross(left).normalize();
normals2[z][x];
Vec3f sum =
if (x > 0) {
sum +=
normals2[z][x - 1] * FALLOUT_RATIO;
}
if (x < w - 1) {
sum +=
normals2[z][x + 1] * FALLOUT_RATIO;
}
if (z > 0) {
sum +=
normals2[z - 1][x] * FALLOUT_RATIO;
}
if (z < l - 1) {
sum +=
normals2[z + 1][x] * FALLOUT_RATIO;
}
(sum.magnitude() == 0) {
if
}
}
sum =
};
//end class
void initRendering() {
glEnable(GL_DEPTH_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glShadeModel(GL_SMOOTH);
}
//Loads a terrain from a heightmap. The heights of
the terrain range from
//-height / 2 to height / 2.
//load terain di procedure inisialisasi
Terrain* loadTerrain(const char* filename, float
height) {
Image* image = loadBMP(filename);
Terrain* t = new Terrain(image->width,
image->height);
for (int y = 0; y < image->height; y++) {
for (int x = 0; x < image->width;
x++) {
unsigned char color =
(unsigned char) image->pixels[3 * (y
* image>width + x)];
float h = height * ((color /
255.0f) - 0.5f);
t->setHeight(x, y, h);
}
}
delete image;
t->computeNormals();
return t;
const GLfloat
1.0f };
const GLfloat
1.0f };
const GLfloat
};
const GLfloat
1.0f };
void cleanup() {
delete _terrain;
delete _terrainTanah;
}
//untuk di display
void drawSceneTanah(Terrain *terrain, GLfloat r,
GLfloat g, GLfloat b) {
//
glClear(GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT);
/*
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -10.0f);
glRotatef(30.0f, 1.0f, 0.0f, 0.0f);
glRotatef(-_angle, 0.0f, 1.0f, 0.0f);
1.0f};
>getNormal(x, z);
normal[1], normal[2]);
>getHeight(x, z), z);
>getNormal(x, z + 1);
normal[1], normal[2]);
glNormal3f(normal[0],
//Tiang Atas
glPushMatrix();
glColor3f(0.5f, 0.5f, 0.5f);
glTranslatef(0.0,5.3,-2.0);
glScaled(0.5, 1.0 , 7.5);
glutSolidCube(0.5f);
glPopMatrix();
//Lampu
glPushMatrix();
glTranslatef(0.0, 4.7, -3.7);
glColor3f(1, 1, 1);
glScalef(0.8,0.8,1.5);
glutSolidSphere(0.5,70,20);
glPopMatrix();
0.0f};
normal = terrain-
//MARKA JALAN
void marka()
{
glPushMatrix();
glColor3f(1.0f, 1.0f, 1.0f);
glScaled(10.5, 0.1 , 2.5);
glutSolidCube(0.5f);
glPopMatrix();
}
//LAMPU
void lampuJalan()
{
//Tiang Tegak
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glScalef(0.04,1.7,0.05);
glutSolidCube(7.0f);
glPopMatrix();
glColor3f(r, g, b);
for (int z = 0; z < terrain->length() - 1; z++)
glVertex3f(x, terrain-
glLightfv(GL_LIGHT0, GL_DIFFUSE,
lightColor0);
glLightfv(GL_LIGHT0, GL_POSITION,
lightPos0);
*/
float scale = 150.0f / max(terrain->width() 1, terrain->length() - 1);
glScalef(scale, scale, scale);
glTranslatef(-(float) (terrain->width() - 1) / 2,
0.0f,
-(float) (terrain->length() 1) / 2);
glNormal3f(normal[0],
glLightModelfv(GL_LIGHT_MODEL_AMBIENT,
ambientColor);
1.0f};
}
void lampuJalan2()
{
//Tiang Tegak
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glScalef(0.04,1.7,0.05);
glutSolidCube(7.0f);
glPopMatrix();
//Tiang Atas
glPushMatrix();
glColor3f(0.5f, 0.5f, 0.5f);
glTranslatef(0.0,5.3,2.0);
glScaled(0.5, 1.0 , 7.5);
glutSolidCube(0.5f);
glPopMatrix();
glutSolidCube(0.5f);
glPopMatrix();
//Lampu
glPushMatrix();
glTranslatef(0.0, 4.7, 3.7);
glColor3f(1, 1, 1);
glScalef(0.8,0.8,1.5);
glutSolidSphere(0.5,70,20);
glPopMatrix();
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(-26.0f, 0.0f, 0.0f);
glScaled(1.5, 10.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(-51.0f, 0.0f, 0.0f);
glScaled(1.5, 10.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
}
void lampu()
{
//Tiang
glPushMatrix();
glColor4f(0.5, 0.5, 0.5, 0.0);
glScalef(0.02,0.3,0.04);
glutSolidCube(7.0f);
glPopMatrix();
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(-76.0f, 0.0f, 0.0f);
glScaled(1.5, 10.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
//Lampu
glPushMatrix();
glTranslatef(0.0f, 2.0f, 0.0f);
glColor3f(1, 1, 1);
glScalef(2.0,2.0,3.0);
glutSolidSphere(0.5,70,20);
glPopMatrix();
//PAGAR
void pagar()
{
//Pagar Atas
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(-26.0f, 2.0f, 0.0f);
glScaled(297.0, 1.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(-100.0f, 0.0f, 0.0f);
glScaled(1.5, 10.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
}
//LANTAI BANGUNAN
void bangunan()
{
//Dasar
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glScalef(4.0,0.02,4.5);
glutSolidCube(9.0f);
glPopMatrix();
//Pagar Bawah
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(-26.0f, 1.05f, 0.0f);
glScaled(297.0, 1.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
//Dasar2
glPushMatrix();
glColor3f(0.0, 0.0, 0.0);
glTranslatef(0.0, 0.0, 28.5);
glScalef(1.5,0.02,1.9);
glutSolidCube(9.0f);
glPopMatrix();
//Pagar Tegak
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(1.0f, 0.0f, 0.0f);
glScaled(1.5, 10.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
//Trotoar kanan
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glTranslatef(7.0, 0.0, 28.5);
glScalef(0.05,0.1,1.9);
glutSolidCube(9.0f);
glPopMatrix();
//Trotoar Kiri
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glTranslatef(-7.0, 0.0, 28.5);
glScalef(0.05,0.1,1.9);
glutSolidCube(9.0f);
glPopMatrix();
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(26.0f, 0.0f, 0.0f);
glScaled(1.5, 10.0 , 0.5);
glutSolidCube(0.5f);
glPopMatrix();
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(47.8f, 0.0f, 0.0f);
glScaled(1.5, 10.0 , 0.5);
//Plang
//Tiang kanan
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glPushMatrix();
glTranslatef(-4.045f, -2.98f, 5.3f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.045f, -4.98f, 8.8f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.045f, -2.98f, 5.3f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.045f, -4.98f, 8.8f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.045f, -3.38f, 6.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.045f, -5.38f, 9.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.045f, -3.38f, 6.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.045f, -3.78f, 6.7f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.045f, -3.78f, 6.7f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.045f, -4.18f, 7.4f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.045f, -4.18f, 7.4f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.045f, -4.58f, 8.1f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.045f, -4.58f, 8.1f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.045f, -5.38f, 9.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.45,0.1,1.795);
glutSolidCube(6.0f);
glPopMatrix();
}
void pagartangga()
{
//tiang pagar bawah
glPushMatrix();
glTranslatef(5.2f, -4.3f, 14.5f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, -4.3f, 14.5f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.9f, -4.3f, 14.5f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.9f, -4.3f, 14.5f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
//tiang pagar tengah
glPushMatrix();
glTranslatef(5.2f, -2.8f, 11.8f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, -2.8f, 11.8f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.9f, -2.8f, 11.8f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.9f, -2.8f, 11.8f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.9f, -1.6f, 11.4f);
glRotatef(32,1,0,0);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,0.2,7.6);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, -0.5f, 8.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 0.4f, 6.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,0.2,4.5);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.9f, -0.5f, 8.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.9f, -0.5f, 8.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 0.5f, 8.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(1.5,1.85,0.2);
glutSolidCube(1.0f);
glPopMatrix();
//pegangan pagar
glPushMatrix();
glTranslatef(5.2f, -1.6f, 11.4f);
glRotatef(32,1,0,0);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.2,0.2,7.6);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, -1.6f, 11.4f);
glRotatef(32,1,0,0);
glPushMatrix();
glTranslatef(-1.7f, 0.8f, 8.2f);
glRotatef(23,0,0,1);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(2.8,0.2,0.2);
glutSolidCube(1.0f);
glPopMatrix();
}
void lantai2()
{
glPushMatrix();
glTranslatef(0.0f, 3.2f, 0.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(1.2,1.8,1.2);
glutSolidCube(6.0f);
glPopMatrix();
}
void jendelalantai2()
{
//depan belakang
glPushMatrix();
glTranslatef(-1.8f, 4.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.4,1.85,2.47);
glutSolidCube(3.0f);
glPopMatrix();
glutSolidCube(3.0f);
glPopMatrix();
}
glPushMatrix();
glTranslatef(0.0f, 4.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.4,1.85,2.47);
glutSolidCube(3.0f);
glPopMatrix();
void pagarlantai2()
{
//depan kiri kanan
glPushMatrix();
glTranslatef(5.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.8f, 4.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.4,1.85,2.47);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(4.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
//relief tiang
glPushMatrix();
glTranslatef(3.1f, 4.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.18,1.9,2.45);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.1f, 4.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.18,1.9,2.45);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 4.8f, 3.1f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.45,1.9,0.18);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 4.8f, -3.1f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.45,1.9,0.18);
glutWireCube(3.0f);
glPopMatrix();
//kiri kanan
glPushMatrix();
glTranslatef(0.0f, 4.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.47,1.85,0.4);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 4.8f, 1.8f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.47,1.85,0.4);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 4.8f, -1.8f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.47,1.85,0.4);
glPushMatrix();
glTranslatef(3.2f, 2.08f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(4.3,0.3,0.4);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(3.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-1.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.2f, 2.08f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(4.3,0.3,0.4);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, 5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
//kiri
glPushMatrix();
glTranslatef(-5.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, -4.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, -3.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, -2.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, -1.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, 0.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 2.08f, 0.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.4,0.3,10.5);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, 1.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, 2.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, 3.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, 4.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
//kanan
glPushMatrix();
glTranslatef(5.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, -4.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, -3.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, -2.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, -1.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, 0.0f);
glPushMatrix();
glTranslatef(0.0f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 2.08f, 0.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.4,0.3,10.5);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 2.08f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(10.5,0.3,0.4);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, 1.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-1.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, 2.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, 3.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(5.2f, 1.3f, 4.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-4.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
//belakang
glPushMatrix();
glTranslatef(4.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(3.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-5.2f, 1.3f, -5.2f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.3,1.85,0.3);
glutSolidCube(1.0f);
glPopMatrix();
}
void lantai3()
{
glPushMatrix();
glTranslatef(0.0f, 11.5f, 0.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(1.1,1.5,1.1);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 8.6f, 0.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(1.28,0.08,1.28);
glutSolidCube(6.0f);
glPopMatrix();
}
void jendelalantai3()
//depan belakang
glPushMatrix();
glTranslatef(-1.7f, 12.2f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.35,1.8,2.25);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 12.2f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.35,1.8,2.25);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.7f, 12.2f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.35,1.8,2.25);
glutSolidCube(3.0f);
glPopMatrix();
//relief tiang
glPushMatrix();
glTranslatef(2.8f, 12.2f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.19,2.0,2.25);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.8f, 12.2f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.19,2.0,2.25);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 12.2f, 2.8f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.25,2.0,0.19);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 12.2f, -2.8f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.25,2.0,0.19);
glutWireCube(3.0f);
glPopMatrix();
//kiri kanan
glPushMatrix();
glTranslatef(0.0f, 12.2f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.25,1.8,0.35);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 12.2f, 1.7f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.25,1.8,0.35);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 12.2f, -1.7f);
}
void jendelalantai4()
{
//depan belakang
glPushMatrix();
glTranslatef(-1.2f, 19.4f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.5,1.4,2.08);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.2f, 19.4f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.5,1.4,2.08);
glutSolidCube(3.0f);
glPopMatrix();
//relief tiang
glPushMatrix();
glTranslatef(-2.5f, 19.4f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.18,1.9,2.08);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.5f, 19.4f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.18,1.9,2.08);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 19.4f, -2.5f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.08,1.9,0.18);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 19.4f, 2.5f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.08,1.9,0.18);
glutWireCube(3.0f);
glPopMatrix();
//kiri kanan
glPushMatrix();
glTranslatef(0.0f, 19.4f, 1.2f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.08,1.4,0.5);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.0f, 24.5f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.38,0.5,1.8);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 24.5f, 1.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(1.8,0.5,0.38);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 19.4f, -1.2f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(2.08,1.4,0.5);
glutSolidCube(3.0f);
glPopMatrix();
void lantai5()
{
glPushMatrix();
glTranslatef(0.0f, 25.5f, 0.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.89,1.0,0.89);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 22.8f, 0.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(1.07,0.08,1.07);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 24.5f, -1.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(1.8,0.5,0.38);
glutWireCube(3.0f);
glPopMatrix();
void jam()
{
//depan belakang
glPushMatrix();
glTranslatef(0.0f, 26.5f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(1.4,1.4,27.4);
glutWireTorus(0.1f, 0.8f, 12.0f, 12.0f);
glPopMatrix();
//relief tiang
glPushMatrix();
glTranslatef(-2.3f, 25.6f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.1,1.5,1.8);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 26.5f, 0.0f);
glRotatef(90, 5, 260, 0);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(1.4,1.4,27.4);
glutWireTorus(0.1f, 0.8f, 12.0f, 12.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.3f, 25.6f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.1,1.5,1.8);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 25.6f, -2.3f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(1.8,1.5,0.1);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 25.6f, 2.3f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(1.8,1.5,0.1);
glutWireCube(3.0f);
glPopMatrix();
//relief dinding
glPushMatrix();
glTranslatef(-1.0f, 24.5f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.38,0.5,1.8);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-0.3f, 26.4f, 2.6f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.3,0.01,0.1);
glutWireCube(3.0f);
glPopMatrix();
//jarum jam belakang
glPushMatrix();
glTranslatef(0.0f, 26.8f, -2.6f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.01,0.3,0.1);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.3f, 26.4f, -2.6f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.3,0.01,0.1);
glutWireCube(3.0f);
glPopMatrix();
//jarum jam kanan
glPushMatrix();
glTranslatef(2.6f, 26.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.1,0.3,0.01);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(2.6f, 26.4f, 0.3f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.1,0.01,0.3);
glutWireCube(3.0f);
glPopMatrix();
//jarum jam kiri
glPushMatrix();
glTranslatef(-2.6f, 26.8f, 0.0f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.1,0.3,0.01);
glutWireCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-2.6f, 26.4f, -0.3f);
glColor4f(0.0, 0.0, 0.0, 0.0);
glScalef(0.1,0.01,0.3);
glutWireCube(3.0f);
glPopMatrix();
}
//
void lantaiatas()
{
glPushMatrix();
glTranslatef(0.0f, 30.0f, 0.0f);
glColor4f(2.0, 2.0, 2.0, 2.0);
glScalef(0.7,0.8,0.7);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 28.5f, 0.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(1.2,0.08,1.2);
glutSolidCube(6.0f);
glPopMatrix();
//pagar depan
glPushMatrix();
glTranslatef(3.5f, 29.0f, 3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.25f, 29.0f, 3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 29.2f, 3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(2.4,0.05,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 29.7f, 3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(2.4,0.05,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-1.25f, 29.0f, 3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.5f, 29.0f, 3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
//pagar belakang
glPushMatrix();
glTranslatef(3.5f, 29.0f, -3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(1.25f, 29.0f, -3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 29.7f, -3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(2.4,0.05,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0f, 29.2f, -3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(2.4,0.05,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-1.25f, 29.0f, -3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.5f, 29.0f, -3.5f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
//pagar kanan
glPushMatrix();
glTranslatef(3.5f, 29.0f, 1.25f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(3.5f, 29.2f, 0.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.05,2.4);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(3.5f, 29.7f, -0.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.05,2.4);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(3.5f, 29.0f, -1.25f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
//pagar kiri
glPushMatrix();
glTranslatef(-3.5f, 29.0f, 1.25f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.5f, 29.2f, 0.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.05,2.4);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.5f, 29.7f, -0.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.05,2.4);
glutSolidCube(3.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-3.5f, 29.0f, -1.25f);
glColor4f(0.8, 0.8, 0.8, 0.8);
glScalef(0.05,0.5,0.05);
glutSolidCube(3.0f);
glPopMatrix();
}
void atap()
{
glPushMatrix();
glTranslatef(0.0f, 32.5f, 0.0f);
//glRotatef(-60.0f,1.0f,10.0f,10.0f);
glColor4f(0.8, 0.8, 0.8, 0.8);
//glScalef(1.0,1.0,3.0);
glBegin(GL_QUADS);
glVertex3f(-3.5f, -1.0f, -3.5f);
glVertex3f(0.0f, 6.0f, -3.3f);
glVertex3f(0.0f, 1.8f, -2.3f);
glVertex3f(3.5f,
glVertex3f(0.0f,
glVertex3f(0.0f,
glVertex3f(0.0f,
-1.0f, -3.5f);
6.0f, -3.3f);
1.8f, -2.3f);
1.0f, 0.0f);
glVertex3f(3.5f,
glVertex3f(0.0f,
glVertex3f(0.0f,
glVertex3f(0.0f,
-1.0f, 3.5f);
6.0f, 3.3f);
1.8f, 2.3f);
1.0f, 0.0f);
glVertex3f(3.5f,
glVertex3f(3.3f,
glVertex3f(2.3f,
glVertex3f(0.0f,
-1.0f, -3.5f);
6.0f, 0.0f);
1.8f, 0.0f);
1.0f, 0.0f);
glVertex3f(3.5f,
glVertex3f(3.3f,
glVertex3f(2.3f,
glVertex3f(0.0f,
-1.0f, 3.5f);
6.0f, 0.0f);
1.8f, 0.0f);
1.0f, 0.0f);
glutSolidCone(1.3,1,20,30);
glPopMatrix();
//Daun Atas
glPushMatrix();
glColor3f(0.5f, 0.7f, 0.1f);
glTranslatef(0.0f, 4.5f, 0.0f);
glRotatef(230, 1.5, 2, 2);
glScaled(2,2,3);
glutSolidCone(1.0,1,20,30);
glPopMatrix();
}
//POHON TAMAN
void pohontaman()
{
//Batang Pohon Tengah
glPushMatrix();
glColor3f(0.5f, 0.5f, 0.5f);
glTranslatef(0.0, 1.9, 0.0);
glScaled(0.3 , 7.5, 0.3);
glutSolidCube(0.5f);
glPopMatrix();
//Lantai
glPushMatrix();
glColor3f(1.0, 1.0, 1.0);
//glTranslatef(0.0, 3.6, 0.0);
glScaled(0.7, 0.09, 0.7);
glutSolidCube(0.5f);
glPopMatrix();
//Batang Pohon Kiri
glPushMatrix();
glColor3f(0.0f, 1.0f, 0.0f);
glTranslatef(0.0, 3.6, 0.0);
glRotatef(45, 0.0, 0.0, 2.0);
glScaled(0.15 ,5 ,0.15);
glutSolidCube(0.5f);
glPopMatrix();
//Batang Pohon Kanan
glPushMatrix();
glColor3f(0.8f, 0.8f, 0.0f);
glTranslatef(0.0, 3.6, 0.0);
glRotatef(45, 0.0, 0.0, -2.0);
glScaled(0.15 ,5 ,0.15);
glutSolidCube(0.5f);
glPopMatrix();
//Batang Pohon Depan
glPushMatrix();
glColor3f(1.0f, 0.0f, 0.0f);
glTranslatef(0.0, 3.6, 0.0);
glRotatef(45, 2.0, 0.0, 0.0);
glScaled(0.15 ,5 ,0.15);
glutSolidCube(0.5f);
glPopMatrix();
//Batang Pohon Belakang
glPushMatrix();
glColor3f(0.0f, 0.0f, 1.0f);
glTranslatef(0.0, 3.6, 0.0);
glRotatef(45, -2.0, 0.0, 0.0);
glScaled(0.15 ,5 ,0.15);
glutSolidCube(0.5f);
glPopMatrix();
//Batang Pohon Lurus
glPushMatrix();
//BANGKU TAMAN
void bangkutaman1()
{
//bangku taman depan
glPushMatrix();
glTranslatef(-11.5, 0.0, 2.0);
glColor3f(0.8f, 0.4f, 0.1f);
glScalef(7.3, 1.5, 2.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-11.5, 1.0, 3.2);
glColor3f(0.8f, 0.4f, 0.1f);
glScalef(7.3, 1.5, 0.3);
glutSolidCube(1.0f);
glPopMatrix();
}
void bangkutaman2()
{
//bangku taman belakang
glPushMatrix();
glTranslatef(-11.5, 0.0, -2.0);
glColor3f(0.8f, 0.4f, 0.1f);
glScalef(7.3, 1.5, 2.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-11.5, 1.0, -3.2);
glColor3f(0.8f, 0.4f, 0.1f);
//glRotatef(-8.5f, 1.0f, 0.0f, 0.0f);
glScalef(7.3, 1.5, 0.3);
glutSolidCube(1.0f);
glPopMatrix();
void bangkutaman3()
{
//bangku taman belakang
glPushMatrix();
glTranslatef(-11.5, 0.0, -0.0);
glColor3f(0.8f, 0.4f, 0.1f);
glScalef(2.3, 1.5, 7.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-10.5, 1.0, -0.0);
glColor3f(0.8f, 0.4f, 0.1f);
glScalef(0.3, 1.5, 7.3);
glutSolidCube(1.0f);
glPopMatrix();
}
void bangkutaman4()
{
//bangku taman belakang
glPushMatrix();
glTranslatef(-11.5, 0.0, -0.0);
glColor3f(0.8f, 0.4f, 0.1f);
glScalef(2.3, 1.5, 7.3);
glutSolidCube(1.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(-12.5, 1.0, -0.0);
glColor3f(0.8f, 0.4f, 0.1f);
glScalef(0.3, 1.5, 7.3);
glutSolidCube(1.0f);
glPopMatrix();
}
//JALUR TAMAN
void jalur()
{
//Dasar
glPushMatrix();
glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
glTranslatef(-0.9, 0.0, 0.0);
glScalef(3.0,0.02,4.5);
glutSolidCube(9.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(20.4, .0, -35.0);
//Dasar2
glPushMatrix();
glColor3f(0.0, 0.0, 0.0);
glTranslatef(0.0, 0.0, 28.5);
glScalef(1.7, 0.02, 1.9);
glutSolidCube(9.0f);
glPopMatrix();
//Trotoar kanan
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glTranslatef(0.0, 0.0, 20.3);
glScalef(1.6,0.1, 0.05);
glutSolidCube(9.0f);
glPopMatrix();
//Trotoar Kiri
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glTranslatef(0.0, 0.0, 36.7);
glScalef(1.6,0.1, 0.05);
glutSolidCube(9.0f);
glPopMatrix();
glPopMatrix();
}
//KINCIR
void kincir()
{ /*//Lantai
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(0.0, -15.0, 0.0);
glScalef(0.1,0.1,0.1);
glutSolidSphere(5, 20, 30);
glPopMatrix();
*/
glScalef(0.15,7.0,0.25);
glutSolidCube(6.0f);
glPopMatrix();
//Kipas
glPushMatrix();
glTranslatef(0.0, 23.0, 6.5);
glColor4f(0.0, 0.0, 0.0, 1.0);
glScalef(2.15, 2.0, 0.55);
glRotatef(sudutk, 0.0f, 0.0f, 1.0f);
glutWireTorus(1, 5, 10, 15);
glPopMatrix();
//Pemutar Depan
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(0.0, 23.0, 4.0);
glScalef(0.2,0.09,1.0);
glutSolidCube(6.0f);
glPopMatrix();
//Bulatan
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(0.0, 23.0, 6.5);
glScalef(0.2,0.2,0.2);
glutSolidSphere(5, 20, 30);
glPopMatrix();
//Pemutar Belakang
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(0.0, 22.0, -10.0);
glScalef(0.2,0.59,0.5);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0, 23.0, 6.5);
glColor4f(0.0, 0.0, 0.0, 1.0);
glScalef(1.15, 1.0, 0.55);
glRotatef(sudutk, 0.0f, 0.0f, 1.0f);
glutWireTorus(1, 5, 10, 15);
glPopMatrix();
glPushMatrix();
glTranslatef(0.0, 23.0, 6.5);
glColor4f(0.0, 0.0, 0.0, 1.0);
glScalef(0.55, 0.5, 0.55);
glRotatef(sudutk, 0.0f, 0.0f, 1.0f);
glutWireTorus(1, 5, 10, 15);
glPopMatrix();
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(0.0, 22.0, -5.0);
glScalef(0.2,0.19,1.7);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glColor4f(1.0, 1.8, 0.8, 0.8);
glTranslatef(0.0, 22.0, -10.0);
glScalef(0.8, 0.1, 0.5);
glutSolidCube(6.0f);
glPopMatrix();
//Tiang Kiri Depan
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(-7.5, 0.0, 2.5);
glScalef(0.15,7.0,0.25);
glutSolidCube(6.0f);
glPopMatrix();
//Tiang Kiri Belakang
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(-7.5, 0.0, -2.5);
glScalef(0.15,7.0,0.25);
glutSolidCube(6.0f);
glPopMatrix();
//Tiang Kanan Depan
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(7.5, 0.0, 2.5);
glScalef(0.15,7.0,0.25);
glutSolidCube(6.0f);
glPopMatrix();
//Tiang Kanan Belakang
glPushMatrix();
glColor4f(0.8, 0.8, 0.8, 0.8);
glTranslatef(7.5, 0.0, -2.5);
glPushMatrix();
glTranslatef(0.0, 23.0, 6.5);
glColor4f(0.0, 0.0, 0.0, 1.0);
glScalef(3.15, 3.0, 0.55);
glRotatef(sudutk, 0.0f, 0.0f, 1.0f);
glutWireTorus(1, 5, 10, 15);
glPopMatrix();
}
//PUTAR KIPAS
void putar(int value)
{
sudutk += 5.0f;
if (sudutk > 360){
sudutk -= 360;
}
glutPostRedisplay();
glutTimerFunc(25, putar, 0);
//BUS
void bus()
{
//Bodi
glColor3f(1.0, 0.8, 0.0);
glPushMatrix();
//glRotatef(sudutk, 0.0, 0.0, 1.0);
glTranslatef(0.0, 3.8, 0.0);
glScalef(4.0, 1.0, 1.5);
glutSolidCube(6.0f);
glPopMatrix();
//Kaca Belakang
glColor3f(0.0, 0.0, 1.0);
glPushMatrix();
glTranslatef(-12.0, 5.0, 0.0);
glScalef(0.05, 0.5, 1.2);
glutSolidCube(6.0f);
glPopMatrix();
//Lampu Rem
glColor3f(1.0, 0.0, 0.0);
glPushMatrix();
glTranslatef(-12.1, 2.0, -3.5);
glScalef(0.02, 0.19, 0.08);
glutSolidCube(6.0f);
glPopMatrix();
glColor3f(1.0, 0.0, 0.0);
glPushMatrix();
glTranslatef(-12.1, 2.0, 3.5);
glScalef(0.02, 0.19, 0.08);
glutSolidCube(6.0f);
glPopMatrix();
//Lampu Depan
glColor3f(1.0, 1.0, 1.0);
glPushMatrix();
glTranslatef(12.1, 2.0, -3.5);
glScalef(0.05, 0.02, 0.1);
glutSolidCube(6.0f);
glPopMatrix();
glColor3f(1.0, 1.0, 1.0);
glPushMatrix();
glTranslatef(12.1, 2.0, 3.5);
glScalef(0.05, 0.02, 0.1);
glutSolidCube(6.0f);
glPopMatrix();
//Kaca Depan
glColor3f(0.0, 0.0, 1.0);
glPushMatrix();
glTranslatef(12.0, 5.0, 0.0);
glScalef(0.05, 0.5, 1.2);
glutSolidCube(6.0f);
glPopMatrix();
//Kaca pinggir
glColor3f(0.0, 0.0, 1.0);
glPushMatrix();
glTranslatef(-1.5, 5.0, 4.0);
glScalef(3.3, 0.5, 0.2);
glutSolidCube(6.0f);
glPopMatrix();
glColor3f(0.0, 0.0, 1.0);
glPushMatrix();
glTranslatef(-1.5, 5.0, -4.0);
glScalef(3.3, 0.5, 0.2);
glutSolidCube(6.0f);
glPopMatrix();
//Pintu Kanan
glColor3f(0.5, 0.5, 0.5);
glPushMatrix();
glTranslatef(11.1, 3.9, 4.0);
glScalef(0.15, 0.8, 0.2);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glTranslatef(10.1, 5.1, 4.0);
glScalef(0.25, 0.4, 0.2);
glutSolidCube(6.0f);
glPopMatrix();
//Pintu Kiri
glColor3f(0.5, 0.5, 0.5);
glPushMatrix();
glTranslatef(11.1, 3.9, -4.0);
glScalef(0.15, 0.8, 0.2);
glutSolidCube(6.0f);
glPopMatrix();
glPushMatrix();
glColor3f(0.5, 0.5, 0.5);
glTranslatef(10.1, 5.1, -4.0);
glScalef(0.25, 0.4, 0.2);
glutSolidCube(6.0f);
glPopMatrix();
//Ban Belakang
glPushMatrix();
glColor3f(1.0, 1.0, 1.0);
glScalef(0.35, 0.35, 0.25);
glTranslatef(25.0, 4.5, 19.3);
glutSolidTorus(2, 3, 20, 30);
glPopMatrix();
//Velg
glPushMatrix();
glColor3f(0.0, 0.0, 0.0);
glScalef(0.5, 0.5, 0.5);
glTranslatef(17.5, 2.5, 8.0);
glutSolidSphere(2, 10, 20);
glPopMatrix();
glPushMatrix();
glColor3f(1.0, 1.0, 1.0);
glScalef(0.35, 0.35, 0.25);
glTranslatef(25.0, 4.5, -19.3);
glutSolidTorus(2, 3, 20, 30);
glPopMatrix();
//Velg
glPushMatrix();
glColor3f(0.0, 0.0, 0.0);
glScalef(0.5, 0.5, 0.5);
glTranslatef(-17.5, 2.5, 8.0);
glutSolidSphere(2, 10, 20);
glPopMatrix();
//Ban Depan
glPushMatrix();
glColor3f(1.0, 1.0, 1.0);
glScalef(0.35, 0.35, 0.25);
glTranslatef(-25.0, 4.5, -19.3);
glutSolidTorus(2, 3, 20, 30);
glPopMatrix();
//Velg
glPushMatrix();
glColor3f(0.0, 0.0, 0.0);
glScalef(0.5, 0.5, 0.5);
glTranslatef(17.5, 2.5, -8.0);
glutSolidSphere(2, 10, 20);
glPopMatrix();
glPushMatrix();
glColor3f(1.0, 1.0, 1.0);
glScalef(0.35, 0.35, 0.25);
glTranslatef(-25.0, 4.5, 19.3);
glutSolidTorus(2, 3, 20, 30);
glPopMatrix();
//Velg
glPushMatrix();
glColor3f(0.0, 0.0, 0.0);
glScalef(0.5, 0.5, 0.5);
glTranslatef(-17.5, 2.5, -8.0);
glPushMatrix();
glTranslatef(35.8,0.05,-45.0);
lampu();
glPopMatrix();
//LAMPU JALAN
for (int i = -2; i < 3; i++)
{
glPushMatrix();
glTranslatef(i*35, 5, 38);
lampuJalan();
glPopMatrix();
}
for (int i = -2; i < 3; i++)
{
glPushMatrix();
glTranslatef(i*35, 5, 11);
lampuJalan2();
glPopMatrix();
}
//BANGUNAN
glPushMatrix();
glTranslatef(18.0,-0.5,-25.0);
bangunan();
glPopMatrix();
//JALUR TAMAN
glPushMatrix();
glTranslatef(-28.0,-0.5,-25.0);
jalur();
glPopMatrix();
//JAM GADANG
glPushMatrix();
glTranslatef(18.0, 9.0,-35.0);
glScaled(1.7, 1.7, 1.7);
lantai1();
jendelalantai1();
tangga();
pagartangga();
lantai2();
jendelalantai2();
pagarlantai2();
lantai3();
jendelalantai3();
lantai4();
jendelalantai4();
lantai5();
jam();
lantaiatas();
atap();
glPopMatrix();
//POHON
for (int i = -5; i < 5; i++)
{
glPushMatrix();
glTranslatef(i*15, 1, 54);
pohon();
glPopMatrix();
}
glPushMatrix();
glTranslatef(75.0,1,54.0);
pohon();
glPopMatrix();
//Pohon belakang
glPushMatrix();
glTranslatef(65.0,7,-35.0);
pohon();
glPopMatrix();
//Pohon Pinggir
glPushMatrix();
glTranslatef(-50, 1.2, -45);
pohon();
glPopMatrix();
//Pohon Pinggir
glPushMatrix();
glTranslatef(-55, 1.2, -15);
pohon();
glPopMatrix();
//Pohon Pinggir
glPushMatrix();
glTranslatef(-62, 1.2, 1.7);
pohon();
glPopMatrix();
//Pohon Taman Depan
glPushMatrix();
glColor4f(0.0f, 0.8f, 0.0f, 1.0f);
glScalef(3.0, 3.0, 3.0);
glTranslatef(-5.5, -0.1, -1.7);
pohontaman();
glPopMatrix();
//Pohon Taman Depan
glPushMatrix();
glColor4f(0.0f, 0.8f, 0.0f, 1.0f);
glScalef(3.0, 3.0, 3.0);
glTranslatef(-13.9, -0.1, -1.7);
pohontaman();
glPopMatrix();
//Pohon Taman Belakang
glPushMatrix();
glColor4f(0.0f, 0.8f, 0.0f, 1.0f);
glScalef(3.0, 3.0, 3.0);
glTranslatef(-5.5, -0.1, -14.9);
pohontaman();
glPopMatrix();
//Pohon Taman Belakang
glPushMatrix();
glColor4f(0.0f, 0.8f, 0.0f, 1.0f);
glScalef(3.0, 3.0, 3.0);
glTranslatef(-13.9, -0.1, -14.9);
pohontaman();
glPopMatrix();
//Pohon Taman Tengah
glPushMatrix();
glColor4f(0.0f, 0.8f, 0.0f, 1.0f);
glScalef(3.0, 3.0, 3.0);
glTranslatef(-9.5, -0.1, -8.9);
pohontaman();
glPopMatrix();
//Bangku Taman depan kiri
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-27.0,-0.1,-8.9);
bangkutaman1();
glPopMatrix();
//Bangku Taman depan kanan
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-8.0,-0.1,-8.9);
bangkutaman1();
glPopMatrix();
//Bangku Taman belakang kiri
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-27.0,-0.1,-41.0);
bangkutaman2();
glPopMatrix();
//Bangku Taman belakang kanan
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-8.0,-0.1,-41.0);
bangkutaman2();
glPopMatrix();
//Bangku Taman kanan belakang
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-5.5,-0.1,-40.5);
bangkutaman3();
glPopMatrix();
//Bangku Taman kanan depan
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-5.5,-0.1,-9.2);
bangkutaman3();
glPopMatrix();
//Bangku Taman kiri depan
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-29.5,-0.1,-9.2);
bangkutaman4();
glPopMatrix();
//Bangku Taman kiri belakang
glPushMatrix();
glScalef(1.0f,1.0f,1.0f);
glTranslatef(-29.5,-0.1,-40.5);
bangkutaman4();
glPopMatrix();
//MARKA JALAN
for (int i = -3; i < 4; i++)
{
glPushMatrix();
glTranslatef(i*22, 0.0, 25);
marka();
glPopMatrix();
}
//PAGAR
glPushMatrix();
glTranslatef(27, 0.0, 42);
pagar();
glPopMatrix();
//BUS
glPushMatrix();
_terrainAir =
loadTerrain("heightmapAir.bmp", 20);
//binding texture
}
static void kibor(int key, int x, int y) {
switch (key) {
case GLUT_KEY_HOME:
viewy++;
break;
case GLUT_KEY_END:
viewy--;
break;
case GLUT_KEY_UP:
viewz--;
break;
case GLUT_KEY_DOWN:
viewz++;
break;
case GLUT_KEY_RIGHT:
viewx++;
break;
case GLUT_KEY_LEFT:
viewx--;
break;
/*case GLUT_KEY_F1: {
light_ambient);
light_diffuse);
glLightfv(GL_LIGHT0, GL_AMBIENT,
glLightfv(GL_LIGHT0, GL_DIFFUSE,
glMaterialfv(GL_FRONT,
GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT,
GL_DIFFUSE, mat_diffuse);
}
;
break;
case GLUT_KEY_F2: {
glLightfv(GL_LIGHT0, GL_AMBIENT,
light_ambient2);
glLightfv(GL_LIGHT0, GL_DIFFUSE,
light_diffuse2);
glMaterialfv(GL_FRONT,
GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT,
GL_DIFFUSE, mat_diffuse);
}
;
break;*/
default:
break;
}
}
void newkeyboard(unsigned char key, int x, int y) {
/*if (key == 'd') {
spin = spin - 1;
if (spin > 360.0)
spin = spin - 360.0;
}
if (key == 'a') {
spin = spin + 1;
if (spin > 360.0)
spin = spin - 360.0;
}*/
if (key == 'q') {
viewz++;
}
if (key == 'e') {
viewz--;
}
if (key == 's') {
viewy--;
}
if (key == 'w') {
viewy++;
}
//UNTUK BUS
if (key == 'm'){
a+=-1;
d+=1;
b=0;
c=0;
}
else if (key=='n'){
d+=-1;
a+=1;
b=0;
c=0;
}
if (key == 27){ //ESC
exit(0);
}
}
glutReshapeFunc(reshape);
glutSpecialFunc(kibor);
glutKeyboardFunc(newkeyboard);
glLightfv(GL_LIGHT0, GL_SPECULAR,
light_specular);
glLightfv(GL_LIGHT0, GL_POSITION,
light_position);
glMaterialfv(GL_FRONT, GL_SPECULAR,
mat_specular);
glMaterialfv(GL_FRONT, GL_SHININESS,
high_shininess);
glColorMaterial(GL_FRONT, GL_DIFFUSE);