laporan praktikum komputer grafik

34
LAPORAN PRAKTIKUM KOMPUTER GRAFIK UNIVERSITAS PEMBANGUNAN PANCA BUDI FAKULTAS TEKNIK JURUSAN SISTEM KOMPUTER MEDAN 2014 Nama Praktikan NPM Mahasiswa Tanggal Pengumpulan Tanda tangan Praktikan Tanda Tangan Dosen Lian Rahmad Iskandar 1214370238 Nama Dosen Pewampu Tanggal Penilaian Nilai Tanda Tangan Dosen Pewampu Indri Sulistianingsih,S.Kom Kelas TI 4 Sore C

Upload: lian-rahmad-iskandar

Post on 28-Dec-2015

383 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: Laporan Praktikum Komputer Grafik

LAPORAN PRAKTIKUM

KOMPUTER GRAFIK

UNIVERSITAS PEMBANGUNAN PANCA BUDI

FAKULTAS TEKNIK

JURUSAN SISTEM KOMPUTER

MEDAN

2014

Nama

Praktikan

NPM

Mahasiswa

Tanggal

Pengumpulan

Tanda tangan

Praktikan

Tanda Tangan

Dosen

Lian Rahmad Iskandar

1214370238

Nama Dosen

Pewampu

Tanggal

Penilaian

Nilai Tanda Tangan

Dosen Pewampu

Indri Sulistianingsih,S.Kom

Kelas

TI 4 Sore C

Page 2: Laporan Praktikum Komputer Grafik

i

DAFTAR ISI

Daftar Isi .................................................................................................................i

Kata Pengantar ...................................................................................................... ii

BAB I : PENDAHULUAN

1.1 Defenisi Komputer Grafik .......................................................................... 1

1.2 Peranan dan Penggunaan Komputer Grafik ................................................ 1

1.3 Aplikasi Pendukung : OpenGL ................................................................... 1

1.4 Tujuan ......................................................................................................... 1

BAB II : Landasan Teori

A. Sejarah OpenGL....................................................................................... 2

B. Pengenalan OpenGL ................................................................................ 2

C. Cara Kerja OpenGL ................................................................................. 4

- Inisialisasi Awal ................................................................................. 4

- Pembuatan Gambar ............................................................................ 5

- Primitive Grafik ................................................................................. 6

- Gambar 2D ......................................................................................... 9

- Gambar 3D ......................................................................................... 9

BAB III : Praktikum

1 Gambar 2 Dimensi ....................................................................................... 10

o Jajar Genjang .................................................................................... 10

o Bunga ................................................................................................ 12

3.2 Gambar 3D ................................................................................................ 17

o Kubus ................................................................................................ 17

BAB IV : Analisa Hasil Percobaan

- Analisa dari percobaan gambar jajar Genjang ............................. 28

- Analisa dari percobaan gambar Bunga ........................................ 28

- Analisa dari percobaan gambar Kubus ........................................ 24

PENUTUP............................................................................................................ iii

DAFTAR PUSTAKA .......................................................................................... iv

Page 3: Laporan Praktikum Komputer Grafik

ii

KATA PENGANTAR

Assalamualaikum Wr.Wb

Segala puji bagi Allah SWT yang telah memberikan kesempatan, kesehatan dan beribu

rahmat nya sehingga penulis dapat melaksanakan laporan praktikum ini sebaik – baik nya dan

tepat waktu.

Tulisan ini adalah tugas akhir dalam mata kuliah computer graphic di semester IV. Tidak

banyak kendala yang berarti yang penulis hadapi dalam pembuatan laporan praktikum mata

kuliah computer graphic ini, namun penulis tetap dibantu oleh teman – teman yang

memberikan informasi yang sangat membantu.

Semoga Laporan pratikum dapat baca dan di pahami oleh pembaca sebagai wawasan dan

dapat juga menerapkan nya serta juga sebagai acuan atau contoh sehingga laporan ini bisa

bermanfaat untuk pembaca baik mahasiswa maupun masyarakat awam.

Saya sadar bahwa makalah ini masih banyak kekurangan dan jauh dari sempurna. Untuk itu,

kepada dosen pembimbing saya meminta masukannya demi perbaikan pembuatan

makalah saya di masa yang akan datang dan mengharapkan kritik dan saran dari para

pembaca.

Medan, 10 Juni 2014

Lian Rahmad Iskandar

Page 4: Laporan Praktikum Komputer Grafik

1

BAB I : PENDAHULUAN

1.1 Defenisi Komputer Grafik

Menurut Arntson (1988), komputer grafik adalah adalah komputer yang

mampu menggambar atau menampilkan sebuah informasi yang berupa gambar

atau ilustrasi. Grafika komputer merupakan suatu bidang yang mempelajari

bagaimana menghasilkan suatu gambar menggunakan computer. Komputer grafis

ini terdiri atas satu set piranti untuk menciptakan gambar yang dapat berinteraksi

secara alamiah dengan penggunanya. Peralatan-peralatan itu terdiri atas perangkat

keras (hardware) dan perangkat lunak (software) yang secara bersama-sama

