Anda di halaman 1dari 29

[Type text] Page 1

LAPORAN KOMPUTER GRAFIK










Nama Praktikan
NPM
Mahasiswa
Kelas
Tanda Tangan
Praktikan
Ryan Panca 1214370135 TI 4 Sore B

Nama Penilai
Tanggal
Koreksi
Nilai
Tanda Tangan
Dosen
Indri sulistianingsih, S.Kom


UNIVERSITAS PEMBANGUNAN PANCA BUDI
MEDAN
FAKULTAS TEKNIK
2014

Kelas
TI 4 Sore B

[Type text] Page 2


DAFTAR ISI
Daftar isi...................................................................................................... 2
Kata Pengantar........................................................................................... 3
Bab I Pendahuluan
1.1 Umum........................................................................................ 4
1.2 Latar Belakang......................................................................... 4
1.3 Tujuan Praktikum................................................................... 5
Bab II Landasan Teori
2.1 Membuat Garis Vertikal, Horizontal Dan Diagonal
Dengan Menggunakan OpenGL....................................................... 6
2.1.1 Pengertian Open GL........................................................... 6
2.1.2 Membuat Garis Vertikal..................................................... 8
2.1.3 Membuat Garis Horizontal................................................. 9
2.1.4 Membuat Garis Diagonal.................................................... 10
Bab III Hasil Percobaan/Praktikum
3.1 Contoh Latihan fungsi dari primitive drawing....................... ...... 13
3.2 Contoh Latihan Fungsi dari 2D.......................................... ....... 16
3.3 Contoh Latihan Fungsi dari 2D........................................... ....... 23
3.3.1 Poligon............................................................... ....... 23
3.3.2 Transformasi Objek 3D........................................ ....... 23
Bab IV Analisa Hasil Percobaan
4.1 Analisisa Program 2Dimensi................................................ ....... 27
4.2 Analisa Program 3Dimensi................................................ ....... 27
Penutup
Daftar Pustaka




[Type text] Page 3

KATA PENGANTAR

Puji syukur kehadirat Allah SWT, karena dengan rahmat dan hidayah-Nyalah
penulis dapat menyelesaikan makalah ini tepat pada waktunya. Shalawat beriring
salam selalu kita panjatkan kepada Rasullullah SAW, karena kegigihan beliau dan
ridho-Nyalah kita dapatmerasakan kenikmatan dunia seperti sekarang ini.

Adapun tujuan dari penulisan makalah ini adalah untuk memenuhi tugas yang
diberikan olah dosen pada mata kuliah Komputer Grafik, makalah ini juga bertujuan
untuk menambah pengetahuan dan wawasan bagi pembaca sekalian.

Penulis mengucapkan terimakasih kepada Ibu Indri Sulistianingsih, S.Kom
selaku dosen mata kuliah Komputer Grafik yang telah membimbing penulis dalam
menyelesaikan penulisan makalah ini tepat waktunya.

Penulis menyadari bahwasanya makalah ini masih jauh dari kesempurnaan,
oleh karena itu kritik dan saran penulis harapkan dari pembaca sekalian demi
terciptanya kesempurnaan dalam penyusunan makalah ini. Semoga makalah ini
bermanfaat bagi kita yang memrluan.
Terima kasih



Medan, 12 Juni 2014




Penulis
Ryan Panca
NPM : 1214370135



















[Type text] Page 4

BAB I
PENDAHULUAN

1.1 Umum
Tahun 1978, Brian W. Kerninghan & Dennis M. Ritchie dari AT & T
Laboratories mengembangkan bahasa B menjadi bahasa C. Bahasa B yang diciptakan
oleh Ken Thompson sebenarnya merupakan pengembangan dari bahasa BCPL ( Basic
Combined ProgrammingLanguage ) yang diciptakan oleh Martin Richard.

Sejak tahun 1980, bahasa C banyak digunakan pemrogram di Eropa yang
sebelumnya menggunakan bahasa B dan BCPL. Dalam perkembangannya, bahasa C
menjadi bahasa paling popular diantara bahasa lainnya, seperti PASCAL, BASIC,
FORTRAN.

