Anda di halaman 1dari 18

LAPORAN

GRAFIKA KOMPUTER
“Program 3D”

Disusun Oleh :

 Muhamad Recka Naufal.L (065117058)

 Agung Dwi.P (065117023)

 Riski Suganda (065117018)

UNIVERSITAS PAKUAN

PROGRAM STUDI ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

BOGOR

2019
KATA PENGANTAR

Assalamu’alaikum warahmatullahi wabarakatuh.


Segala puji bagi Allah SWT yang telah memberikan kami kemudahan
sehingga kami dapat menyelesaikan makalah ini dengan tepat waktu. Tanpa
pertolongan-Nya tentunya kami tidak akan sanggup untuk menyelesaikan makalah
ini dengan baik. Shalawat serta salam semoga terlimpah curahkan kepada baginda
tercinta kita yaitu Nabi Muhammad SAW yang kita nanti-natikan syafa’atnya di
akhirat nanti.
Penulis mengucapkan syukur kepada Allah SWT atas limpahan nikmat
sehat-Nya, baik itu berupa sehar fisik maupun akal pikiran, sehingga penulis
mampu untuk menyelesaikan pembuatan laporan “Program 3D” mata kuliah
Grafika Komputer
Penulis tentu menyadari bahwa makalah ini masih jauh dari kata sempurna
dan masih banyak terdapat kesalahan serta kekurangan di dalamnya. Untuk itu,
penulis mengharapkan kritik serta saran dari pembaca untuk makalah ini, supaya
makalah ini nantinya dapat menjadi makalah yang lebih baik lagi. Demikian, dan
apabila terdapat banyak kesalahan pada makalah ini penulis mohon maaf yang
sebesar-besarnya.

Bogor, Mei 2019

Penyusun

i
Daftar Isi

Contents
KATA PENGANTAR ........................................................................................................ i

Daftar Isi ............................................................................................................................ ii

BAB I PENDAHULUAN .................................................................................................. 1

1.1 Latar Belakang .................................................................................................... 1

1.2 Tujuan ....................................................................................................................... 1

BAB II Dasar Teori ........................................................................................................... 2

2.1 Algoritma Yang Dipakai ........................................................................................... 2

2.1.1 Algoritma Garis Bresenham............................................................................... 2

2.1.2 Algoritma Menggambar Polygon....................................................................... 3

2.2 Source Code .............................................................................................................. 4

2.3 Output ..................................................................................................................... 12

BAB III Hasil dan Pembahasan..................................................................................... 14

3.1 Hasil ........................................................................................................................ 14

3.2 Pembahasan............................................................................................................. 14

DAFTAR PUSTAKA ...................................................................................................... 15

ii
BAB I
PENDAHULUAN

1.1 Latar Belakang


3D atau 3 Dimensi adalah sebuah objek / ruang yang memiliki panjang,
lebar dan tinggi yang memiliki bentuk. 3D tidak hanya digunakan dalam
matematika dan fisika saja melainkan dibidang grafis, seni, animasi, komputer dan
lain-lain. Konsep tiga dimensi atau 3D menunjukkan sebuah objek atau ruang
memiliki tiga dimensi geometris yang terdiri dari: kedalaman, lebar dan tinggi.
Contoh tiga dimensi suatu objek / benda adalah bola, piramida atau benda spasial
seperti kotak sepatu.
Istilah "3D" juga (dan salah) yang digunakan (terutama bahasa Inggris)
untuk menunjukkan representasi dalam grafis komputer (digital), dengan cara
menghilangkan gambar stereoscopic atau gambar lain dalam pemberian bantuan,
dan bahkan efek stereo sederhana, yang secara konstruksi membuat efek 2D (dalam
perhitungan proyeksi perspektif, shading)
Karakteristik 3D mengacu pada tiga dimensi spasial, bahwa 3D
menunjukkan suatu titik koordinat Cartesian X, Y dan Z. Penggunaan istilah 3D ini
dapat digunakan di berbagai bidang dan sering dikaitkan dengan hal-hal lain seperti
spesifikasi kualitatif tambahan (misalnya: grafis tiga dimensi, 3D video, film 3D,
kacamata 3D, suara 3D). Istilah ini biasanya digunakan untuk menunjukkan
relevansi jangka waktu tiga dimensi suatu objek, dengan gerakan perspektif untuk
menjelaskan sebuah "kedalaman" dari gambar, suara, atau pengalaman taktil.
Ketidakjelasan istilah ini menentukan penggunaannya dalam beberapa kasus yang
tidak jelas juga yaitu penggunaannya tidak hanya pada contoh-contoh diatas
melainkan (sering dalam iklan dan media).
1.2 Tujuan
Adapun tujuan dari pembuatan laporan ini adalah sebagai berikut :