memungkinkan pemogram untuk menampilkan program dengan kemampuan

grafik yang canggih. Data ditampilkan secara visual melalui bentuk, warna dan

tekstur secara lebih baik dibandingkan sekedar tabel-tabel angka, sebab syaraf

sistem mata lebih mengenali dan memahami penyampaian pesan secara visual.

1.2 Peranan dan Penggunaan Komputer Grafik

Grafika komputer telah menunjukkan kemajuan yang pesat dalam

pengembangan berbagai aplikasi untuk menghasilkan gambar. Walaupun pada

awalnya aplikasi dalam sains dan engineering memerlukan peralatan yang mahal,

perkembangan teknologi komputer memberikan kemudahan penggunaan komputer

sebagai alat bantu aplikasi grafik komputer interaktif. Pada saat ini grafika

komputer digunakan secara rutin dibidang ilmu pengetahuan, teknik, kedokteran,

bisnis, industri, pemerintahaseni, hiburan, pendidikan, periklanan, dan lain

sebagainya.

1.3 Aplikasi Pendukung : OpenGL

OpenGL adalah spesifikasi standar yang mendefinisikan sebuah lintas-bahasa,

lintas platform API untuk mengembangkan aplikasi yang menghasilkan grafis

komputer 2D maupun3D. Antarmuka terdiri dari lebih dari 250 panggilan fungsi

yang berbeda yang dapat digunakan untuk menggambar tiga dimensi yang adegan-

adegan kompleks dari bentuk-bentuk primitif sederhana.

1.4 Tujuan

1. Memahami pembuatan graphic pada layar computer

2. Bahan Ujian

2. Mampu membuat suatu gambar 2D / 3D

Page 5: Laporan Praktikum Komputer Grafik

2

BAB II : LANDASAN TEORI

A.Sejarah OpenGL

Tahun 1980-an, mengembangkan perangkat lunak yang dapat berfungsi dengan

berbagai hardware grafik adalah tantangan nyata. Pengembang perangkat lunak antarmuka

dan kebiasaan menulis driver untuk setiap perangkat keras. Ini mahal dan mengakibatkan

banyak duplikasi usaha.

Pada awal 1990-an, Silicon Graphics (SGI) adalah seorang pemimpin dalam grafik

3D untuk workstation. Mereka IRIS GL API dianggap keadaan seni dan menjadi standar

industri defacto, membayangi terbuka berbasis standar PHIGS. Ini karena GL IRIS dianggap

lebih mudah digunakan, dan karena itu mendukung modus langsung rendering. By contrast,

Sebaliknya, PHIGS dianggap sulit untuk digunakan dan ketinggalan zaman dalam hal

fungsionalitas.

SGI‟s pesaing (termasuk Sun Microsystems, Hewlett-Packard dan IBM) juga dapat

membawa ke pasar 3D hardware, didukung oleh ekstensi yang dibuat pada PHIGS standar.

Hal ini pada gilirannya menyebabkan pangsa pasar SGI untuk melemahkan karena lebih

banyak hardware grafik 3D pemasok memasuki pasar. Dalam upaya untuk mempengaruhi

pasar, SGI memutuskan untuk mengubah IrisGL API menjadi standar terbuka. SGI

menganggap bahwa IrisGL API itu sendiri tidak cocok untuk membuka karena masalah

lisensi dan paten. Juga, IrisGL memiliki fungsi-fungsi API yang tidak relevan dengan grafik

3D. Sebagai contoh, termasuk windowing, keyboard dan mouse API, sebagian karena

dikembangkan sebelum Sistem X Window dan Sun‟s NEWS sistem dikembangkan. Selain

itu, SGI memiliki sejumlah besar pelanggan perangkat lunak; dengan mengubah ke OpenGL

API mereka berencana untuk mempertahankan pelanggan mereka terkunci ke SGI (dan IBM)

hardware untuk beberapa tahun sementara pasar dukungan untuk OpenGL matang.

Sementara itu, SGI akan terus berusaha untuk mempertahankan pelanggan mereka terikat

pada hardware SGI dengan mengembangkan maju dan kepemilikan Iris Inventor dan Iris

Performer pemrograman API. Akibatnya, SGI merilis standar OpenGL.

B. Pengenalan OpenGL

OpenGL adalah sebuah program aplikasi interface yang digunakan untuk

mendefinisikan komputer grafis 2D dan 3D. Program lintas-platform API ini umumnya

Page 6: Laporan Praktikum Komputer Grafik

3

dianggap ketetapan standar dalam industri komputer dalam interaksi dengan komputer grafis

2D dan juga telah menjadi alat yang biasa untuk digunakan dengan grafis 3D. Singkatnya,

Open Graphics Library, OpenGL menghilangkan kebutuhan untuk pemrogram untuk menulis

ulang bagian grafis dari sistem operasi setiap kali sebuah bisnis akan diupgrade ke versi baru

dari sistem. Fungsi dasar dari OpenGL adalah untuk mengeluarkan koleksi perintah khusus

atau executable kesistem operasi. Dengan demikian, program ini bekerja dengan perangkat