Tahun 1989, dunia pemrograman C mengalami peristiwa penting dengandikelua
rkannya standar bahasa C oleh American National Standards Institute (ANSI).
BahasaC yang diciptakan Kerninghan & Ritchie kemudian dikenal dengan nama ANSI
C.

Mulai awal tahun 1980, Bjarne Stroustrup dari AT & T Bell Laboratories mulai
mengembangkan bahasa C. Pada tahun 1985, lahirlah secara resmi bahasa baru
hasil pengembangan C yang dikenal dengan nama C++. Sebenarnya bahasa C++
mengalami duatahap evolusi. C++ yang pertama, dirilis oleh AT&T Laboratories,
dinamakan cfront. C++versi kuno ini hanya berupa kompiler yang menterjemahkan
C++ menjadi bahasa C.

Pada evolusi selanjutnya, Borland International Inc. mengembangkan kompiler
C++ menjadi sebuah kompiler yang mampu mengubah C++ langsung menjadi
bahasa mesin(assembly). Sejak evolusi ini, mulai tahun 1990 C++ menjadi bahasa
berorientasi obyek yang digunakan oleh sebagian besar pemrogram professional

1.2 LATAR BELAKANG

Perkembangan grafika komputer menuntut para pengembang sistem aplikasi
grafika komputer untuk dapat mengembangkan suatu informasi yang dilengkapi
dengan visualisasi dan animasi, agar dapat lebih mudah dipahami oleh pihak yang
menggunakan sistem tersebut. Grafika komputer telah menunjukkan kemajuan yang
pesat dalam pengembangan berbagai aplikasi untuk menghasilkan gambar. Grafika
komputer digunakan untuk menunjang berbagai bidang dengan teknologi grafika
berbasis komputer. Penggunaan grafika komputer telah lama digunakan dalam
beberapa macam aplikasi, diantaranya pendidikan, kedokteran, fisika, matematika,
multimedia, dan lain-lain. Pada saat ini grafika komputer sudah digunakan pada
bidang sains, engineering, kedokteran, bisnis, industri, pemerintahan, seni, hiburan,
iklan, pendidikan, dan lain-lain. Oleh karena itu, sudah semakin banyak pula bahasa
pemrograman yang dilengkapi dengan tools/library pembuatan grafik Salah satu
tools/library pembuatan aplikasi grafik adalah OpenGL (Open Graphics Library).

[Type text] Page 5

OpenGL(Open Graphics Library) adalah suatu spefikasi grafik yang low-level yang
menyediakan fungsi untuk pembuatan grafik primitif termasuk titik, garis, dan
lingkaran. OpenGL digunakan untuk mendefinisikan suatu objek, baik objek 2 dimensi
maupun objek 3 dimensi. Dan makalah yang disampaikan kali ini khusus membahas
mengenai perancangan bangun 3 dimensi menggunakan Visual Basic 6.0

1.3 TUJUAN PRAKTIKIUM
Mahasiswa mampu memahami dan menerapkan aplikasi komputer grafik
menggunakan bahasa pemrograman Visual Basic C++.


























[Type text] Page 6

BAB II
LANDASAN TEORI
2.1 Membuat Garis Vertikal, Horizontal Dan Diagonal
Dengan Menggunakan OpenGL