1. Menerapkan algoritma garis bresenham dan menggambar polygon.

2. Membuat object 3D dengan transformasi 3D.

1
BAB II
Dasar Teori

2.1 Algoritma Yang Dipakai


 Algoritma Garis Bresenham
 Algoritma Polygon

2.1.1 Algoritma Garis Bresenham


Algoritma ini dikembangkan oleh Bresenham. Algoritma ini juga
Berdasarkan selisih antara garis yang diinginkan terhadap setengah ukuran dari
pixel yang sedang digunakan. Berikut ini adalah algoritma garis bresenham :
Untuk dx > dy

Untuk dx<dy

2
2.1.2 Algoritma Menggambar Polygon
Polygon adalah bentuk yang disusun dari serangkaian garis. Polygon
memiliki titik sudut (vertex) dan garis penyusun (edge).
Sebuah polygon selalu mempunyai properti dasar :
 jumlah vertex
 koordinat vertex
 data lokasi tiap vertex
Polyon memilik operasi-operasi sebagai berikut :
– Menginisialisasi polygon
inisialisasi terhadap polygon perlu dilakukan untuk mengatur agar field vertnum
berisi 0.
– Menyisipkan vertex
menyimpan informasi tentang vertex dan menyesuaikan informasi tentang jumlah
vertex dengan menambahkan satu ke vertnum.
– Menggambar polygon

3
mengunjungi vertex satu per satu dan menggambar edge dengan koordinat
(vertexi.x, vertexi.y) – (vertex i+1.x – vertex i+1.y) dari vertex nomor satu sampai
vertnum – 1. Khusus untuk edge terakhir mempunyai koordinat (vertexvertnum.x
, vertexvertnum.y) – (vertex1.x – vertex1.y).
– Mewarnai polygon
Mengisi area yang dibatasi oleh edge polygon dengan warna tertentu.
Berikut ini adalah algoritma menggambar Polygon :
index = 1
selama index < jumlah_vertex lakukan
vertex1 = ambil vertex ke[index]
jika index = jumlah_vertex maka
vertex2 = ambil vertex ke[1]
tetapi jika tidak maka
vertex2 = ambil vertex ke[index+1]
x1 = vertex1.x
y1 = vertex1.y
x2 = vertex2.x
y2 = vertex2.y
gambar garis dari (x1,y1) ke (x2,y2)
index = index +1
akhir selama index ≥ jumlah_vertex

2.2 Source Code


#include<gl/gl.h>

#include<gl/glut.h>

GLfloat xRotated, yRotated, zRotated; //deklarasi sumbu rotasi x,y,z

void Display(void) //menampilkan

glClear(GL_COLOR_BUFFER_BIT);

glLineWidth(5.0f);//ketebelan objek

glLoadIdentity(); //definisi objek

glTranslatef(0.0,0.0,-2.0);//merubah titik koordinat

4
glRotatef(xRotated,0.0,0.0,0.0);//menentukan bentuk rotasi

glRotatef(yRotated,0.0,1.0,0.0);

glRotatef(zRotated,0.0,0.0,0.0);

glBegin(GL_POLYGON); // polygon kotak hitam besar depan

glColor3f(0.245f,0.245f,0.245f);

glVertex3f(-0.50, 0.60, 0.00);