keras grafis yang ada yang berada pada hard drive atau sumber tertentu lainnya. Setiap

perintah dalam dirancang untuk melakukan tindakan tertentu, atau memulai efek khusus

tertentu yang terkait dengan grafis.

OpenGL adalah suatu spesifikasi grafik yang low-level yang menyediakan fungsi

untuk pembuatan grafik primitif termasuk titik, garis, dan lingkaran. OpenGL digunakan

untuk

keperluan-keperluan pemrograman grafik. OpenGL bersifat Open-Source, multi-platform dan

multi-language serta digunakan mendefinisikan suatu objek, baik objek 2 dimensi maupun

objek 3 dimensi. OpenGL juga merupakan suatu antarmuka pemrograman aplikasi

(application programming interface (API) yang tidak tergantung pada piranti dan platform

yang digunakan, sehingga OpenGL dapat berjalan pada sistem operasi Windows, UNIX dan

sistem operasi lainnya.

OpenGL pada awalnya didesain untuk digunakan pada bahasa pemrograman C/C++,

namun dalam perkembangannya OpenGL dapat juga digunakan dalam bahasa pemrograman

yang lain seperti Java, Tcl, Ada, Visual Basic, Delphi, maupun Fortran. Namun OpenGL di-

package

secara berbeda-beda sesuai dengan bahasa pemrograman yang digunakan. Oleh karena itu,

package OpenGL tersebut dapat di-download pada situs http://www.opengl.org sesuai dengan

bahasa pemrograman yang akan digunakan.OpenGl melayani dua tujuan :

Untuk menyembunyikan kompleksitas dari interfacing dengan berbagai 3D

accelerators, memamerkan oleh programmer dengan satu, seragam API.

Untuk menyembunyikan kemampuan yang berbeda dari hardware platform, oleh

semua yang memerlukan mendukung implementasi penuh fitur opengl set

(menggunakan software emulation jika diperlukan).

Page 7: Laporan Praktikum Komputer Grafik

4

C. Cara Kerja OpenGL

OpenGL lebih mengarah pada prosedural daripada sebuah deskriptif API grafis.Untuk

mendeskripsikan scene dan bagaimana penampilannya,sebenarnya programer lebih tau untuk

menentukan hal-hal yang dibutuhkan untuk menghasilkan efek yang di inginkan.Langkah

tersebut termasuk memanggil banyak perintah openGL,perintah tersebut digunakan untuk

menggambarkan grafik primitif seperti titik,garis dan poligon dalam tiga dimensi.Sebagai

tambahan,openGL mendukung lighting,shading,texture mapping,blending,transparancy,dan

banyak kemampuan efek khusus lainnya.OpenGL mempunyai bnayak fungsi dan penggunaan

perintah yang sangat luas, penggunaan openGL membutuhkan library tambahan yang harus

di letakkan pada direktory system dari windows (OS),yaitu :

OpenGL32.dll

Glu32.dll

Glut32.dll

- Inisialisasi awal

Inti dari tahapan ini adalah mengatur view port dan persepektif untuk penampilan obyek ke

dalam layar monitor,viewport adalah besarnya layar monitor(image) yang dipakai untuk

menampilkan obyek,sedangkan persepektif yang dimaksud adalah pengaturan sumbu z dalam

penampilan obyek 3 dimensi,sehingga user dapat melihat obyek seolah-olah dalam bidang 3

dimensi (X-Y-Z),selain itu penggambaran obyek yang dilakukan oleh programer juga dapat

menggunaan koordinat 3 dimensi.

Selain ke dua tujuan di atas pada tahap ini juga dilakukan koneksi awal dengan library

openGL, koneksi ini dilakukan supaya fungsi-fungsi yang di sediakan openGL dapat

digunakan. Fungsi/prosedur yang digunakan :

LoadGlut(„glut32.dll) -pemanggilan library openGL

InitGL –inisialisasi openGL awal yang harus dilakukan

glViewport –untuk pengaturan viewport

glMatrixMode –pengaturan viewport

gluPerspective –pengaturan persepektif

Page 8: Laporan Praktikum Komputer Grafik

5

Contoh script untuk inisialisasi openGL :

Try

LoadGlut(‘glut32.dll’);

InitGL;

Exept one :=

exeption

do

Begin

messageDlg

{ e.message, mtError, [mbOk],};

Halt {1}; End;

End;

Script di atas merupakan script yang paling sederhana, dalam artian minimal diperlukan

untuk

menginisialisasi penggunaan openGL.Fungsi-fungsi lain seperti yang disebut diatas seperti

glViewport, glMatrixMode, dapat di tambah kan pada script sesuai dengan kebutuhan.

- Pembuatan gambar

Didalam openGL pembuatan obyek dilakukan dengan titik-titik 3 dimensi,dengan mode

GL_QUARDS, maka otomatis setiap 4 titik digambar menjadi sebuah bidang segiempat,sed

angkan mode GL_LINES, pada setiap 2 titik digambar manjadi sebuah garis.Di dalam tahap

ini setiap garis atau bidang juga dapat di atur warnanya.

Fungsi atau prosedur yang digunakan :

mode GL_QUARDS –menggambarkan segi empat

mode GL_LINES –menggambark garis

glVertex3f-penentuan titik 3 dimensi

glColor3f –penentuan warna

Page 9: Laporan Praktikum Komputer Grafik

6

OpenGL memiliki lebih dari 200 fungsi. Fungsi tersebut

bisa dikelompokkan menjadi :

Fungsi primitif, menentukan elemen yang bisa menghasilkan gambar di layar. Fungsi

ini terdiri dari 2 jenis, yaitu primitif geometric seperti polygon (segi banyak) yang

bisa dibuat menjadi dua, tiga, atau empat dimensi, dan primitif gambar seperti

bitmaps.

Fungsi atribut, mengontrol tampilan dari primitif. Fungsi ini menentukan warna, jenis

garis, properti material, sumber cahaya, dan tekstur.

Fungsi pandangan, menentukan properti kamera. OpenGL menyediakan sebuah

virtual kamera yang bisa diposisikan dan diorientasikan relatif ke obyek yang

ditentukan dengan fungsi primitif. Lensa kamera juga bisa dikendalikan sehingga bisa

dihasilkan sudut

yang lebar dan pandangan telefoto (jarak jauh).

Fungsi windowing, fungsi ini mengendalikan windows pada layar dan penggunaan

dari mouse dan keyboard.

Fungsi kontrol, menghidupkan macam-macam fitur OpenGL.

Fungsi-fungsi OpenGL dimuat didalam 2 library yang disebut dengan gl dan glu

(atau GL dan GLU). Library yang pertama, adalah fungsi utama dari OpenGL, berisi

semua fungsi OpenGL yang dibutuhkan sedangkan yang kedua, openGL Utility

Llibrary (GLU) memuat fungsi yang ditulis menggunakan fungsi dari library utama

dan sangat

membantu bagi pengguna. Fungsi utama mempunyai nama yang diawali dengan “gl” seperti

“glVertex3f()”, sedangkan fungsi didalam GLU mempunyai nama yang diawali dengan “glu”

seperti “gluOrtho2D()”

- Primitive Grafik

Primitif objek merupakan salah satu subbab dari grafika komputer yang terdiri dari titik, garis

dan bangun dua dimensi. Dalam grafika komputer penghasilan citra menggunakan primitive

grafik dasar, primitif ini memudahkan untur merender atau menggambar pada layar monitor

sebagaimana penggunaan persamaan geometri sederhana. Contoh primitive grafika dasar

antara lain : titik, garis, kurva, fill areadan text. Objek kompleks dapat dibuat dengan

kombinasi dari primitive ini. Misalkan, Poligaris atau yang dapat didefinisikan sebagai urutan

Page 10: Laporan Praktikum Komputer Grafik

7

garis lurus yang saling terhubung. Secara umum algoritma grafis memiliki persamaan yaitu

bagaimana menampilkan hasil.

Primitive grafis yang umum dijelaskan pada tabel berikut :

Fungsi dasar menggambar titik. Berikut adalah beberapa fungsi didalam menggambar suatu

titik, antara lain :

- glVertex2i(x,y)

Yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai satuan

berupa integer.

Contoh glVertex2i(10,10)

o glVertex2f(x,y)

Yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai satuan

berupa float. Contoh glVertex2f(10.0,10.0)

o glVertex2d(x,y)

Yaitu suatu fungsi untuk menggambar titik pada koordinat x dan y, dengan nilai satuan

berupa double. Contoh glVertex2d(10.0,10.0);

Cara pendefinisian primitive objek yang digunakan dalam pembuatan suatu objek :

#define GL_POINTS

Primitif objek ini dipergunakan untuk menciptakan suatu titik.

# define GL_LINES

Primitif objek ini adalah suatu primitive objek guna menciptakan suatu garis

# define GL_LINE_LOOP

# define GL_LINE_STRIP

# define GL_TRIANGLES

OBJEK

GRAFIS

PRIMITIFE GRAFIS

Pixel (dot) Posisi (x,y) warna

Garis (line) Posisi (x1,x2,y1,y2),Warna,Thickness,Pattern

Lingkaran (circle) Pusat (x,y),Radius,Warna,Thickness,Pattern

Ellipse Pusat (x,y),Radius : Horisontal/Vertical,Warna,Thickness,Pattern

Kurva Teratur/Tidak teratur (Bezier)

Character Type,Slanted,Thickness,Colour DLL

Page 11: Laporan Praktikum Komputer Grafik

8

Triangle atau segitiga adalah tiga buah titik yang terhubung menjadi suatu

segitiga dengan blok di tengahnya.

# define GL_TRIANGLES_STRIP

Pada triangles strip jumlah vertex yang dipergunakan

adalah 4 buah vertex

# define GL_TRIANGLE_FAN

Triangles fan adalah pembuatan suatu objek dengan menggunakan segitiga

dimana hanya menggunakan 1 titik pusat saja.

# define GL_QUADS

Quad atau segempat adalah empat buah titik yang terhubung menjadi quat segi

empat dengan blok di tengahnya.

# define GL_QUADS_STRIP

Pada quads strip 4 buah vertex merupakan 1 kelompok.

Langkah rendering pada quads strip :

a.Nomor yang berhadap (membentuk 2 garis yang sejajar

b.Nomor ganjil dengan nomor ganjil dipertemukan

c.Nomor genap dengan nomor genap dipertemukan

d.Garis yang tersisa akan dipertemukan

# define GL_POLYGON

Polygon merupakan suatu fungsi yang mirip dengan polyline, tetapi

menghasilkan kurva tertutup dengan blok warna (fill). Rendering yang

dimiliki oleh GL_POLYGON sama dengan GL_TRIANGLE_FAN.

Catatan :

a) glLineWidth yaitu suatu fungsi yang berfungsi untuk mengatur tebalnya garis,

b) glPointSize yaitu suatu fungsi yang berfungsi untuk mengatur besarnya suatu objek,