2.1.1 Pengertian OPEN GL
OpenGL (Open Graphics Library) adalah suatu standar API yang digunakan untuk membuat
aplikasi berbasis grafik,baik untuk 2 dimensi (2D) atau 3 dimensi (3D). didalam OpenGL
mempunyai banyak pustaka /library yang disebut OpenGL Unit Library Toolkit(Glut).
Didalam Glut tersebut sudah terdapat berbagai fungsi, mulai aplikasi windows (windowing)
sampai aplikasi grafik lainnya, sehingga tidak repot-repot mengubah kode progam jika
diterapkan pada sistem operasi dan perangkat lunak yang berbeda.
OpenGL ini sifatnya open source, dapat dipakai pada banyak platform (Windows ataupun
Linux) dan dapat digunakan pada berbagai jenis compiler bahasa pemrograman seperti C++,
Delphi, Java ataupun VB.
OpenGL adalah suatu graphic library yang sebagian bersifat open source, dipakai pada
banyak platform (windows, linux) dan dapat digunakan pada berbagai jenis compiler seperti
C++ atau Delphi. OpenGL bukanlah bahasa pemrograman tetapi merupakan suatu
Application Programming Interface (API).
Sintax perintah OpenGL
Sintaks perintah OpenGL mengikuti aturan penulisan dari library dimana fungsi tersebut
berasal, format penulisan fungsi OpenGL :
<awalanlibrary><perintah><optional jumlah argumen><optional tipe argumen>
Semua perintah OpenGL menggunakan awalan gl diikuti dengan huruf kapital pada setiap
kata membentuk nama perintah (sebagai contoh glClearColor). Untuk mendefinisikan
konstanta diawali dengan GL_, dengan menggunakan huruf kapital dan garis bawah untuk
memisahkan kata (seperti GL_POLY_STIPPLE). Terkadang beberapa huruf dan angka
ditambahkan pada akhir perintah (seperti 3f pada glVertex3f). Dalam hal ini angka 3
menunjukkan berapa banyak argumen yang harus ada pada perintah tersebut dan akhiran
huruf f menunjukkan jenis datanya yaitu floating.


[Type text] Page 7

Langkah awal membuat program OpenGl.Pertama yang harus yang kita lakukan pastikan
leptop anda sudah terinstal aplikasi ini kalau belum lakukan dengan cara menginstal Dev
C++ dan gluth.h yaitu header yang digunakan untuk openGL.Karena software inilah yang
akan digunakan untuk bekerja dengan openGL.Buka Dev C++ untuk memulai project
baru.Sedangkan beberapa library yang telah ditulis untuk menyediakan fungsi-fungsi
tambahan pada OpenGL adalah :
A. OpenGL Utility Library (GLU) yang didalamnya terdapat sejumlah rutin yang
menggunakan level bawah dari perintah OpenGL. Rutin-rutin ini mempunyai awalan glu.
Library ini digunakan sebagai bagian dari implementasi OpenGL.
B. OpenGL Extension untuk X-Windows yang menyediakan fungsi untuk menciptakan
OpenGL context dan mengasosiasikannya dengan mesin yang menggunakan X-Windows.
Rutin-rutin ini mempunyai awalan glx.
C. Auxiliary atau aux library terdapat pada library glaux.lib dan file header glaux.h. Perintah
yang akan digunakan selalu menggunakan awalan aux
D. OpenGL Utility Toolkit (GLUT) adalah toolkit untuk sistem windows yang ditulis oleh
Mark Kilgard untuk menyembunyikan perintah API sistem windows yang kompleks.
cara membuat project baru :
1. Klik menu File > Pilih New > Project .

2. Pada bagian ini pilih tag Multimedia > lalu klik OpenGL dan beri nama Project.

[Type text] Page 8


Setelah membuat project,lanjut kita untuk membuat program yang ditugaskan pada mata
kuliah grafik komputer dan pengolahan citra ini yaitu membuat garis Vertikal,Horizontal dan
Diagonal.
Jangan lupa pada saat menuliskan koding dibawah
/* OpenGL animation code goes here */


2.1.2 Membuat Garis Vertikal


Koding dan penjelasannya :
/* OpenGL animation code goes here */

[Type text] Page 9

