GRAFIKA KOMPUTER
SEMESTER GANJIL TAHUN AKADEMIK 2020/2021
Disusun oleh :
Nama : Febryan Alfaridzi
NIM : 1818057
Prodi : Teknik Informatika S-1
Kelompok :
Disusun Oleh
NAMA : Febryan Alfaridzi
NIM : 1818057
JURUSAN : Teknik Informatika S-1
Mengetahui Menyetujui
Ka. Lab. Database Dosen Pembimbing
Segala puji bagi Allah SWT semata karena dengan rahmat dan hidayah-Nya
lah penulis dapat menyelesaikan Laporan Praktikum Grafika Komputer tepat pada
waktunya.
Terwujudnya laporan ini, tentunya tidak lepas dari bantuan-bantuan yang
telah penulis terima. Pada kesempatan ini, penulis menyampaikan terima kasih
kepada yang terhormat:
1. Ibu Karina Aulia Sari, ST, M.eng selaku dosen pembimbing Praktikum
Grafika Komputer.
2. Ibu Febriana Santi W, S.kom, M.kom selaku dosen mata kuliah Grafika
Komputer.
3. Renaldi Primaswara Prasetya, S.Kom, M.Kom selaku dosen mata kuliah
Grafika Komputer.
4. Ibu Febriana Santi W, S.kom, M.kom selaku Ketua Pelaksana Praktikum
Grafika Komputer Jurusan Teknik Informatika ITN Malang.
5. Instruktur Lab. Database Teknik Informatika yang telah memberi petunjuk
kepada penulis selama pelaksanaan praktikum.
6. Rekan-rekan yang telah membantu dalam pelaksanaan dan penyelesaian
laporan ini.
Harapan penulis laporan praktikum ini bermanfaat bagi penulis sendiri
maupun pembaca.
Malang, .................2020
Penulis
DAFTAR ISI
KATA PENGANTAR ................................................................................................ 3
DAFTAR ISI .............................................................................................................. 4
DAFTAR GAMBAR.................................................................................................. 7
DAFTAR TABEL ...................................................................................................... 9
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 1 PENGENALAN
OPENGL .................................................................................................................. 10
1.1 Tujuan ............................................................................................................ 10
1.2 Alat dan Bahan .............................................................................................. 10
1.3 Landasan Teori .............................................................................................. 10
1.4 Langkah - Langkah Tugas ............................................................................. 15
1.5 Kesimpulan .................................................................................................... 17
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 2 TRANSFORMASI
2D ............................................................................................................................. 18
2.1 Tujuan ............................................................................................................ 18
2.2 Alat dan Bahan .............................................................................................. 18
2.3 Landasan Teori .............................................................................................. 18
2.4 Langkah - Langkah Tugas ............................................................................. 20
2.5 Kesimpulan .................................................................................................... 23
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 3 ALGORITMA
PEMBUATAN OBJEK ............................................................................................ 24
3.1 Tujuan ............................................................................................................ 24
3.2 Alat dan Bahan .............................................................................................. 24
3.3 Landasan Teori .............................................................................................. 24
3.4 Langkah - Langkah Tugas ............................................................................. 26
3.5 Kesimpulan .................................................................................................... 36
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 4 LINGKARAN ......... 37
4.1 Tujuan ............................................................................................................ 37
4.2 Alat dan Bahan .............................................................................................. 37
4.3 Landasan Teori .............................................................................................. 37
4.4 Langkah - Langkah Tugas ............................................................................. 38
4.5 Kesimpulan .................................................................................................... 43
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 5 OBJEK PRIMITIF .. 44
5.1 Tujuan ............................................................................................................ 44
5.2 Alat dan Bahan .............................................................................................. 44
5.3 Landasan Teori .............................................................................................. 44
5.4 Langkah - Langkah Tugas ............................................................................. 45
5.5 Kesimpulan .................................................................................................... 50
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 6 CLIPPING ............... 51
6.1 Tujuan ............................................................................................................ 51
6.2 Alat dan Bahan .............................................................................................. 51
6.3 Landasan Teori .............................................................................................. 51
6.4 Langkah - Langkah Tugas ............................................................................. 53
6.5 Kesimpulan .................................................................................................... 58
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 7 ALGORITMA LIANG
BARSKY DAN CLIPPING POLYGON ................................................................. 59
7.1 Tujuan ............................................................................................................ 59
7.2 Alat dan Bahan .............................................................................................. 59
7.3 Landasan Teori .............................................................................................. 59
7.4 Langkah – Langkah Tugas ............................................................................ 61
7.5 Kesimpulan .................................................................................................... 67
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 8 OBJEK 3D DAN
PEMBENTUKAN OBJECT 3D DENGAN FUNGSI OPENGL ............................ 68
8.1 Tujuan ............................................................................................................ 68
8.2 Alat dan Bahan .............................................................................................. 68
8.3 Landasan Teori .............................................................................................. 68
8.4 Langkah - Langkah Tugas ............................................................................. 74
8.5 Kesimpulan .................................................................................................... 80
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 9 TRANSFORMASI 3D
DAN INTERAKSI DENGAN PERANGKAT ........................................................ 81
9.1 Tujuan ............................................................................................................ 81
9.2 Alat dan Bahan .............................................................................................. 81
9.3 Landasan Teori .............................................................................................. 81
9.4 Langkah - Langkah Tugas ............................................................................. 91
9.5 Kesimpulan .................................................................................................... 96
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 10 OBJEK SOLID DAN
LIGHTING ............................................................................................................... 97
10.1 Tujuan ............................................................................................................ 97
10.2 Alat dan Bahan .............................................................................................. 97
10.3 Landasan Teori .............................................................................................. 97
10.4 Langkah - Langkah Tugas ........................................................................... 105
10.5 Kesimpulan .................................................................................................. 109
BAB 11 PENUTUP ................................................................................................ 110
11.1 Kesimpulan .................................................................................................. 110
11.2 Saran ............................................................................................................ 111
DAFTAR PUSTAKA ............................................................................................. 112
DAFTAR GAMBAR
Gambar 1.1 Cek versi Visual Studio ........................................................................ 15
Gambar 1.2 Siapkan file glut .................................................................................... 16
Gambar 1.3 Folder untuk C Header File.................................................................. 16
Gambar 1.4 Folder untuk dll File ............................................................................. 16
Gambar 1.5 Folder untuk Library File ..................................................................... 17
Gambar 2.1 Contoh refleksi pada gambar 2D .......................................................... 18
Gambar 2.2 Contoh penggunaan shear pada gambar 2D ......................................... 19
Gambar 2.3 Tampilan hasil running program gabungan refleksi dan shear ............ 21
Gambar 3.1 Grafik .................................................................................................... 27
Gambar 3.2 Grafik .................................................................................................... 29
Gambar 3.3 Tampilan Running DDA....................................................................... 31
Gambar 3.4 Tampilan Running Bresenham ............................................................. 34
Gambar 4.1 Ilustrasi Penggambaran Lingkaran ....................................................... 38
Gambar 4.2 Hasil Ilustrasi Penggambaran Lingkaran .............................................. 40
Gambar 4.3 Tampilan Running Lingkaran ............................................................... 42
Gambar 5.1 Elemen – elemen pembentuk Objek Grafis .......................................... 45
Gambar 5.2 Bentuk dasar objek primitif .................................................................. 45
Gambar 5.3 Tampilan Hasil Running ....................................................................... 49
Gambar 6.1 Susunan Region Code ........................................................................... 52
Gambar 6.2 Region Code Daerah Viewport ............................................................. 52
Gambar 6.3 Menentukan Titik Potong ..................................................................... 53
Gambar 6.4 Persamaan xp1, xp2, yp1, dan yp2 ....................................................... 53
Gambar 6.5 Hasil Running Program ........................................................................ 56
Gambar 6.6 Hasil running program Clipping........................................................... 56
Gambar 7.1 Tampilan Grafik ................................................................................... 62
Gambar 7.2 Tampilan Hasil Running Program ........................................................ 65
Gambar 8.2 Polygon ................................................................................................. 70
Gambar 8.3 Objek 3D yang tersusun dari kumpulan Polygon ................................. 70
Gambar 8.4 Sistem Koordinat 3D ............................................................................ 71
Gambar 8.5 Sistem Koordinat 3 Dimensi................................................................. 71
Gambar 8.6 Sphere ................................................................................................... 72
Gambar 8.7 Cube ...................................................................................................... 72
Gambar 8.8 Cone ...................................................................................................... 72
Gambar 8.9 Dodecahedron ...................................................................................... 73
Gambar 8.10 Teapot ................................................................................................. 73
Gambar 8.11 Torus ................................................................................................... 73
Gambar 8.12 Tampilan hasil .................................................................................... 76
Gambar 8.13 Tampilan Hasil ................................................................................... 78
Gambar 9.1 Tampilan objek 3 dimensi .................................................................... 93
Gambar 9.2 Tampilan rotasi ..................................................................................... 93
Gambar 9.3 Tampilan translasi................................................................................. 94
Gambar 9.4 Tampilan scalling ................................................................................. 94
Gambar 10.1 dua versi adegan sebuah bola ............................................................. 98
Gambar 10.2 Menggunakan pencahayaan ................................................................ 99
Gambar 10.3 Cahaya Diffuse.................................................................................. 100
Gambar 10.4 Cahaya Specular ............................................................................... 100
Gambar 10.5 Cahaya Emmisive.............................................................................. 101
Gambar 10.6 Tampilan Hasil Running ................................................................... 105
Gambar 10.6 Tampilan Hasil running .................................................................... 107
DAFTAR TABEL
Tabel 1.1 Library untuk OpenGL ............................................................................. 11
Tabel 1.2 Tabel Fungsi / Prosedur ............................................................................ 12
Tabel 1.3 Fungsi / Prosedur yang sering digunakan dalam membut sebuah object . 12
Tabel 1.4 Fungsi dasar dalam membuat titik............................................................ 13
Tabel 1.5 Fungsi menggunakan library Primitive Object ........................................ 14
Tabel 2.1 Fungsi OpenGL ........................................................................................ 22
Tabel 3.1 Perhitungan ............................................................................................... 27
Tabel 3.2 Perhitungan ............................................................................................... 29
Tabel 3.3 Fungsi OpenGL ........................................................................................ 35
Table 4.1 Tabel Perhitungan..................................................................................... 39
Tabel 4.2 Fungsi OpenGL ........................................................................................ 42
Tabel 5.1 Fungsi OpenGL ........................................................................................ 49
Tabel 6.1 Fungsi OpenGL ........................................................................................ 57
Tabel 8.1 Fungsi OpenGL: ....................................................................................... 78
Tabel 9.1 Fungsi OpenGL ........................................................................................ 95
Tabel 10.1 Pilihan material warna .......................................................................... 101
Tabel 10.2 Fungsi OpenGL .................................................................................... 108
PRAKTIKUM GRAFIKA KOMPUTER PERTEMUAN : 1
PENGENALAN OPENGL
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Pengenalan OpenGL
TUGAS : Membuat Video Tutorial Menginstal OpenGL
1.1 Tujuan
1. Praktikkan mampu mengerti tentang OpenGL
2. Praktikkan dapat memahami GL Utility Toolkit
3. Pratikkan dapat mengerti cara kerja OpenGL
C. 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 programmer 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 :
Tabel 1.2 Tabel Fungsi / Prosedur
Fungsi / Prosedur Penjelasan
LoadGlut(glut32.dll) ‘if you no
Pemanggilan library openGL
include gl in system’
Tabel 1.3 Fungsi / Prosedur yang sering digunakan dalam membut sebuah
object
Fungsi / prosedur Penjelasan
GL_QUADS Untuk menggambar segi empat
GL_LINES Penggambarkan sebuah garis
glVertex3f Untuk menentukan titik 3 dimensi
glLineWidth suatu fungsi yang berfungsi untuk
mengatur
tebalnya garis
glPointSize suatu fungsi yang berfungsi untuk
mengatur
besarnya suatu objek
gluOrtho2D yaitu suatu fungsi untuk mengatur
proyeksi hasil eksekusi dan
mendefinisikan besarnya sistem
koordinat dengan urutan kirikanan dan
bawah-atas
glClearColor Menandakan warna apa yang
digunakan sebagai background. Warna
dinyatakan dalam bentuk RGBA, angka
pertama memwakil warna merah, kedua
hijau, ketiga biru, dan keempat adalah
alpha atau tingkat transparansi. Tiap
warna berkisar antara 0
hngga 1.
glClear Untuk menghapus window dan
memberikan warna yang telah kita
definisakn sebelumnya
dengan menggunakan glClearColor
glPushMatrix Menyimpan koordinat Matrik yang ada
glPopMatrix Berguna untuk memanggil suatu fungsi
yang
telah disimpan pada glPushMatrix
glBegin(GL_Lines) Untuk memmulai menggambar dalam
bentuk
garis. Setiap pasangan verteks sebagai
segmen garis independent
glEnd Untuk mengakhiri penggambaran
sebuah
Garis
SwapBuffers(hDC) fungsi hampir sama dengan glFLush()
glflush() Rendiring
1.5 Kesimpulan
1. OpenGL adalah suatu library grafis standard open source dan digunakan
untuk mengembangkan aplikasi yang menghasilkan grafis Komputer 2D
atau 3D.
2. OpenGL 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
3. OpenGL bersifat Open-Source, multi-platform dan multi-language serta
digunakan mendefinisikan suatu objek, baik objek 2 dimensi maupun objek
3 dimensi.
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Transformasi 2
TUGAS : Membuat Program Gabungan Refleksi dan Shear
2.1 Tujuan
1. Praktikkan mampu mengerti transformasi 2D
2. Praktikkan dapat memahami transformasi shear
3. Praktikan mampu memahami tentang refleksi
Terhadap sumbu x :
Terhadap sumbu
: y
glEnd();
glFlush();
}
void myInit(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glColor3f(0.0f, 0.0f, 0.0f);
glPointSize(4.0);
gluOrtho2D(-10.0, 10.0, -10.0, 10.0);
}
void myDisplay()
{
drawPolygon();
drawPolygonMirrorReflection(reflectionAxis);
}
Source.cpp :
#include "Header.h"
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("1818057");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
}
Tampilan hasil :
Gambar 2.3 Tampilan hasil running program gabungan refleksi dan shear
Analisa :
Gambar 2.3 diatas merupakan tampilan hasil dari transformasi shear.
Bayangan terletak di bawah object. Transformasi shear hanya memiliki 2
koordinat yaitu sumbu x dan sumbu y.
Tabel 2.1 Fungsi OpenGL
dengan
polylinetapu
menghasilkan
kurba tertutup
dengan blok
warna (fill)
3 glColor4f Memberi warna titik 3 glColor3f(0.0, 0.0,
1.0);
dimensi
4 glVertex2i Fungsi untuk glVertex2i(10,10);
menggambarkan titik
pada koordinat x dan
y dengan nilai satuan
integer
5 glEnd Mengakhiri glEnd();
penggambaran
sebuah
Garis
6 glFlush Rendering glFlush();
suatu objek
8 gluOrtho2D Mengatur proyeksi gluOrtho2D(-10.0,
10.0, -
hasil eksekusi dan
10.0, 10.0);
mendefinisikan
besarnya sistem
koordinat dengan
urutan kiri – kanan
dan
bawah - atas
9 glClearColor Menandakan warna apa glClearColor(1.0,
1.0, 1.0,
yang digunakan
0.0);
2.5 Kesimpulan
1. Shear adalah suatu proses untuk mentransformasikan objek dengan cara
“membebani” objek tersebut kearah tertentu, sehingga dihasilkan suatu
objek yang distorsi.
2. Transformasi dapat diartikan sebagai suatu metode yang dapat digunakan
untuk memanipulasi lokasi sebuah titik.
3. Komposisi transformasi adalah menggabungkan beberapa tranformasi,
sehingga dapat menghasilkan bentuk transformasi yang lebih kompleks.
.
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Algoritma Pembentukan Objek
TUGAS : Membuat grafik dengan algoritma DDA dan Bressenham
3.1 Tujuan
1. Praktikan mampu mengetahui Algoritma Pembentukan Objek
2. Praktikan mampu membuat grafik dengan algoritma DDA dan Bressenham
di Microsoft Visual Studio 2013
3. Praktikan mampu mengatahui algoritma DDA dan Bressenham
b. Begitu juga sebaliknya, bila nilai |dy| lebih besar dari |dx|, maka
nilai variabel langkah = |dy|.
5. Hitung penambahan koordinat pixel yaitu
x_increment=dx/langkah, dan y_increment=dy/langkah
6. Koordinat selanjutnya (x+x_increment, y+y_increment)
B. Algoritma Bressenham
Algoritma Garis Bresenham adalah suatu algoritma yang menentukan
titik-titik dalam dimensi yang membentuk pendekatan dekat dengan garis
lurus antara dua titik yang diberikan. Pendekatan ini biasa digunakan untuk
menggambar garis pada layar komputer, karena hanya menggunakan
integer penambahan, pengurangan dan pergeseran. Algoritma ini
merupakan salah satu algoritma paling awal yang dikembangkan di bidang
komputer grafis.
Langkah-langkah pembentukan garis berdasarkan algoritm Bressenham
adalah:
1. Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
2. Tentukan salah satu sebagai titik awal (x0, y0) dan titik akhir (x1,y1).
3. Hitung dx, dy, dan 2dy - 2dx
4. Hitung parameter : pk = 2dy – dx
5. Untuk setiap xk sepanjang jalur garis, dimulai dengan k=0,
a. bila pk < 0 maka titik selanjutnya adalah: (xk+1, yk) dan pk + 2dy
b. bila pk > 0, titik selanjutnya adalah: (xk+1, yk+1) dan pk + 2dy –
2dx
6. Ulangi nomor 5 untuk menentukan posisi pixel berikutnya, sampai x =
x1 atau y = y1.
3.4 Langkah - Langkah Tugas
1. NIM : 1818057
1818057 = NIM Depan = 5 , NIM Belakang = 7
2. Perhitungan
a. Koordinat titik awal (1,5) Koordinat titik akhir (8,7)
b. Menentukan titik
X1 = 1 Y1 = 5
X2 = 8 Y2 = 7
c. Hitung |dx| dan |dy|
|dx| = |x2 – x1| = (8 – 1) = 7
|dy| = |y2 – y1| = (7 – 5) = 2
d. Nilai |dx| lebih besar dari |dy| maka langkahnya = 7
e. Menghitung x_inc dan y_inc
x_inc = dx / langkah = 7/7 = 1
y_inc = dy / langkah = 2/7 = 0,28
Iterasi 1 (1,5) Iterasi 2 (2; 5,28) Iterasi 3 (3; 5,56)
x + x_inc = 1 + 1 x + x_inc = 2 + 1 = 3 x + x_inc = 3 + 1 = 4
= 2 y + y_inc = 5 y + y_inc = 5,28 + y + y_inc = 5,56 +
+ 0,28 = 5,28 0,28 = 5,56 0,28 = 5,84
titik (2,5) titik (3,6) titik (4,6)
Next Step (2; 5,28) Next Step (3; 5,56) Next Step (4; 5,84)
0 - - 1 5
1 2 5,28 2 5
2 3 5,56 3 6
3 4 5,84 4 6
4 5 6,12 5 6
5 6 6,40 6 7
6 7 6,68 7 7
7 8 6,96 8 7
4. Grafik
8
7
6
5
4
3
2
1
0
1 2 3 4 5 6 7 8
K7 = (P7 = -7)
x = xk + 1 = 7 + 1 =
8
y = yk = 7
pk = pk + 2dy = -7 +
4=
-3
3. Tabel Perhitungan
Tabel 3.2 Perhitungan
Interasi Pk x y Pk + 1
0 - 1 5 -3
1 - 1+1=2 5 -3 + 4 = 1
3
2 1 2+1=3 5+1 1 + 4 - 14 = -9
=6
3 - 3+1=4 6 -9 + 4 = -5
9
4 - 4+1=5 6 -5 + 4 = -1
5
5 - 5+1=6 6 -1 + 4 = 3
1
6 3 6+1=7 6+1 3 + 4 - 14 = -7
=7
7 - 7+1=8 7 -7 + 4 = -3
7
4. Grafik
8
7
6
5
4
3
2
1
0
1 2 3 4 5 6 7 8
void init();
void display(void);
void dda(void);
int window_x;
int window_y;
int window_width = 720;
int window_height = 480;
char *judul_window = "1818057";
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glColor3f(255., 8.0, 1.0);
glPointSize(5.0);
glLoadIdentity();
gluOrtho2D(.0, 20.0, 0.0, 20.0);
}
void dda(void) {
int x1, y1, x2, y2;
float x, y, dx, dy, steps, x_inc, y_inc; x1 = 1;
y1 = 5;
x2 = 8;
y2 = 7;
x = x1; y = y1;
dx = x2 - x1; dy = y2 - y1;
x_inc = dx / steps;
y_inc = dy / steps;
glBegin(GL_LINE_STRIP);
glVertex2i(x, y);
do {
x += x_inc;
y += y_inc;
glVertex2i(round(x), round(y));
} while (x < x2);
glEnd();
glFlush();
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
dda();
glutSwapBuffers();
}
glutInit(&argc, argv);
window_x = (glutGet(GLUT_SCREEN_WIDTH) - window_width) / 2;
window_y = (glutGet(GLUT_SCREEN_HEIGHT) - window_height) /
2;
glutInitWindowSize(window_width, window_height);
glutInitWindowPosition(window_x, window_y);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutCreateWindow(judul_window);
init();
glutDisplayFunc(display);
glutMainLoop();
}
Tampilan Hasil :
Bresenham.cpp
#include <stdlib.h>
#include <glut.h>
#include <iostream>
}
void LineBres(GLint x1, GLint y1, GLint xEnd,
GLint yEnd)//rumus
{
GLint dx = (xEnd -
x1); GLint dy =
(yEnd - y1); GLint
p = 2 * dy - dx;
GLint twoDy = 2 +
dy;
GLint twoDyMinusDx = 2 * (dy -
dx); GLint x, y;
if (x1 > xEnd) {
x = xEnd;
y =
yEnd
;
xEnd
= x;
}
else
{
x = x1;
y = y1;
}
setPixel(x
, y);
while
(x<xEnd)
{
x++;
if (p < 0) p +=
twoDy; else
{
y++;
p += twoDyMinusDx;
}
setPixel(x, y);
}
}
void drawMyLine()
{
glColor3f(1.0, 0.0,
0.0);
glPointSize(4.0);
GLint x1 =
1; GLint
y1 = 5;
GLint xEnd
= 8; GLint
yEnd = 7;
LineBres(x1, y1, xEnd, yEnd);
}
void display()
{
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 50.0, 0.0,
50.0);
}
Tampilan hasil :
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Lingkaran
TUGAS : Membuat Perhitungan Lingkaran dan Program Lingkaran
4.1 Tujuan
1. Praktikan mampu memahami inisialisasi lingkaran
2. Praktikan mampu memahami object lingkaran
3. Praktikan mampu memahami dasar menampilkan susunan lingkaran
b. Tabel perhitungan
Table 4.1 Tabel Perhitungan
Iterasi x y pk titik
0 0 7 -6 -
1 1 7 -3 (1,7) (1,-7) (-1,7) (-1,-7) (7,1) (7,-1) (-7,1) (-7,-1)
2 2 7 2 (2,7) (2,-7) (-2,7) (-2,-7) (7,2) (7,-2) (-7,2) (-7,-2)
3 3 6 -7 (3,6) (3,-6) (-3,6) (-3,-6) (6,3) (6,-3) (-6,3) (-6,-3)
4 4 6 2 (4,6) (4,-6) (-4,6) (-4,-6) (6,4) (6,-4) (-6,4) (-6,-4)
5 5 5 -1 (5,5) (5,-5) (-5,5) (-5,-5) (5,5) (5,-5) (-5,5) (-5,-5)
c. Grafik
Source code
Program Lingkaran
Lingkaran.cpp
#include <stdio.h>
#include <iostream>
#include <glut.h>
#define round
using namespace std;
void myInit(void){
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(24, -16, -24, 16);
}
void midPointCircleAlgo()
{
int x = 0;
int y = r;
float decision = 1 - r;
plot(x, y);
void myDisplay(void){
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 0.0);
glPointSize(5.0);
midPointCircleAlgo();
glFlush();
}
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("1818057");
glutDisplayFunc(myDisplay);
myInit();
glutMainLoop();
}
Tampilan Hasil :
4.5 Kesimpulan
1. Lingkaran adalah kumpulan dari titik-titik yang memiliki jarak dari titik
pusat yang sama untuk semua titik
2. Lingkaran dapat digambarkan dengan menggunakan persamaan koordinat
rectangular tsb akan tetapi pendekatan ini menimbulkan dua masalah yaitu
Persamaan tersebut mengandung perhitungan akar yang operasinya
memakan waktu dan Timbul gap yang cukup signifikan pada lingkaran
ketika digambarkan.
3. Lingkaran merupakan objek yang simetris sehingga karakteristik ini dapat
dimanfaatkan untuk mengurangi pekerjaan pada saat menggambar
lingkaran.
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Pembentukan Obyek Garis
: Buat sesuai gambar obyek primitive dan beri isi nama
TUGAS
window menjadi Nama + NIM
5.1 Tujuan
1. Praktikan mampu memahami pembuatan primitif objek openGL
2. Praktikan mampu menerapkan primitif objek menggunakan openGL
3. Praktikan mampu membuat gabungan dari obejk primitive menggunakan
openGL
void main()
{
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 640);
glutCreateWindow("Febryan Alfaridzi 1818057");
gluOrtho2D(-350, 350, -350, 350);
glutDisplayFunc(gabung);
glutMainLoop();
}
ObyekGaris.h
#include <stdio.h>
#include <glut.h>
void drawLine1()
{
glBegin(GL_POLYGON);
glVertex2d(50, 0);
glVertex2d(100, 50);
glVertex2d(100, 100);
glVertex2d(0, 200);
glVertex2d(-100, 100);
glVertex2d(-100, 50);
glVertex2d(-50, 0);
glVertex2d(0, -50);
glVertex2d(0, -100);
glVertex2d(0, -50);
glVertex2d(-50, 0);
glVertex2d(-100, -50);
glVertex2d(-100, -100);
glVertex2d(0, -200);
glVertex2d(100, -100);
glVertex2d(100, -50);
glEnd();
glFlush();
}
void drawLine2()
{
glBegin(GL_POLYGON);
glVertex2d(250, 0);
glVertex2d(300, 50);
glVertex2d(300, 100);
glVertex2d(200, 200);
glVertex2d(100, 100);
glVertex2d(100, 50);
glVertex2d(150, 0);
glVertex2d(100, -50);
glVertex2d(100, -100);
glVertex2d(200, -200);
glVertex2d(300, -100);
glVertex2d(300, -50);
glEnd();
glFlush();
}
void drawLine3()
{
glBegin(GL_POLYGON);
glVertex2d(-150, 0);
glVertex2d(-100, 50);
glVertex2d(-100, 100);
glVertex2d(-200, 200);
glVertex2d(-300, 100);
glVertex2d(-300, 50);
glVertex2d(-250, 0);
glVertex2d(-300, -50);
glVertex2d(-300, -100);
glVertex2d(-200, -200);
glVertex2d(-100, -100);
glVertex2d(-100, -50);
glEnd();
glFlush();
}
void garisatas1()
{
glBegin(GL_LINE_STRIP);
glColor3f(1, 0, 0);
glVertex2d(0, 100);
glColor3f(1, 0, 0);
glVertex2d(0, 50);
glColor3f(1, 0, 0);
glVertex2d(50, 0);
glColor3f(1, 0, 0);
glVertex2d(100, 50);
glColor3f(1, 0, 0);
glVertex2d(100, 100);
glEnd();
glFlush();
}
void garisatas2()
{
glBegin(GL_LINE_STRIP);
glColor3f(1, 0, 0);
glVertex2d(200, 100);
glColor3f(1, 0, 0);
glVertex2d(200, 50);
glColor3f(1, 0, 0);
glVertex2d(250, 0);
glEnd();
glFlush();
}
void garisatas3()
{
glBegin(GL_LINE_STRIP);
glColor3f(1, 0, 0);
glVertex2d(-200, 100);
glColor3f(1, 0, 0);
glVertex2d(-200, 50);
glColor3f(1, 0, 0);
glVertex2d(-150, 0);
glColor3f(1, 0, 0);
glVertex2d(-100, 50);
glVertex2d(-100, 100);
glEnd();
glFlush();
}
void garisbawah1()
{
glBegin(GL_LINE_STRIP);
glColor3f(1, 0, 0);
glVertex2d(0, -100);
glColor3f(1, 0, 0);
glVertex2d(0, -50);
glColor3f(1, 0, 0);
glVertex2d(-50, 0);
glColor3f(1, 0, 0);
glVertex2d(-100, -50);
glColor3f(1, 0, 0);
glVertex2d(-100, -100);
glEnd();
glFlush();
}
void garisbawah2()
{
glBegin(GL_LINE_STRIP);
glColor3f(1, 0, 0);
glVertex2d(200, -100);
glColor3f(1, 0, 0);
glVertex2d(200, -50);
glColor3f(1, 0, 0);
glVertex2d(150, 0);
glColor3f(1, 0, 0);
glVertex2d(100, -50);
glColor3f(1, 0, 0);
glVertex2d(100, -100);
glEnd();
glFlush();
}
void garisbawah3()
{
glBegin(GL_LINE_STRIP);
glColor3f(1, 0, 0);
glVertex2d(-200, -100);
glColor3f(1, 0, 0);
glVertex2d(-200, -50);
glColor3f(1, 0, 0);
glVertex2d(-250, 0);
glEnd();
glFlush();
}
void gabung()
{
glClear(GL_COLOR_BUFFER_BIT);
drawLine1();
drawLine2();
drawLine3();
garisatas1();
garisatas2();
garisatas3();
garisbawah1();
garisbawah2();
garisbawah3();
}
Tampilan hasil :
5.5 Kesimpulan
1. Objek Primitif adalah interpretasi sejumlah set atau deretan titik pada
sebuah bentuk yang digambar pada layar.
2. Obyek primitive adalah sebuah obyek yang merupakan dasar dari
prmbentukan obyek lain yang lebih kompleks dari obyek primitive.
3. Point merupakan sebuah fungsi pada grafika komputer yang menghasilkan
output obyek sebuah titik.
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Clipping
TUGAS : Menghitung Clipping dan membuat program Clipping
6.1 Tujuan
1. Praktikan mampu implementasi transformasi Clipping
2. Praktikan mampu memahami konsep pada Clipping
3. Praktikan mampu menerapkan algoritma Clipping Metode Cohen-
Sutherland
Source code
Cohen.cpp
#include <windows.h>
#include<math.h>
#include<stdio.h>
#include<iostream>
#include<glut.h>
void display();
using namespace std;
float xmin = -2;
float ymin = -2;
float xmax = 2;
float ymax = 2;
float xd1 = 5, yd1 = 1, xd2 = -6, yd2 = -1;
void init(void)
{
glClearColor(0.0, 0, 0, 0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-20, 20, -20, 20);
}
int code(float x, float y)
{
int c = 0;
if (y>ymax)c = 8;
if (y<ymin)c = 4;
if (x>xmax)c = c | 2;
if (x<xmin)c = c | 1;
return c;
}
void cohen_Line(float x1, float y1, float x2, float y2)
{
int c1 = code(x1, y1);
int c2 = code(x2, y2);
float m = (y2 - y1) / (x2 - x1);
while ((c1 | c2)>0)
{
if ((c1 & c2)>0)
{
exit(0);
}
float xi = x1; float yi = y1;
int c = c1;
if (c == 0)
{
c = c2;
xi = x2;
yi = y2;
}
float x, y;
if ((c & 8)>0)
{
y = ymax;
x = xi + 1.0 / m*(ymax - yi);
}
else
if ((c & 4)>0)
{
y = ymin;
x = xi + 1.0 / m*(ymin - yi);
}
else
if ((c & 2)>0)
{
x = xmax;
y = yi + m*(xmax - xi);
}
else
if ((c & 1)>0)
{
x = xmin;
y = yi + m*(xmin - xi);
}
if (c == c1)
{
xd1 = x;
yd1 = y;
c1 = code(xd1, yd1);
}
if (c == c2)
{
xd2 = x;
yd2 = y;
c2 = code(xd2, yd2);
}
}
display();
}
void mykey(unsigned char key, int x, int y)
{
if (key == 'c')
{
cout << "terpotong";
cohen_Line(xd1, yd1, xd2, yd2);
glFlush();
}
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0, 1.0, 0.0);
glBegin(GL_LINE_LOOP);
glVertex2i(xmin, ymin);
glVertex2i(xmin, ymax);
glVertex2i(xmax, ymax);
glVertex2i(xmax, ymin);
glEnd();
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex2f(xd1, yd1);
glVertex2f(xd2, yd2);
glEnd();
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(0, 0);
glutCreateWindow("1818041 - Gesha Warilotte Erwinda");
glutDisplayFunc(display);
glutKeyboardFunc(mykey);
init();
glutMainLoop();
return 0;
}
Tampilan Hasil :
rendering.
8 gluOrtho2D Untuk mengatur gluOrtho2D(-20,
20, -20, 20);
proyeksi hasil
eksekusi dan
mendefinisikan
besarnya sistem
koordinat.
6.5 Kesimpulan
1. Pada transformasi viewing, perlu ditampilkan bagian gambar yang terdapat
dalam window. Semua yang gambar yang terdapat dalam window. Semua
yang berada di luar window akan dibuang.
2. Algoritma Cohen-Sutherland merupakan metode untuk menentukan apakah
sebuah garis perlu dipotong atau tidak dan menentukan titik potong garis.
3. Clipping adalah proses pemotongan objek atau pengguntingan objek
sehingga hanya objek yang berada pada area yang menjadi perhatian saja
yang terlihat.
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Algoritma Liang Barsky dan Clipping Polygon
: Membuat perhitungan dan program Algoritma Liang Barsky
TUGAS
dan Clipping Polygon
7.1 Tujuan
1. Praktikan mampu memahami konsep dari Algoritma Liang Barsky dan
Clipping Polygon
2. Praktikan mampu memahami dasar teori dari Algoritma Liang Barsky dan
Clipping Polygon
3. Praktikan mampu menerapkan fungsi dasar Algoritma Liang Barsky dan
Clipping Polygon
B. CLIPPING POLYGON
Clipping polygon (algoritma Sutherland-Hodman) memiliki
ketentuan yang lebih kompleks daripada clipping line. Clipping dilakukan
terhadap tiap tiap sisi window. Input berupa bentuk poligon, dan output
berupa hasil proses clipping.
Langkah-langkah pembentukan clipping polygon adalah:
1. Tentukan titik yang ingin di clipping.
2. Tentukan Xmax, Xmin, Ymax, dan Ymin
3. Mencari titik potong garis pada setiap sisi
a. Titik potong garis dengan sisi kiri window (x,y)
Tampilan Grafik
7.5 Kesimpulan
1. Clipping polygon (algoritma Sutherland-Hodman) memiliki ketentuan yang
lebih kompleks daripada clipping line, clipping dilakukan terhadap tiap tiap
sisi window, input berupa bentuk poligon, dan output berupa hasil proses
clipping.
2. Algoritma Liang-Barsky lebih efisien dibandingkan dengan Cohen
Sutherland karena perhitungan titik potong dihilangkan.
3. Ada beberapa algoritam clipping yang ada, namun kita akan membahas
algoritma yang diusulkan oleh Cohen–Sutherland dan Liang-Barsky
NIM : 1818057
NAMA : Febryan Alfaridzi
Objek 3D dan Pembentukan Objek 3D dengan Fungsi
MATERI :
OpenGL
: 1. Membuat object 3D
TUGAS 2. Menggabungkan 2 fungsi object 3D menggunakan
openGL
8.1 Tujuan
1. Praktikan dapat mengerti tentang apa itu Objek 3D
2. Praktikan dapat mengimplementasikan pembuatan Objek 3D
3. Praktikan dapat menggabungkan 2 fungsi Objek 3D menggunakan OpenGL
B. Objek 3 Dimensi
Benda tiga dimensi tersusun dari sekumpulan surface. Surface yaitu
permukaan kulit.
void initGL() {
glClearColor(255.0f, 255.0f, 255.0f, 1.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glShadeModel(GL_SMOOTH);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -6.0f);
glRotatef(anglePyramid, 1.0f, 1.0f, 0.0f);
glBegin(GL_POLYGON);
// Alas
glColor3f(0.0f, 255.0f, 255.0f);
glVertex3f(1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glEnd();
glBegin(GL_TRIANGLES);
// Front
glColor3f(1.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
// Right
glColor3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, -1.0f);
// Back
glColor3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(1.0f, -1.0f, -1.0f);
// Left
glColor3f(0.0f, 0.0f, 1.0f);
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glEnd();
glutSwapBuffers();
anglePyramid += 1.2f;
angleCube -= 0.15f;
}
return 0;
}
Tampilan Hasil :
Analisa :
Pada source code di atas pertama kita menggunakan library yang akan
di gunakan, lanjut setelah itu mendeklarasikan tiap nilai yang akan digunakan
dengan membuat method yang akan digunakan untuk memanggil fungsi
yang telah di buat sebelumnya, setelah itu jika sudah membuat method,
menentukan titik-titi yang akan di gunakan untuk digabungkan menjadi
beberapa titik sesuai objek yang akan kita buat nantinya, jika sudah baru
masuk ke bagian method menampilkan objek ke layar window.
2. Menggabungkan 2 fungsi object 3d menggunakan openGL
Source code :
Source.cpp
#include <stdlib.h>
#include <glut.h>
float w = 400, h = 400;
float sudut = 0, sx = 10, sy = 6, sz = 0, t = -5;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
//solid glPushMatrix();
glTranslatef(-1, 0, t);
glRotatef(sudut, sx, sy, sz);
glColor3d(1, 0, 1);
glutSolidDodecahedron();
glPopMatrix();
void init()
{
glClearColor(1, 1, 1, 1);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45., (GLdouble)w / (GLdouble)h, 1.,
300.);
glMatrixMode(GL_MODELVIEW);
}
glutPostRedisplay();
glutTimerFunc(50, update, 0);
}
Tampilan Hasil :
Analisa :
Pada source code diatas pertama kita akan memasukan library yang
akan di gunakan. Selanjutnya mendeklasrasikan tiap variabel yang akan di
gunaka untuk perhitungan untuk membentuk sebuah objek yang di inginkan.
Kemudian memanggil fungsi untuk membuat objek 3D berupa fungsi void
display(), Init(), mykeyboard(), update(), dan main(). Void myInit()
bertujuan untuk mengatur tampilan window. Pada void mykeyboard()
bertujuan untuk menggerakkan objek menggunakan inputan keyboard user.
Void update() bertujuan untuk melakukan refresh secara terus menerus, dan
terakhir pada void main() untuk menjalankan program.
Tabel 8.1 Fungsi OpenGL:
No. Fungsi Pengertian Contoh
Penggunaan
Untuk memulai glBegin(GL_POLYG
1 glBegin
menggambar ON
dalam bentuk garis. );
glColor3f Berfungsi memberikan glColor3f(f,f,f)
2
warna. ;
Untuk mengakhiri glEnd();
3 glEnd
penggambaran sebuah
garis.
4 glFlush Untuk merending suatu glFlush();
objek.
Berfungsi untuk glColor3f(0,0,1)
5 glColor3f
memberikan warna. ;
Untuk mengatur proyeksi gluOrtho2D(-10,
hasil eksekusi hasil dan 10, -10,
6 gluOrtho2D
mendefinisikan besarnya 10);
sistem.
Menentukan letak window glutInitWindowPo
glutInitWindowP
7 sition( 100,
osition dengan patoannya ialah
150);
pada window kiri atas
glutCreateWindo Berfungsi untuk glutCreateWindow
8 w ("181 8085");
memeberi nama pada
tampilan window
program.
Unutuk memanggil fungsi glutDisplayFunc(
lain yang menentukan myDisp lay);
9 glutDisplayFunc konten dari windows telah
dibuat sebelumnya.
Utuk event perulangan, glutMainLoop();
display pada callback akan
10 glutMainLoop
ditampilkan selama
aplikasi
belum ditutup.
Melakukan operasi pop glPopMatrix();
11 glPopMatrix
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Transformasi 3D dan Interaksi dengan perangkat
: Membuat transformasi objek 3D dengan metode translasi
TUGAS
dan rotate menggunakan objek 3D selain teapot
9.1 Tujuan
1. Praktikan dapat mengerti tentang apa itu Transformasi 3D
2. Praktikan dapat mengimplementasikan Transformasi 3D
3. Praktikan dapat mengerti tentang Interaksi dengan perangkat
2. Scalling (Perbesaran)
Penskalaan dilakukan dengan mengisi tr = (0,0,0) dan matriks M
diatur seperti beikut.
void teapot() {
glColor3d(0, 1, 1);
glutWireTeapot(tepot);
}
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0, 0, t);
glRotatef(sudut, sx, sy, sz);
teapot();
glutSwapBuffers();
}
void init() {
glClearColor(1.0, 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45., (GLdouble)w / (GLdouble)h,
1.,300.);
glMatrixMode(GL_MODELVIEW);
}
void myKeyboard(unsigned char key, int x, int y) {
if (key == 'x') {
sx = 0;
sy = 1;
sz = 0;
sudut += 10;
}
}
void mySpecialKeyboard(int key, int x, int y) {
switch (key) {
case GLUT_KEY_UP:
tepot += 1;
break;
case GLUT_KEY_DOWN:
tepot -= 1;
break;
}
}
void update(int value) {
glutPostRedisplay();
glutTimerFunc(50, update, 0);
}
void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH |
GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(w, h);
glutCreateWindow("Objek 3D");
glutDisplayFunc(display);
init();
glutTimerFunc(50, update, 0);
glutKeyboardFunc(myKeyboard);
glutSpecialFunc(mySpecialKeyboard);
glutMainLoop();
}
Paramater func adalah fungsi yang akan ditangani dengan event klik
mouse.
GLUTAPI void APIENTRY glutMotionFunc(void *func(int x,
int y));
void renderScene(void) {
static float alpha = 0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0, 0, 0, 0);
glLoadIdentity();
glTranslatef(xt, yt, zt);
glRotatef(sudut, x1, y1, z1);
glRotatef(alpha, 1, 1, 1);
glColor3f(0, 1, 1);
glutWireCone(2, 4, 25, 25);//fungsi kerucut
glColor3f(1, 0, 0);
glutSwapBuffers();
}
Tampilan Hasil :
NIM : 1818057
NAMA : Febryan Alfaridzi
MATERI : Objek Solid dan Lighting
Membuat object 3d dengan fungsi gl_line atau polygon dan
TUGAS :
Menerapkan lighting
10.1 Tujuan
1. Praktikan dapat mengerti tentang apa itu Objek Solid
2. Praktikan dapat mengimplementasikan Objek Solid dan Lighting
3. Praktikan dapat mengerti tentang apa itu Lighting
c. Kerucut Solid.
void glutSolidCone(GLdouble base, GLdouble
height,GLint slices, GLint stacks);
d. Torus Solid.
void glutSolidTorus(GLdouble innerRadius, GLdouble
outerRadius, Glintnsides, GLint rings);
e. Dodecahedron Solid.
void glutSolidDodecahedron(void);
g. Oktahedron solid.
void glutSolidOctahedron(void);
h. Icosahedron solid.
void glutSolidIcosahedron(void);
i. Poci teh solid
void glutSolidTeapot(GLdouble size);
Contoh Program
Proyeksi Cube
#include <glut.h>
void cube()
{
//menggambar kubus dan transformasitarnslasi 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
void setLighting()
{
//set light sources
GLfloat lightIntensity[] =
{
0.7f, 0.7f, 0.7f, 1.0f
};//mensettingpencahayaan
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 thewindow
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 renderScene(void){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
GLfloat LightPosition[] = { 10.0f, 20.0f, 30.0f, 0.0f
};
LightPosition[0] = a;
LightPosition[1] = b;
glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);
glRotatef(sudut, o, p, q);
glEnable(GL_COLOR_MATERIAL);
//kubus atas
glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glTranslatef(0, 0, -100);
glRotatef(50, 0, 1, 0);
glColor3f(1, 1, 0);
glutSolidCube(20);
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
//balok bawah
glPushMatrix();
glEnable(GL_COLOR_MATERIAL);
glColor3f(0, 1, 0);
glTranslatef(0, 0, -100);
glRotatef(50, 0, 1, 0);
glutWireCube(35);
glDisable(GL_COLOR_MATERIAL);
glPopMatrix();
glutSwapBuffers();
}
Tampilan Hasil :
11.1 Kesimpulan
1. OpenGL adalah suatu library grafis standard open source dan digunakan
untuk mengembangkan aplikasi yang menghasilkan grafis Komputer 2D
atau 3D.
2. Shear adalah suatu proses untuk mentransformasikan objek dengan cara
“membebani” objek tersebut kearah tertentu, sehingga dihasilkan suatu
objek yang distorsi.
3. Prinsip algoritma DDA adalah mengambil nilai integer terdekat dengan
jalur garis berdasarkan atas sebuah titik yang telah ditentukan
sebelumnya (titik awal garis Algoritma pembentukan garis DDA).
4. Lingkaran merupakan objek yang simetris sehingga karakteristik ini
dapat dimanfaatkan untuk mengurangi pekerjaan pada saat menggambar
lingkaran.
5. Obyek primitive adalah sebuah obyek yang merupakan dasar dari
prmbentukan obyek lain yang lebih kompleks dari obyek primitive.
6. Clipping adalah proses pemotongan objek atau pengguntingan objek
sehingga hanya objek yang berada pada area yang menjadi perhatian saja
yang terlihat.
7. Clipping polygon (algoritma Sutherland-Hodman) memiliki ketentuan
yang lebih kompleks daripada clipping line, clipping dilakukan terhadap
tiap tiap sisi window, input berupa bentuk poligon, dan output berupa
hasil proses clipping.
8. Objek yang solid merupakan objek yang dimana face atau permukaan
objek tersebut dilapisi atau di fill sedangkan pada objek yang wire yang
ditampilkan hanyalah dari objek tersebut.
9. GlutSpecialFunc merupakan suatu fungsi callback pada opengl yang
digunakan untuk mengaktifkan tombol-tombol khusus pada keyboard
sehingga dapat digunakan untuk berinteraksi antara user dengan objek
yang ada di dalam display opengl.
10. Pencahayaan ambient adalah cahaya yang sudah berserakan begitu
banyak disebabkan oleh lingkungan dan arahnya tidak mungkin
ditentukan atau tampaknya datang dari segala penjuru.
11.2 Saran
1. Perlu penambahan jam untuk praktikum karena dengan waktu 1 jam saja
tidak semua praktikkan akan langsung mampu menangkap apa yang telah
di jelaskan.
2. Alangkah baiknya diadakan sesi pertanyaan wajib untuk setiap orang
agar praktikkan dapat berbagi informasi dari setiap pertanyaan yang ada.
3. Alangkah baiknya praktikkan diharuskan membagikan hasil
praktikumnya setelah selesai praktikum untuk memastikan semua
praktikkan mengikuti kegiatan praktikum seperti yang semestinya.
Asistensi
No. Tanggal Paraf
Konsep Program Hasil Akhir
Pengenal OpenGL
Transformasi 2D dan 3D
Instruktur