c) gluOrtho2D yaitu suatu fungsi untuk mengatur proyeksi hasil eksekusi dan

mendefinisikan besarnya sistem koordinat dengan urutan kiri-kanan dan bawah-atas.

Untuk memberi warna pada objek, seperti titik atau garis, dapat dilakukan dengan

menggunakan fungsi glColor3f(red,green,blue). Di mana red, green, blue berada pada 0

sampai dengan 1, yang menunjukkan skala pencerahan dari masing-masing skala. Berikut

adalah beberapa fungsi color :

glColor3f(0,0,0);//black

Page 12: Laporan Praktikum Komputer Grafik

9

glColor3f(0,0,1);//blue

glColor3f(0,1,0);//green

glColor3f(0,1,1)//cyan

glColor3f(1,0,0)//red

glColor3f(1,0,1)//magenta

glColor3f(1,1,0);//yellow

glColor3f(1,1,1);//white

o Gambar 2 D

Primitive object 2D adalah suatu model pembuatan gambar yang mengacu kepada prespektif

2 titik. Umumnya object 2D ini merupakan suatu object yang terdiri dari sekumpulan titik-

titik yang menyambung (dihubungkan) menjadi satu dengan perantara garis lurus berupa

polyline, polygon maupun kurva.

o Gambar 3 D