glClearColor (0.0f, 0.0f, 0.0f, 0.0f);//untuk memilih warna yang digunakan untuk
membersihkan latar dalam mode RGBA
glClear (GL_COLOR_BUFFER_BIT);//untuk membersihkan layar latar belakang
glPushMatrix (); //Membuat baris kode menjadi tidak berlaku untuk bagian luar.
glClearColor(1,1,1,0);//untuk menentukan warna garis/titik.
glColor3f(1,1,1); // untuk menentukan warna garis/titik.
glBegin(GL_LINES); //untuk menggambar garis dari titik yang digunakan .
glVertex3f(0.10,10.0,13.13);//untuk menentukan titik awal yang digunakan.
glVertex3f(0,0,0.0);//untuk menentukan titik akhir yang digunakan.
glEnd ();//untuk mengakhiri gambar garis dititik akhir .
glPopMatrix ();//Membuat baris kode menjadi tidak berlaku untuk bagian luar.
SwapBuffers (hDC);//digunakan untuk menukar bagian belakang buffer menjadi buffer layar.
Kemudian jalankan project dengan mengcompile dengan menekan tombol F9,file yang akan
di compile akan meminta untuk di save, untuk itu save file dan beri nama lalu jalankan
dengan menekan tombol yang sama F9. jika tidak terdapat error makan program langsung
berjalan dan menghasilkan output :


2.1.3 Membuat Garis Horizontal
Untuk membuat garis Horizontal langkah-langkahnya sama seperti membuat garis vertikal
hanya berbeda pada kodingnya. Berikut adalah koding garis horizontal :

[Type text] Page 10



Koding dan penjelasannya :
/* OpenGL animation code goes here */
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);//untuk memilih warna yang digunakan untuk
membersihkan latar dalam mode RGBA
glClear (GL_COLOR_BUFFER_BIT);//untuk membersihkan layar latar belakang
glPushMatrix ();Membuat baris kode menjadi tidak berlaku untuk bagian luar.
glClearColor(1,1,1,0);//untuk menentukan warna garis/titik.
glColor3f(1,1,1); // untuk menentukan warna garis/titik.
glBegin(GL_LINES);//untuk menggambar garis dari titik yang digunakan .
glVertex3f(0.10,10.0,13.13);//untuk menentukan titik awal yang digunakan.
glVertex3f(0,0,0.0);//untuk menentukan titik akhir yang digunakan.
glEnd ();//yaitu untuk mengakhiri gambar garis dititik akhir .
glPopMatrix ();// Membuat baris kode menjadi tidak berlaku untuk bagian luar.
SwapBuffers (hDC);//digunakan untuk menukar bagian belakang buffer menjadi buffer layar.
Kemudian jalankan project dengan mengcompile dengan menekan tombol F9,file yang akan
di compile akan meminta untuk di save, untuk itu save file dan beri nama lalu jalankan
dengan menekan tombol yang sama F9. jika tidak terdapat error makan program langsung
berjalan dan menghasilkan output :

[Type text] Page 11



2.1.4 Membuat Garis Diagonal
Untuk membuat garis Diagonal langkah-langkahnya sama seperti membuat garis vertikal dan
horizontal hanya berbeda pada kodingnya. Berikut adalah koding garis diagonal :


Koding dan penjelasannya :
/* OpenGL animation code goes here */
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);//untuk memilih warna yang digunakan untuk
membersihkan latar dalam mode RGBA
glClear (GL_COLOR_BUFFER_BIT);//untuk membersihkan layar latar belakang
glPushMatrix ();// Membuat baris kode menjadi tidak berlaku untuk bagian luar.

[Type text] Page 12

glClearColor(1,1,1,0);//untuk menentukan warna garis/titik.
glColor3f(1,1,1); //untuk menentukan warna garis/titik.
glBegin(GL_LINES);//untuk menggambar garis dari titik yang digunakan .
glVertex3f(0.10,10.0,13.13);//untuk menentukan titik awal yang digunakan.
glVertex3f(0,0,0.0);//untuk menentukan titik akhir yang digunakan.
glEnd ();//yaitu untuk mengakhiri gambar garis dititik akhir .
glPopMatrix ();//Membuat baris kode menjadi tidak berlaku untuk bagian luar.
SwapBuffers (hDC);//digunakan untuk menukar bagian belakang buffer menjadi buffer layar.
Kemudian jalankan project dengan mengcompile dengan menekan tombol F9,file yang akan
di compile akan meminta untuk di save, untuk itu save file dan beri nama lalu jalankan
dengan menekan tombol yang sama F9. jika tidak terdapat error makan program langsung
berjalan dan menghasilkan output :