glVertex3f(0.50, 0.60, 0.00);

glVertex3f(0.50, -0.20, 0.00);

glVertex3f(-0.50, -0.20, 0.00);

glEnd(); //menutup

glFlush(); //menutup vertex

glBegin(GL_POLYGON); // polygon kotak yang besar belakang

glColor3f(0.245f,0.245f,0.245f);

glVertex3f(-0.50, 0.60, -0.10);

glVertex3f(0.50, 0.60, -0.10);

glVertex3f(0.50, -0.20, -0.10);

glVertex3f(-0.50, -0.20, -0.10);

glEnd();

glFlush();

glBegin(GL_POLYGON); // polygon kotak hitam besar samping atas /// terisi penuh
warnanya karna titik awal akan mencari titik akhir untuk dihubungi

glColor3f(0.245f,0.245f,0.245f);

glVertex3f(-0.50, 0.60, 0.00);

glVertex3f(0.50, 0.60, 0.00);

glVertex3f(0.50, 0.60, -0.10);

5
glVertex3f(-0.50, 0.60, -0.10);

glEnd();

glFlush();

glBegin(GL_POLYGON); // polygon kotak hitam besar samping bawah

glColor3f(0.245f,0.245f,0.245f);

glVertex3f(0.50, -0.20, 0.00);

glVertex3f(-0.50, -0.20, 0.00);

glVertex3f(-0.50, -0.20, -0.10);

glVertex3f(0.50, -0.20, -0.10);

glEnd();

glFlush();

glBegin(GL_POLYGON); // polygon kotak hitam besar samping kanan

glColor3f(0.245f,0.245f,0.245f);

glVertex3f(0.50, 0.60, 0.00);

glVertex3f(0.50, -0.20, 0.00);

glVertex3f(0.50, -0.20, -0.10);

glVertex3f(0.50, 0.60, -0.10);

glEnd();

glFlush();

/////////////////////////////////////////////////////////////////////////////////////////

6
glBegin(GL_LINE_LOOP); // 1 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(0.20, 0.50, 0.00);

glVertex3f(-0.20, 0.35, 0.00);

glVertex3f(-0.20, 0.35, 0.10);

glVertex3f(0.20, 0.50, 0.10);

glEnd();

glFlush();

glBegin(GL_LINE_LOOP); // 2 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(-0.20, 0.35, 0.00);

glVertex3f(-0.20, 0.27, 0.00);

glVertex3f(-0.20, 0.27, 0.10);

glVertex3f(-0.20, 0.35, 0.10);

glEnd();

glFlush();

glBegin(GL_LINE_LOOP); // 3 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(-0.20, 0.27, 0.00);

glVertex3f(0.00, 0.20, 0.00);

glVertex3f(0.00, 0.20, 0.10);

glVertex3f(-0.20, 0.27, 0.10);

glEnd();

glFlush();

7
glBegin(GL_LINE_LOOP); // 4 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(0.00, 0.20, 0.00);

glVertex3f(-0.20, 0.10, 0.00);

glVertex3f(-0.20, 0.10, 0.10);

glVertex3f(0.00, 0.20, 0.10);

glEnd();

glFlush();

glBegin(GL_LINE_LOOP); // 5 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(-0.20, 0.10, 0.00);

glVertex3f(-0.20, 0.00, 0.00);

glVertex3f(-0.20, 0.00, 0.10);

glVertex3f(-0.20, 0.10, 0.10);

glEnd();

glFlush();

glBegin(GL_LINE_LOOP); // 6 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(-0.20, 0.00, 0.00);

glVertex3f(0.20, 0.17, 0.00);

glVertex3f(0.20, 0.17, 0.10);

glVertex3f(-0.20, 0.00, 0.10);

glEnd();

glFlush();

8
glBegin(GL_LINE_LOOP); // 7 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(0.20, 0.17, 0.00);

glVertex3f(0.20, 0.25, 0.00);

glVertex3f(0.20, 0.25, 0.10);