Yang membedakan 2 dimensi dan 3 dimensi adalah kedalaman. Kedalaman didefinisikan

sebagai jarak antara viewer terhadap benda yang dia lihat. Ini berarti berbeda dengan 2

dimensi yang hanya menggunakan 2 ukuran, yaitu panjang dan lebar, maka 3 dimensi

menggunakan 3 ukuran, yaitu panjang, lebar dan kedalaman. Secara geometri ketiga ukuran

tersebut disimbolkan dengan sumbu x, y, dan z.

Page 13: Laporan Praktikum Komputer Grafik

10

BAB III : Pratikum

1. Gambar 2 Dimensi

o Jajar Genjang

glEnd();#include <GL/glut.h>

void userdraw()

{

static int tick=0;

void drawDot(int x,int y);

glBegin(GL_LINES);

glVertex2i(50,50);

glVertex2i(100,100);

glVertex2i(50,50);

glVertex2i(200,50);

glVertex2i(200,50);

glVertex2i(250,100);

glVertex2i(250,100);

glVertex2i(100,100);

}

void display(void)

{

//clear screen

glClear(GL_COLOR_BUFFER_BIT);

userdraw();

Page 14: Laporan Praktikum Komputer Grafik

11

glutSwapBuffers();

}

int main(int argc, char**argv)

{

glutInit(&argc,argv);//Inisialisasi Toolkit

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

glutInitWindowPosition(200,200);

glutInitWindowSize(640,480);

glutCreateWindow("Menampilkan Titik");

glClearColor(1.0f,0.0f,0.0f,0.0f);

gluOrtho2D(0.,640.,-240.,240.);

glutIdleFunc(display);

glutDisplayFunc(display);

glutMainLoop();

return 0;

}

Hasilnya

Page 15: Laporan Praktikum Komputer Grafik

12

o Bunga

#include <GL/glut.h>

#include <math.h>

typedef struct

{

int x,y;

}point2D_t;

typedef struct

{

float r,g,b;

}color_t;

void setColor (color_t col)

{

glColor3f(col.r, col.g, col.b);

}

void drawPolygon(point2D_t pnt[],int n)

{

int i;

glBegin(GL_POLYGON);

for (i=0; i<n; i++)

Page 16: Laporan Praktikum Komputer Grafik

13

{

glVertex2i(pnt[i].x,pnt[i].y);

}

glEnd();

}

void fillPolygon (point2D_t pnt[], int n, color_t color)

{

int i;

setColor(color);

glBegin(GL_POLYGON);

for (i=0; i<n; i++)

{

glVertex2f(pnt[i].x, pnt[i].y);

}

glEnd();

}

void userdraw()