[Type text] Page 13

BAB III
HASIL PERCOBAAN / PRAKTIKUM
3.1 Contoh Latihan fungsi dari primitive drawing
Primitive Drawing merupakan cara mudah untuk menggambar pada layar monitor
menggunakan teori geometri sederhana. Macam-macam primitive drawing seperti
menggambar sebuah titik, garis, atau gabungan antar keduanya.
Berikut akan aku share beberapa script tentang primitive drawing dalam bahasa C++

1. Membuat segitiga sama kaki.


Berikut adalah scriptnya :

void display(void)

{

/* bersihkan layar dari titik pixel yang masih ada */

glClear (GL_COLOR_BUFFER_BIT);

/* gambar poligon (rectangle) dengan titik sudut *

* (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) */

glColor3f (1.0, 1.0, 0.0);



glBegin(GL_LINE_LOOP);

glVertex3f (0.0, 0.0, 0.0);

glVertex3f (0.3, 0.8, 0.0);

glVertex3f (0.6, 0.0, 0.0);

glEnd();



glFlush (); }

void
kunci(unsigned
char key, int x,
int y) {

switch (key) {

case 27 : case 'q':
exit(0); break; }
glutPostRedisplay();
}

int main(int argc, char *argv[]) {

[Type text] Page 14


glutInitWindowSize(200,200);

glutInitWindowPosition(100,100);

glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

glutCreateWindow("UMI FATIMAH");

glutDisplayFunc(display);

glutKeyboardFunc(kunci);

glutMainLoop();

return 0;

}
Script berikut :


glBegin(GL_LINE_LOOP);

glVertex3f (0.0, 0.0,
0.0);

glVertex3f (0.3, 0.8, 0.0);

glVertex3f (0.6, 0.0, 0.0);

glEnd();

Dapat diganti dengan :

glBegin(GL_LINE_LOOP);

glVertex2f (0.0, 0.0);

glVertex2f (0.3, 0.8);

glVertex2f (0.6, 0.0);
glEnd();

glVertex2f disini menunjukan bahwa koordinat titik menggunakan tipe data float karena
berupa pecahan. dan jika koordinat tidak menggunakan bilangan pecahan maka tipe
datanya dapat menggunakan int. sedangkan angka 2 menunjukan titik tersebut terbentuk
dari 2 koordinat yaitu x dan y. jika 3 berarti terbentuk dari x, y, dan z.

2. Membuat bentuk kubus


Sebenernya sama aja dengan pembuatan bentuk segitiga tadi, kita seperti hanya bermain
koordinat cartesius saja. Untuk membuat bentuk kubus kita bisa mengganti script yang
berwarna merah dengan script berikut :



glBegin(GL_LINE_LOOP);

glVertex3f (0.0, -0.9,
0.0);

[Type text] Page 15


glVertex3f (0.0, -0.4, 0.0);

glVertex3f (0.5, -0.4, 0.0);

glVertex3f (0.5, -0.9, 0.0);

glEnd();

glBegin(GL_LINE_LOOP);

glVertex3f (0.3, -0.5,
0.0);

glVertex3f (0.3, -0.1, 0.0);

glVertex3f (0.8, -0.1, 0.0);

glVertex3f (0.8, -0.5, 0.0);

glEnd();

glBegin(GL_LINE_LOOP);

glVertex3f (0.0, -0.4,
0.0);

glVertex3f (0.3, -0.1, 0.0);

glVertex3f (0.8, -0.1, 0.0);

glVertex3f (0.5, -0.4, 0.0);

glEnd();

glBegin(GL_LINE_LOOP);

glVertex3f (0.0, -0.9,
0.0);