glVertex3f(0.20, 0.17, 0.10);

glEnd();

glFlush();

glBegin(GL_LINE_LOOP); // 8 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(0.20, 0.25, 0.00);

glVertex3f(0.00, 0.30, 0.00);

glVertex3f(0.00, 0.30, 0.10);

glVertex3f(0.20, 0.25, 0.10);

glEnd();

glFlush();

glBegin(GL_LINE_LOOP); // 9 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(0.00, 0.30, 0.00);

glVertex3f(0.20, 0.40, 0.00);

glVertex3f(0.20, 0.40, 0.10);

glVertex3f(0.00, 0.30, 0.10);

glEnd();

glFlush();

9
glBegin(GL_LINE_LOOP); // 10 logo sublime text 3

glColor3f(1.0f,0.50f,0.00f);

glVertex3f(0.20, 0.40, 0.00);

glVertex3f(0.20, 0.50, 0.00);

glVertex3f(0.20, 0.50, 0.10);

glVertex3f(0.20, 0.40, 0.10);

glEnd();

glFlush();

glPointSize(10.0);//mengubah ukuran titik tengah

glBegin(GL_POINTS);

glColor3f(0.0f,0.0f,0.0f);

glVertex3f(0.0,-0.05,0.0);

glEnd();

glFlush();

glutSwapBuffers(); //fungsi perpindahan

void Reshape(int x, int y)//fungsi

if(y==0||x==0)return;

glMatrixMode(GL_PROJECTION); //fungsi mode proyeksi

10
glLoadIdentity();//memanggil matriks identity jadikan status matriks(proyeksi)

gluPerspective(40.0,(GLdouble)x/(GLdouble)y,0.5,20.0);//perbesar objek

glMatrixMode(GL_MODELVIEW); //mengatur model display objek

void Idle(void)

xRotated +=0.0;//mengatur kecepatan rotasi bergerak

yRotated +=0.05;

zRotated +=0.0;

Display(); //menampilkan gerakan rotasi

int main (int argc, char **argv){//argc(argument for count)=tipe int, fungsi
menunjukan banyak parameter dlm eksekusi program

glutInit(&argc,argv);//argv(argument for vektor)=tipe string, fungsi menyimpan


parameter apa saja dlm eksekusi program

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

glutInitWindowSize(840,680);

glutCreateWindow("Grafkom");

glClearColor(0.0,1.0,1.0,1.0);

glutDisplayFunc(Display);//nampilin output dari void display

glutReshapeFunc(Reshape);//memanggil fungsi reshape

glutIdleFunc(Idle);

glutMainLoop();

return 0;

11
2.3 Output

12
13
BAB III
Hasil dan Pembahasan

3.1 Hasil

3.2 Pembahasan
Dalam pembuatan program 3D ini, kami menggunakan kordinat sumbu x
dan y untuk 2D dan sumbu z untuk 3D. Kami juga menggunakan algoritma-
algoritma dalam grafika komputer untuk memudahkan pembuatan object-object
yang dibuat. Algoritma yang kami pakai adalah algoritma garis bresenham untuk
menggambar garis dan algoritma menggambar polygon untuk menggambar
polygon. Setelah object terbuat maka kami menambahkan efek transformasi 3D
berupa translasi dan rotasi dengan glTranslatef dan glRotatef.

Translasi untuk menentukan seberapa besar objek dekat dengan titik


koordinat. Kemudian rotasi untuk menentukan gerakan objek ingin mengarah
kemana, x untuk arah vertikal, y untuk arah horizontal, z untuk arah diagonal.

14
DAFTAR PUSTAKA

https://en.wikipedia.org/wiki/bresenham_line_algorithm Diakses Tanggal 15 Mei


2019.
http://azwarni.blogspot.com/2013/09/pembetukan-garis-dengan-algoritma.html
Diakses Tanggal 15 Mei 2019.
http://rezkysy.blogspot.com/2012/09/algoritma-bresenham.html Diakses Tanggal
15 Mei 2019.

15

Anda mungkin juga menyukai