{

point2D_t

batang[4]={{-5,-190},{-5,0},{5,0},{5,-190}};

Page 17: Laporan Praktikum Komputer Grafik

14

color_t biru ={0,1,1};

fillPolygon(batang,4, biru);

drawPolygon(batang,4);

point2D_t

pot[4]={{-60,-190},{60,-190},{30,-240},{-30,-240}};

color_t hitam ={0,0,1};

fillPolygon(pot,4, hitam);

drawPolygon(pot,4);

point2D_t

pot2[6]={{-80,-160},{-50,-160},{-50,-190},{-60,-190},{-60,-

170},{-80,-170}};

color_t hitam3 ={0,0,1};

fillPolygon(pot2,4, hitam3);

drawPolygon(pot2,4);

point2D_t

pot3[6]={{80,-160},{50,-160},{50,-190},{60,-190},{60,-

170},{80,-170}};

color_t hitam2 ={0,0,1};

fillPolygon(pot3,4, hitam2);

drawPolygon(pot3,4);

Page 18: Laporan Praktikum Komputer Grafik

15

static int tick=0;

point2D_t shape[360];

double srad,r;

for(int s=0; s<360; s++)

{

srad =(s+tick)*3.14/360;

r=80*sin(200*srad);

shape [s].x = (float)(r*cos(100*srad));

shape [s].y = (float)(r*sin(100*srad));

color_t merah ={1,0,1};

fillPolygon(shape,1, merah);

}

drawPolygon(shape, 360);

}

void display(void)

{

//clear screen

glClear(GL_COLOR_BUFFER_BIT);

userdraw();

glutSwapBuffers();

}

int main(int argc, char **argv)

Page 19: Laporan Praktikum Komputer Grafik

16

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

//posisi layar

glutInitWindowPosition(150,150);

//ukuran layar

glutInitWindowSize(640,480);

//title windows

glutCreateWindow("Bunga Raflesia");

//warna back layar

glClearColor(1.0,1.0,1.0,0.0);

gluOrtho2D(-300.,400.,-300.,300.);

glutIdleFunc(display);

glutDisplayFunc(display);

glutMainLoop();

return 0;

}

Page 20: Laporan Praktikum Komputer Grafik

17

2. Gambar 3 Dimensi

o Kubus 1

#include <GL/glut.h>

#include <math.h>

struct point {

float x,y,z;

};

struct vektor {

float v[4];

};

struct matriks {

float m[4][4];

};

struct face {

int jumtitikons;

int indextitik[40];

};

struct objek {

int jumtitik;

point titik[40];

Page 21: Laporan Praktikum Komputer Grafik

18

int jumsisi;

face sisi[30];

};

matriks mat;

float theta=0.5;

vektor point2vektor(objek balok, int i) {

vektor vec;

vec.v[0] = balok.titik[i].x;

vec.v[1] = balok.titik[i].y;

vec.v[2] = balok.titik[i].z;

vec.v[3] = 1;

return vec;

}

point vektor2point(vektor vec) {

point pnt;

pnt.x = vec.v[0];

pnt.y = vec.v[1];

pnt.z = vec.v[2];

return pnt;

}

matriks identitas(void) {

int i,j;

matriks mat;

for (i=0;i<4;i++) {

for (j=0;j<4;j++) {

if (i==j)

mat.m[i][j] = 1;

else

mat.m[i][j] = 0;

}

}

return mat;

}

Page 22: Laporan Praktikum Komputer Grafik

19

matriks translasi(float dx, float dy, float dz) {

matriks trans = identitas();

trans.m[0][3] = dx;

trans.m[1][3] = dx;

trans.m[2][3] = dx;

return trans;

}

matriks rotasiX(float theta) {

matriks rotate = identitas();

float cs = cos(theta);

float sn = sin(theta);

rotate.m[1][1] = cs;

rotate.m[1][2] = -sn;

rotate.m[2][1] = sn;

rotate.m[2][2] = cs;

return rotate;

}

matriks rotasiY(float theta) {

matriks rotate = identitas();

float cs = cos(theta);

float sn = sin(theta);

rotate.m[0][0] = cs;

rotate.m[0][2] = sn;

rotate.m[2][0] = -sn;

rotate.m[2][2] = cs;

return rotate;

}

matriks rotasiZ(float theta) {

matriks rotate = identitas();

float cs = cos(theta);

float sn = sin(theta);

rotate.m[0][0] = cs;

rotate.m[0][1] = -sn;

Page 23: Laporan Praktikum Komputer Grafik

20

rotate.m[1][0] = sn;

rotate.m[1][2] = cs;

return rotate;

}

vektor kali (matriks mat, vektor b) {

int i,j;

vektor c;

for (i=0;i<4;i++) {

c.v[i] = 0;

for (j=0;j<4;j++) {

c.v[i]+= mat.m[i][j] * b.v[j];

}

}

return c;

}

matriks kalim (matriks a, matriks b) {

int i,j,k;

matriks c;

for (i=0;i<4;i++) {

for (j=0;j<4;j++) {

c.m[i][j] = 0;

for (k=0;k<4;k++) {

c.m[i][j]+=a.m[i][k] * b.m[k][j];

}

}

}

return c;

}

matriks titling = kalim(rotasiX(theta),rotasiY(-theta));