glVertex3f (0.3, -0.5, 0.0);

glVertex3f (0.8, -0.5, 0.0);

glVertex3f (0.5, -0.9, 0.0);

glEnd();


1

script diatas sebenarnya cuma akal-akalan doank, bagaimana beberapa bidang disatukan
menjadi bentuk seperti kubus. Membentuk suatu kubus sebenarnya bisa dibuat dengan
permainan garis menggunakan gl_LINE_LOOP, namun yang perlu diingat adalah bahwa
gl_LINE_LOOP menghubungkan titik-titik secara berurutan, jadi agar titik-titik dapat
disatukan menggunakan garis sehingga membentuk suatu kubus, maka titik-titik tersebuat
harus dibuat berdasarkan urutan yang benar.










[Type text] Page 16

3.2 Contoh latihan fungsi dari 2D
Objek grafik 2 dimensi adalah sekumpulan titik-titik 2 dimensi yang dihubungkan dengan
garis lurus, baik berupa polyline, polygon atau kurva. Objek grafik 2 dimensi didefinisikan
sebagai kumpulan titik 2dimensi yang secara komputasi dinyatakan sebagai array 1D, atau
linkedlist sesuai dengan struktur data yang digunakan dalam menyatakan kumpulan titik 2D
ini.
Objek grafik dimensi juga adalah gambar 2 dimensi yang sumbu x dan sumbu y, atau sumbu
koordinat cartesius dua dimensi. Dua sumbu yang saling bertegak lurus antar satu dengan
yang lain, yang keduanya terletak dalam satu bidang (bidang xy).
Sedangkan Grafik komputer 2D adalah sebuah generasi gambar digital berbasis komputer,
yang kebanyakan mengambil objek-objek dua dimensi (2D). Model Grafik 2D merupakan
kombinasi dari model geometri (juga disebut sebagai grafik vektor), gambar digital (raster
graphics), fungsi matematika, dan sebagainya. Komponen-komponen ini dapat dimodifikasi
dan dimanipulasi oleh transformasi geometri dua dimensi, seperti translasi, rotasi, dan
dilatasi.
Model-model yang digunakan pada disain grafis 2D biasanya tidak mendukung bentuk-
bentuk tiga-dimensi, atau fenomena yang bersifat tiga dimensi, seperti pencahayaan,
bayangan, pantulan, refraksi, dan sebagainya. Namun demikian, mereka dapat membuat
model berlapis-lapis (layer); nyata, translusen, dan transparan, yang dapat ditumpuk dalam
urutan tertentu. Urutan tersebut biasanya didefinisikan dengan angka (kedalaman lapisan,
atau jarak dari si penglihat).
Macam-Macam objek 2D :
Line
Circle
Arc
Polygon
Text
Section
Rectangle
Ellips
Donut
Star
Helix

Dari macam-macam objek 2d ini saya akan membahas 3 macam:
Circle

[Type text] Page 17




Circle atau lingkaran adalah object 2 dimensi yang memiliki ukuran diameter dan jari-jari.
Circle atau lingkaran merupakan kumpulan titik-titik yang tak berhingga dan saling
berhubung.

3.2.2 Line





Objek line/garis adalah objek salah satu 2 dimensi yang sangat mendasar dan sering
digunakan untuk perancangan gambar kerja. Line berasal dari 2 titik yang saling terhubung.

3.2.3 Polygon

4


Polygon adalah suatu fungsi yang mirip dengan polyline, hanya saja hasilnya adalah kurva
tertutup. Pada polygon digunakan konsep array dalam menyatakan objek 2D
sebagaikumpulan titik 2D. Polygon digunakan untuk merepresentasikan objek-objek dua

[Type text] Page 18

dimensi. Suatu poygon paling sedikit dibatasi oleh tiga garis yang saling terhubung di antara
ketiga titik tersebut.

Adapun langkah-langkah untuk mendefinisikan objek grafik 2 dimensi :
3.2.4 Mendefinisikan struktur dari titik 2D