vektor cross (vektor a, vektor b) {

vektor c;

c.v[0] = a.v[1]*b.v[2]-a.v[2]*b.v[1];

c.v[1] = a.v[2]*b.v[0]-a.v[0]*b.v[2];

c.v[2] = a.v[0]*b.v[1]-a.v[1]*b.v[0];

Page 24: Laporan Praktikum Komputer Grafik

21

c.v[3] = 1;

return c;

}

void DrawPolygon(objek obj)

{

int i,j;

float r,g,b;

for(i=0;i<obj.jumsisi;i++)

{

r=1.0f; g=0.0f; b=0.0f;

glBegin(GL_LINE_LOOP);

if (i==0) { r=1.0f; g=0.0f; b=0.0f; }

if (i==1) { r=0.0f; g=1.0f; b=0.0f; }

if (i==2) { r=0.0f; g=0.0f; b=1.0f; }

if (i==3) { r=1.0f; g=1.0f; b=0.0f; }

if (i==4) { r=1.0f; g=0.0f; b=1.0f; }

if (i==5) { r=0.0f; g=1.0f; b=1.0f; }

if (i==6) { r=0.5f; g=0.0f; b=1.0f; }

if (i==7) { r=0.5f; g=0.5f; b=0.5f; }

glColor3f(r,g,b);

for(j=0;j<obj.sisi[i].jumtitikons;j++)

{

glVertex3f(obj.titik[obj.sisi[i].indextitik[j]].x,

obj.titik[obj.sisi[i].indextitik[j]].y,

obj.titik[obj.sisi[i].indextitik[j]].z);

}

glEnd();

}

}

void gambarbalok() {

int i;

vektor hasil,HslKali;

Page 25: Laporan Praktikum Komputer Grafik

22

point HslTitik;

mat = titling;

objek balok =

{8,{{10,15,30},{30,15,30},{30,15,10},{10,15,10},{10,30,30},{30,30,30},{30

,30,10},{10,30,10}},

6,{{4,{0,1,5,4}},{4,{3,2,6,7}},{4,{0,3,7,4}},{4,{1,2,6,5}},{4,{0,1,2,3}},{4,{

4,5,6,7}}}};

for (i=0;i<8;i++) {

hasil = point2vektor(balok,i);

HslKali = kali(mat,hasil);

HslTitik = vektor2point(HslKali);

balok.titik[i] = HslTitik;

}

DrawPolygon(balok);

}

void UserDraw() {

glClearColor(1.0f,1.0f,1.0f,0.0f);

glClear(GL_COLOR_BUFFER_BIT);

//glRotatef(0.1f,0.0f,1.0f,0.0f);

gambarbalok();

glutSwapBuffers();

}

void main(int argc,char **argv) {

glutInit(&argc,argv);

glutInitWindowPosition(20,20);

glutInitWindowSize(640,640);

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);

glutCreateWindow("Point To Vektor");

glOrtho(-100.0f,100.0f,-100.0f,100.0f,-100.0f,100.0f);

glutIdleFunc(UserDraw);

glutDisplayFunc(UserDraw);

glutMainLoop();

}

Page 26: Laporan Praktikum Komputer Grafik

23

Hasilnya :

o Kubus

#include <Windows.h>

#include <iostream>

#include <gl\GL.h>

#include <gl\GLU.h>

#include <gl\glut.h>

#include <math.h>

void cube()

{

//menggambar kubus dan transformasi tarnslasi ke titik 0.5 0.5

0.5 dan skala 1 1 1

glPushMatrix();

Page 27: Laporan Praktikum Komputer Grafik

24

glTranslated(0.5,0.5,0.5);//cube

glScaled(1.0,1.0,1.0);

glutSolidCube(1.0);

glPopMatrix();

}

void setMaterial()

{

//set properties of surfaces material

GLfloat mat_ambient[] = {0.7f,0.7f,0.7f,1.0f}; // ada 4 jenis

material yang dipakai, dengan kombinasi warna tertentu

GLfloat mat_diffuse[] = {0.6f,0.6f,0.6f,1.0f};

GLfloat mat_specular[] = {1.0f,1.0f,1.0f,1.0f};

GLfloat mat_shininess[] = {50.0f};

glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);

glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);

glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular);

glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess);

}

void setLighting()

Page 28: Laporan Praktikum Komputer Grafik

25

{

//set light sources

GLfloat lightIntensity[] = {0.7f,0.7f,0.7f,1.0f};//mensetting

pencahayaan

GLfloat light_position[] = {2.0f,6.0f,3.0f,0.0f};

glLightfv(GL_LIGHT0,GL_DIFFUSE,lightIntensity);

glLightfv(GL_LIGHT0,GL_POSITION,light_position);

}

void setViewport()

{

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

double winHt = 1.0;//half height of the window

glOrtho(-winHt*64/48,winHt*64/48,-winHt,winHt,0.1,100.0);

}

void setCamera()

{

//set the camera

glMatrixMode(GL_MODELVIEW);

Page 29: Laporan Praktikum Komputer Grafik

26

glLoadIdentity();

gluLookAt(3.3,3.3,3.0,0,0.25,0,0.0,1.0,0.0);

}

void displayObject()

{

setMaterial();

setLighting();

setViewport();

setCamera();

//startDrawing

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

cube();//memanggil fungsi menggambar kubus

glFlush();//mengirim smua objek untuk dirender

}

void main(int argc, char **argv)

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);

glutInitWindowSize(640,480);

Page 30: Laporan Praktikum Komputer Grafik

27

glutInitWindowPosition(100,100);

glutCreateWindow("simple 3d scene");

glutDisplayFunc(displayObject);//fungsi dari display object

yang menggabungkan kubus lighting material dan kamera

glEnable(GL_LIGHTING);

glEnable(GL_LIGHT0);

glShadeModel(GL_SMOOTH);

glEnable(GL_DEPTH_TEST);

glEnable(GL_NORMALIZE);

glClearColor(1.0f,1.0f,1.0f,0.0f);

glViewport(0,0,640,480);

glutMainLoop();

}

Page 31: Laporan Praktikum Komputer Grafik

28

BAB IV : Analisa Hasil Pratikum

o Analisa dari Hasil Percobaan Jajar Genjang

Pembuatan gambar diatas yaitu dengan menetapkan titik – titik sebagai titik awal dan titik

akhir dan kemudian di hubung kan menjadi sebuah garis, dan kumpulan garis – garis tersebut

yang membentuk jajar genjang.

o Analisa dari percobaan gambar Bunga

Dalam pembuatan gambar diatas, kita harus menguasai fungsi sin, cos, dan tan . dalam

pemberian warna 1 untuk mengaktifkan suatu gambar, dan 0 untuk menonaktifkan nya,

gambar ini juga menggunakan kumpulan titik – titik sebagai denah pembuatannya.

Page 32: Laporan Praktikum Komputer Grafik

29

o Hasil Percobaan Gambar Kubus

Pada gambar diatas, tampak bahwa gambar dapat dilihat dari semua sisi, gambar tersebut

juga bisa bergerak sesuai dengan script yang dibuat.

Page 33: Laporan Praktikum Komputer Grafik

iii

PENUTUP

Dari pemaparan di atas dapat kita simpulkan bahwa penggunaan program OPENGL sangat

membantu dalam studi Komputer Grafik bagi para pemula.Meskipun hasil dari praktikum

yang telah saya lakukan di atas masih banyak mengalami kekurangan namun bagi saya yang

merupakan seorang mahasiswa yang baru mengenal computer graphic, hal ini sangat

membantu Saya dalam pendalaman ilmu saya akan komputer grafik.

Pada bagian penutup ini Saya juga dituntut untuk memberikan saran tentang program

OPENGL tersebut.Tidak akan banyak saran Saya untuk program ini karena mungkin saja

bukan program ini yang memiliki kekurangan,akan tetapi akibat Saya yang merupakan

seorang pemula sehingga sangat kaku dan mengalami kesulitan dalam pengaplikasiannya

didalam praktik langsungnya.Saya harap di kemudian hari program OPEN GT ini dapat

menjadi sebuah program dalam komputer grafik dapat mempermudah dan mengefesiensikan

kinerjanya dengan mengupgrade atau dengan hal lainnya yang dapat mempermudah kami

sebagai pemula untuk dapat memahaminya dengan cepat.

Demikian makalah praktikum sebagai tugas Ujian Akhir Semester program Studi Komputer

Grafik semester IV ini Saya perbuat. Saya sadar betul akan banyak kekurangan dalam

penyajian ataupun dalam hal hasil akhir praktikum Saya. Namun Saya cukup berbangga hati

dapat menyelesaikan makalah ini dengan hasil jerih payah usaha Saya sendiri yang mencari

berbagai sumber pustaka yang berkaitan dengan makalah ini.

Ribuan terimakasih Saya sampaikan kepada Dosen Komputer Grafik Ibu Indri

Sulistianingsih,S.Kom dan seluruh penulis buku ataupun blog yang telah Saya manfaatkan

tulisannya sebagai referensi dari makalah ini.

Semoga makalah ini dapat bermanfaat dan mendapatkan respon yang positif dari dosen yang

bersangkutan.

Wassalamualaikum Wr Wb.

Page 34: Laporan Praktikum Komputer Grafik

iv

DAFTAR PUSTAKA

___. 2011. Komputer Grafik.

http://dotsal.wordpress.com/2011/09/25/komputer-grafik/

diakses tanggal 7 Juni 2014

_____, 2008. Primitif Grafika. Online.

http://materiquliah.wordpress.com/2008/11/15/primitif-grafika/

. Diakses pada tanggal 7 Juni 2014

_____2013. Grafika Komputer3D. (Online).

(http://id.wikipedia.org/wiki/Grafika_komputer_3D

Diakses pada tanggal 7 Juni 2014

_____2012. Translasi, dan Rotasi Grafik Komputer.

(Online). (http://kripiksukun.blogspot.com/2012 Page 337/04/translasiskala-dan-rotasi-

grafik.html).

Diakses pada tanggal 7 Juni 2014