Sistem Koordinat OpenGL

3.2.5 Mendefinisikan struktur warna
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.





3.2.6 Mendefinisikan struktur dari objek grafik 2D
Fungsi gluOrtho2D (left,right,bottom,top) gluOrtho2D(-320,320,-240,240)



[Type text] Page 19


Objek primitive (Lanjutan)
a. Triangle GL_TRIANGLES
Triangle atau segitiga adalah tiga buah titik yang terhubung menjadi suatu segitiga dengan
blok di tengahnya.
b. Quads GL_QUADS
Quad atau segempat adalah empat buah titik yang terhubung menjadi suatu segempat dengan
blok di tengahnya.
c. Polygon GL_POLYGON
Polygon merupakan suatu fungsi yang mirip dengan polyline, tetapi menghasilkan kurva
tertutup dengan blok warna (fill).

Contoh Program 2 Dimensi :
#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++)

[Type text] Page 20

{
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}};
color_t biru ={0,0,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,0};
fillPolygon(pot,4, hitam);
drawPolygon(pot,4);


[Type text] Page 21

point2D_t
pot2[6]={{-80,-160},{-50,-160},{-50,-190},{-60,-190},{-60,-170},{-80,-170}};
color_t hitam3 ={0,0,0};
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,0};
fillPolygon(pot3,4, hitam2);
drawPolygon(pot3,4);



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,0};
fillPolygon(shape,1, merah);
}
drawPolygon(shape, 360);
}

void display(void)
{
//clear screen
glClear(GL_COLOR_BUFFER_BIT);

[Type text] Page 22

userdraw();
glutSwapBuffers();
}
int main(int argc, char **argv)
{
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;
}

Hasil :





[Type text] Page 23

3.3 Contoh latihan fungsi dari 3D

Secara konseptual dalam grafika komputer objek 3 dimensi dibuat dari
rangkaian poligon. Poligon adalah sejumlah dari segmen garis yang dihubungkan
antara ujung garis satu dengan yang lainnya membentuk suatu bidang tertutup.
Objek 3 dimensi memiliki tiga ukuran yaitu panjang, lebar dan kedalaman,
dimana dalam geometri disimbolkan X, Y dan Z. Menurut fungsinya objek 3
10
dimensi mempunyai dua variable bebas (X dan Y) dan satu variable tidak bebas
(Z, karena nilai Z tergantung pada nilai X dan Y). Objek 3 dimensi diantaranya
sebagai berikut :
1. Kubus
Kubus adalah balok dengan bidangbidang
sisi yang bujur sangkar. Batasbatas
luar kubus membentuk poligon enam sisi (heksagonal).
2. Balok
Balok adalah poligon tiga sisi (heksagonal) beraturan dengan bidang sisi
terdiri dari dua buah persegi panjang dan dua buah bujur sangkar.
3. Bola
Bentuk bola diperoleh dengan memutar busur lingkaran melalui sumbu
yang melalui titik pusatnya.

3.3.1 Poligon
Poligon adalah bentuk yang disusun dari serangkaian garis. Gambar 2.3
memberikan beberapa contoh poligon. Titik sudut dari poligon disebut vertex
sedangkan garis penyusun poligon disebut edge. [4]
11
Gambar 2.3 Poligon
Poligon digambar dengan menggambar masingmasing
edge dengan setiap
edge merupakan pasangan dari vertexi vertexi+1 kecuali untuk edge terakhir
merupakan pasangan dari vertexn vertex1. [3]
Jaring Poligon adalah permukaan yang dibuat dari kumpulan mukamuka
poligon. Secara konseptual, jaring poligon digunakan di grafika komputer untuk
menghasilkan objek 3 dimensi. Untuk lebih jelasnya, lihat pada gambar 2.4.
Gambar 2.4 Ilustrasi muka poligon dengan objek kubus

3.3.2 Transformasi Objek 3 Dimensi
Salah satu sub bagian dari grafika komputer adalah pemodelan objek
(object modeling). Dalam pemodelan objek 2 dimensi, didapati berbagai objek
12
dapat dimodelkan. Menurut kondisi tertentu, objek yang dimodelkan itu perlu
dimodifikasi. Pemodifikasian objek ini dapat dilakukan dengan melakukan
berbagai operasi fungsi atau operasi transformasi geometri. Transformasi ini dapat
berupa transformasi dasar ataupun gabungan dari berbagai transformasi geometri.
Pada dasarnya transformasi adalah memindahkan objek tanpa merusak bentuk.
Tujuan transformasi adalah :
1. Merubah atau menyesuaikan komposisi pemandangan.

[Type text] Page 24

2. Memudahkan membuat objek yang simetris.
3. Melihat objek dari sudut pandang yang berbeda.
4. Memindahkan satu atau beberapa objek dari satu tempat ke tempat lain, ini
biasa dipakai untuk animasi komputer.
Transformasi pada dunia 3 dimensi, pada dasarnya sama dengan
transformasi pada 2 dimensi, hanya pada 3 dimensi kita juga memperhitungkan
sumbu Z. Sama seperti pada 2 dimensi, ada tiga transformasi dasar yang dapat
dilakukan yaitu translasi, penskalaan, rotasi. Perbedaannya adalah pada objek 3
dimensi proses transformasinya dilakukan dengan mempertimbangkan koordinat
yang merupakan besarnya kedalaman dari objek.

Contoh Program 3 Dimensi :
#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();
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()
{
//set light sources

[Type text] Page 25

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);
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);
glutInitWindowPosition(100,100);
glutCreateWindow("simple 3d scene");
glutDisplayFunc(displayObject);//fungsi dari display object yang menggabungkan kubus
lighting material dan kamera

[Type text] Page 26

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();
}

Hasil :






























[Type text] Page 27


BAB IV
Analisa Hasil Percobaan

4.1 Analisis Program 2Dimensi
Objek grafik 2 dimensi adalah sekumpulan titik-titik 2 dimensi yang
dihubungkan dengan garis lurus, baik berupa polyline, polygon atau kurva. Objek
grafik 2 dimensi didefinisikan sebagai kumpulan titik 2dimensi yang secara
komputasi dinyatakan sebagai array 1D, atau linkedlist sesuai dengan struktur data
yang digunakan dalam menyatakan kumpulan titik 2D ini.



4.2 Analisis Program 3Dimensi
grafika komputer objek 3 dimensi dibuat dari
rangkaian poligon. Poligon adalah sejumlah dari segmen garis yang dihubungkan
antara ujung garis satu dengan yang lainnya membentuk suatu bidang tertutup.
Objek 3 dimensi memiliki tiga ukuran yaitu panjang, lebar dan kedalaman,
dimana dalam geometri disimbolkan X, Y dan Z. Menurut fungsinya objek 3






[Type text] Page 28


Penutup

Demikianlah makalah yang saya buat ini, semoga bermanfaat dan menambah
pengetahuan para pembaca. Saya mohon maaf apabila ada kesalahan ejaan dalam
penulisan kata dan kalimat yang kurang jelas, dimengerti, dan lugas.Karena saya
hanyalah manusia biasa yang tak luput dari kesalahan Dan kami juga sangat
mengharapkan saran dan kritik dari para pembaca demi kesempurnaan makalah ini.

Sekian penutup dari kami semoga dapat diterima di hati dan kami ucapkan terima
kasih yang sebesar-besarnya
Terima kasih.





































[Type text] Page 29



Daftar Pustaka

http://www.scribd.com/doc/82785337/Makalah-Visual-C

https://docs.google.com/document/d/15Us0Xa9Su30BmYysaQ8vTWnivvJbOT-
84BvOJFkBJM0/edit

http://fatimahumi.blogspot.com/2011/03/primitive-drawing-menggunakan-c.html

http://reni-tha.blogspot.com/2013/04/objek-dua-dimensi.html

http://elib.unikom.ac.id/download.php?id=14270