( Grafika Computer 1)
2 SKS
Teknik Informatika
Universitas Gunadarma
Ide Dasar Grafika Komputer
l Grafika komputer adalah suatu bidang
ilmu yang mempelajari bagaimana
membangun grafik (gambar) baik 2D
maupun 3D yang kelihatan nyata
menggunakan komputer
l Salah satu bidang grafika komputer yang
sangat terkenal adalah Desain grafis
Beberapa Penerapan Grafika
Komputer
l Entertainment, misalnya dalam pembuatan film animasi. Terminator II dan Titanic
merupakan contoh film non animasi yang memanfaatkan efek-efek grafika komputer
yang sangat canggih.
l Visualisasi Proses, misalnya menggambarkan layout kinerja proses pabrik, atau proses-
proses yang dalam modul ajar. Visualisasi Hasil Penelitian, seperti menggambar grafik
performance, grafik perubahan bahkan grafik model hasil simulasi dan implementasi
program.
l Bersama-sama dengan image processing digunakan sebagai algoritma identifikasi,
seperti yang dilakukan pada kepolisian untuk menggambarkan wajah seseorang secara
3D dan identifikasi seseorang.
l GIS (Geographic Information System)
l Masil banyak yang lainnya.
Applications
• Simulators (flight,
driving)
• Mechanical CAD
(Computer
Aided Design)
• Architectural
visualization
• Advertising
4
Applications
• Computer games
• Special effects
• Computer art
• Scientific visualization
• Medical imaging
5
Apakah Beda Gambar dan
Photo?
l Photo merupakan gambar yang dihasilkan
dengan proses capture dari kegiatan nyata.
Hasilnya setiap detail akan muncul,
misalnya jumlah kumis pada kucing sama
l Gambar adalah proses pembentukan yang
dilakukan dengan meniru kegiatan nyata.
Hasilnya ada beberapa detail yang tidak
dapat ditampilkan. Siapa yang peduli pada
jumlah kumis pada kucing saat
menggambar?
Macam-Macam Gambar
Komputer
l Raster Image adalah gambar yang strukturnya
berupa matriks. Dimana setiap titik (x,y) mempunyai
nilai berupa warna yang digunakan seperti RGB atau
CYMK. File dengan ekstensi BMP, GIF, TIFF, JPG
dan PNG merupakan contoh dari Raster Image.
Model gambar ini digunakan dalam Image
Processing
l Vector Image adalah gambar yang strukturnya
berupa vektor. Gambar yang dibuat menggunakan
AutoCAD atau Maya atau gambar-gambar pada GIS,
ini merupakan contoh dari Vector Image. Model
gambar semacam ini digunakan dalam grafika
komputer dan GIS
Pada tahun 1950-an
l Keluarannya via teletypes, lineprinter, dan
cathode ray tube (CRT). Suatu picture yang
di reprodukisi menggunakan karakter gelap
dan terang
Part 2
Contoh Gambar nya
linesprinter CRT
Part 2
Tahun 1960-an
l Merupakan permulaan grafik interaktif
modern, keluarannya adalah grafik
vektor dan grafik interaktif.
l Permasalahan yang terburuk adalah
masalah biaya dan mesin yang tidak
bisa di akses.
l Misalnya : Spacewars
Part 2
Contoh gbr
l Spacewars
Part 2
Tahun 1970-an
l Keluaran mengenai raster display,
kemampuan grafis masih tipis dan tebal.
l Seperti :
Ø Video arcade game ( GAME seperti di TIMEZONE )
Ø film “Westword” > film pertama kali menggunakan CG
Ø Apple II, warna grafik komputer pribadi
Ø Specular Highlighting
Part 2
Contoh gambarnya
Specular
Apple II.. Video Arcade Film Westworld Highlighting
GAMES
Part 2
Tahun 1980-an
l Keluarannya adalah grafik raster built-in,
gambar bitmap, dan pixel.
l Biaya – biaya komputer pribadi
berkurang secara drastis
l Trackball dan mouse menjadi alat
interaktif yang baku.
Part 2
Contoh Gambar
Raster build-in
Part 2
Tahun 1990-an
l Sejak diperkenalkan VGA, SVGA,
komputer pribadi bisa dengan mudah
menampilkan gambar hidup dan gambar
photo-realistik dan juga gambar 3D
rendering yang merupakan kemajuan
utama dan mampu merangsang aplikasi
garfik sinematik.
l Misalnya : Jurassic park, Toy Story
Part 2
Tahun 2000-2001
l Munculah NVIDIA Corporation , GeForce
256, dan GeForce3.
Part 2
Tahun 2003
l Berkembang lagi ID Software – mesin
grafik Doom.
l DOOM adalah bagian dari DNA id
software dan membutuhkan talenta dan
otak tercerdas di dalam industri ini demi
membawa seri berikut dari franchise
utama kita” Ujar Todd Hollenshead,
CEOnya id software.
Part 2
Kekuatan Pemrosesan yang
Murah
Chips sebagai Kunci Subsistem Grafik
Keuntungan - Hukum Moore
– harga/performance meningkat 2x setiap 18 bulan untuk
setiap penggandaan jumlah transistor.
– Teknologi bergerak secara eksponensial kecuali
pertumbuhan www.
CPU
Komputasi 64-bit masuk ke dalam mainstream
• Server: Intel Itanium, AMD Opteron
• Consumer: IBM G5, AMD Athlon64
– AMD Athlon MP
– Intel Xeon
– Sun UltraSPARC III
– Hewlett Packard PA-RISC
– IBM POWER4
Kekuatan Pemrosesan yang
Murah
Graphics subsystems
– SGI, Sun, HP, Evans & Sutherland masih memiliki ceruk
yang selektif, meskipun PC cards menguasai pasar
bawah dan menengah (nVidia GeForce3, ATI’s Radeon
9000 line, 3DLabs’ Wildcat)
– Spesifik Graphics Hardware (nVidia GeForceFX, ATI
Radeon 9800) memasuki tahap baru dukungan grafik
main processor graphics (Intel MMX, AMD 3DNow!)
SELESAI
Pengenalan OpenGL
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).
Membersihkan Windows
Menggambar pada layar komputer berbeda dengan menggambar pada kertas putih yang
dari pabriknya sudah berwarna putih. Pada komputer, memory untuk menampilkan gambar
biasanya diisi dengan gambar yang berasal dari perintah gambar paling akhir, jadi perlu
dibersihkan dengan warna latar belakang sebelum digambar lagi. Warna latar belakang yang
dipilih tergantung dari aplikasi yang akan dibuat. Sintaks glClearColor(Glclamp red,Glclamp
green, Glclamp blue, Glclamp alpha) digunakan untuk memilih warna, yang akan digunakan
untuk membersihkan latar belakang dalam mode RGBA. Selanjutnya perintah
glClear(Glbitfield mask) digunakan untuk membersihkan buffer yang dispesifikasikan dengan
warna yang telah ditentukan. Contoh berikut ini perintah yang digunakan untuk
membersihkan layar latar belakang dengan warna hitam dan buffer apa yang akan
dibersihkan. Dalam hal ini, buffer warna yang akan dibersihkan karena buffer warna
merupakan tempat gambar disimpan.
glClearColor(0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
Spesifikasi Warna
Pada OpenGL mendeskripsikan objek dengan warna objek adalah proses yang berjalan
sendiri-sendiri. Karena pada umumnya seorang programmer akan mengatur warna terlebih
dahulu lalu menggambar objek. Sebelum warna diubah maka semua objek yang digambar
sesudah perintah tersebut akan menggunakan warna terakhir yang terdapat pada coloring
scheme.
Untuk warna digunakan perintah glColor3f(), jika lebih dari tiga maka argumen keempat
adalah alpha yang akan dijelaskan pada bagian blending sebagai salah satu efek yang
dipunyai OpenGL. Contoh berikut menunjukkan urutan langkah dalam proses spesifikasi
warna sebelum objek digambar.
glColor3f(0.0,1.0,0.0); //setting warna
draw_object(A); //gambar objek A
Memaksa Proses Menggambar Sampai Selesai
Kebanyakan sistem grafik modern sudah menggunakan sistem graphics pipeline. Dimana
CPU utama memberikan issue perintah menggambar dan hardware lain yang melakukan
transformasi, clipping, shading, texturing dan lain-lain. Pada arsitektur yang demikian,
proses tidak dilakukan pada satu komputer karena setiap komputer mempunyai tugas
sendiri. CPU utama tidak harus menunggu proses pada masing-masing komputer tadi
selesai, tapi bisa dengan memberikan issue perintah gambar yang berikutnya. Untuk inilah
OpenGL menyediakan perintah glFlush() yang memaksa client untuk segera mengirim paket
network walaupun belum penuh. Program sebaiknya ditulis menggunakan perintah ini
karena glFlush() tidak memaksa proses gambar untuk selesai tetapi memaksa proses
gambar untuk segera dieksekusi, sehingga dijamin semua perintah gambar yang
sebelumnya akan segera dieksekusi dalam suatu waktu tertentu.
Instalasi OpenGL
Berikut adalah tahapan dalam melakukan instalasi OpenGL pada MS Visual C++ 6.0.
1. File dll yang diperlukan seperti glu32.dll, glut32.dll, dan opengl32.dll harus ada
didalam folder Windows System32, seperti tampak pada gambar 1.
File opengl32.dll dan glu32.dll akan ada di folder windows/system32 pada saat
melakukan instalasi Windows XP
Program 1 (layar.cpp)
/* Program layar.cpp
* Pengenalan OpenGL
*/
#include <windows.h>
#include <GL\glut.h>
void display(void)
{
//membersihkan buffer
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void init(void){
//membuat background warna merah
glClearColor(1.0,0.0,0.0,0.0);
//set viewport dengan nilai 320 x 240, inisialisasi windowsize
glViewport(0,0,320,240);
// set the 2D clipping area
gluOrtho2D(0.0, 160.0,0.0, 120.0);
}
/* Deklarasi window size, position, dan display mode(single buffer and RGBA).
* Pemanggilan routin inisialisasi.
* Memanggil fungsi untuk manampilkan objek di layar
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (320, 240);
glutInitWindowPosition (200, 100);
glutCreateWindow ("Program layar");
init ();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Program 1 (Hallo.cpp)
/*
* Program hallo.cpp
* Pengenalan OpenGL
*/
#include <windows.h>
#include <GL/glut.h>
void display(void)
{
/* Membersihkan semua pixel di buffer(clear all pixels) */
glClear (GL_COLOR_BUFFER_BIT);
/* Menggambar polygon (rectangle) (0.25, 0.25, 0.0) dan (0.75, 0.75, 0.0)
* Objek berwarna hijau
*/
glColor3f (0.0, 1.0, 0.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
/* Deklarasi window size, position, dan display mode(single buffer and RGBA).
* Pemanggilan routin inisialisasi.
* Memanggil fungsi untuk manampilkan objek di layar
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (640, 480);
glutInitWindowPosition (200, 100);
glutCreateWindow ("Program Pertamaku");
init ();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Program 2 (garis.cpp)
/* Program garis.cpp
* Pengenalan OpenGL
*/
#include <windows.h>
#include <GL\glut.h>
void display(void)
{
//membersihkan buffer
glClear(GL_COLOR_BUFFER_BIT);
//menggambar garis
glBegin(GL_LINES);
glColor3f(1.0,0.0,0.0); //merah
glVertex2f(10.0,10.0);
glColor3f(0.0,0.0,1.0); //biru
glVertex2f(10.0,110.0);
glColor3f(0.0,1.0,0.0); //hijau
glVertex2f(100.0,110.0);
glColor3f(1.0,1.0,0.0); //kuning
glVertex2f(100.0,10.0);
glEnd();
glFlush();
}
void init(void){
//membuat background warna merah
glClearColor(0.0,0.0,0.0,0.0);
//set viewport dengan nilai 320 x 240, inisialisasi windowsize
glViewport(0,0,320,240);
// set the 2D clipping area
gluOrtho2D(0.0, 160.0,0.0, 120.0);
glPointSize(5.0);
}
/* Deklarasi window size, position, dan display mode(single buffer and RGBA).
* Pemanggilan routin inisialisasi.
* Memanggil fungsi untuk manampilkan objek di layar
*/
Grafik Komputer :
KONSEP DASAR
Universitas Gunadarma
2006
• Animasi: Menetapkan/menampilkan
kembali tingkah laku/behavior objek
bergantung waktu .
Graphics
Application Application
Library Graphics
model program
(GL) System
Pemodelan Geometris
3D
• Arsitektur Vektor
• Arsitektur Raster
• Blind Spot
– adalah bagian retina yang tidak mengandung receptor sehingga tidak
dapat menerima dan menginterpretasi informasi
255
Black
• Subjective brightness
– Merupakan tingkat kecemerlangan yang dapat
ditangkap sistem visual manusia;
Gray 128
– Merupakan fungsi logaritmik dari intensitas
cahaya yang masuk ke mata manusia;
– Mempunyai daerah intensitas yang bergerak dari
ambang scotopic (redup) ke photocopic (terang).
White 0
• Brightness adaption
– Merupakan fenomena penyesuaian mata manusia Brightness Spacing
– dalam membedakan gradasi tingkat kecemerlangan; Proses Kwantisasi
– Batas daerah tingkat kecemerlangan yang mampu Brightness Resolution
dibedakan secara sekaligus oleh mata manusia lebih kecil
dibandingkan dengan daerah tingkat kecemerlangan sebenarnya.
-Sistem Koordinat
dengan R,G, B sebagai
axes.
• Indexed Color
• High Color
High Color
True Color
Indexed Color
Koordinat Sistem
y
y
• Koordinat sistem
Framebuffer OpenGL
(0,0) x
Contoh : 2
1. (0, 0)
3
2. (5, 7)
1
3. (8, 3)
Grafik Komputer :
Geometri Primitive
Universitas Gunadarma
Pixel Aktif
• Garis Vertikal y
– Garis yang membentang secara paralel
dengan sumbu Y dengan asumsi titik P1
pada koordinat Y1 lebih kecil daripada Y2 dari P2,
sedangkan X1 dan X2 konstant
– Algoritma :
1. Menentukan titik awal (P1) dan titik akhir (P2) x
2. Periksa posisi sumbu (koordinat)
Jika titik ahir < titik awal,
Lakukan inkrementasi sumbu Y dati titik awal sampai titik akhir
Jika tidak, maka
Lakukan dekrementasi sumbu Y dati titik awal sampai titik akhir
3. Tampilkan garis menggunakan parameter koordinat yang telah
dihitung.
Grafik Komputer :
Transformasi Geometri
2 Dimensi
Universitas Gunadarma
2006
Matriks dan
Transformasi Geometri
⎡ M11 M12 L M1n ⎤
⎢ M21 M22 L M2n ⎥⎥
• Representasi umum suatu Matriks adalah : M=⎢
⎢ M M O M ⎥
⎢ ⎥
⎣Mm1 Mm2 L Mmn ⎦
TRANSLASI
• Translasi adalah suatu pergerakan/perpindahan semua titik dari
objek pada suatu jalur lurus sehingga menempati posisi baru.
• Jalur yang direpresentasikan oleh vektor disebut Translasi atau
Vektor Geser.
⎡a b ⎤ ⎡ x ⎤ ⎡ x'⎤
• Pergeseran tersebut dapat ditulis : ⎢ ⎥ ⎢ y ⎥ = ⎢ y '⎥
⎣ c d ⎦⎣ ⎦ ⎣ ⎦
Tx = 2
Ty = 1
ROTASI
• Rotasi adalah mereposisi semua titik dari objek sepanjang jalur
lingkaran dengan pusatnya pada titik pivot.
SKALA
• Penskalaan koordinat dimaksudkan untuk menggandakan
setiap komponen yang ada pada objek secara skalar.
• Keseragaman penskalaan berarti skalar yang digunakan
sama untuk semua komponen objek.
×2
X × 2,
Y × 0.5
CONTOH
• Translasi : Y 6
⎡4⎤
5 ⎢4⎥
⎣ ⎦
4
dx = 2 3
dy = 3 2
⎡2⎤
1 ⎢1 ⎥
⎣ ⎦
0
1 2 3 4 5 6 7 8 9 10
X
Y
• Skala : 6
5
sx = 3 4
sy = 2 3
2
⎡6 ⎤ ⎡9 ⎤
1 ⎡2⎤ ⎡3⎤ ⎢2⎥ ⎢2⎥
⎢1 ⎥ ⎢1 ⎥ ⎣ ⎦ ⎣ ⎦
⎣ ⎦ ⎣ ⎦
0
1 2 3 4 5 6 7 8 9 10
X
Y
• Rotasi :
6
π
5 θ=
6
4
3
2
1 θ
0
1 2 3 4 5 6 7 8 9 10
X
Koordinat Homogen
• Koordinat Homogen adalah representasi koordinat 2 dimensi
dengan 3 vektor.
⎡ x⎤
⎡ ⎤ homogeneous coords ⎢ ⎥
x
⎢ y ⎥ ⎯⎯ ⎯ ⎯ ⎯⎯→ ⎢ y ⎥
⎣ ⎦ ⎢⎣ 1 ⎥⎦
⎡ cos( θ ) − sin( θ ) 0⎤
R otation = ⎢⎢ sin( θ ) cos( θ ) 0 ⎥⎥
⎢⎣ 0 0 1 ⎥⎦
⎡ a 0 0⎤
Scale = ⎢⎢ 0 b 0⎥⎥
⎢⎣ 0 0 1⎥⎦
⎡1 0 Tx ⎤
⎢ ⎥
Translation = ⎢0 1 Ty ⎥
⎢0 0 1 ⎥
⎣ ⎦
• Tranformasi Gabungan :
– Rotasi sebagai titik perubahan : translasi – rotasi-
translai
– Skala sebgai titik perubahan : translasi – skala-
translasi
– Perubahan sistem koordinat : translasi – rotasi –
skala
⎡a b ⎤ ⎛ ⎡ e f ⎤ ⎡i j ⎤ ⎞ ⎡a b ⎤ ⎡ ei + fk ej + fl ⎤
⎢ c d ⎥ • ⎜⎜ ⎢ g •
h ⎥⎦ ⎢⎣k
⎟= •
l ⎥⎦ ⎟⎠ ⎢⎣ c d ⎥⎦ ⎢⎣ gi + hk gj + hl ⎥⎦
⎣ ⎦ ⎝⎣
⎡aei + afk + bgi + bhk aej + afl + bgj + bhl ⎤
=⎢
⎣ cei + cfk + dgi + dhk cej + cfl + dgj + dhl ⎥⎦
⎡a b ⎤ ⎡ e f ⎤ ⎡ae + bg af + bh ⎤
⎢c d ⎥ • ⎢ g =
h ⎥⎦ ⎢⎣ ce + dg cf + dh ⎥⎦
⎣ ⎦ ⎣
⎡e f ⎤ ⎡a b ⎤ ⎡ ea + fc eb + fd ⎤
⎢g • =
⎣ h ⎥⎦ ⎢⎣ c d ⎥⎦ ⎢⎣ ga + hc gb + hd ⎥⎦
• Rotasikan sebuah segment garis sebesar 45o dengan endpoint pada titik a
!
– Posisi awal a
a
– Translasi ke titik pusat
a
– Rotasi 45o
a
– Translasi ke titik semula
a
⎡1 0 − 3⎤ ⎡cos(45) − sin(45) 0⎤ ⎡1 0 3⎤ ⎡ a x ⎤ ⎡ a ' x ⎤
⎢0 1 0 ⎥ ⎢ sin(45) cos(45) 0⎥ ⎢0 1 0⎥ ⎢a ⎥ = ⎢a ' ⎥
⎢ ⎥⎢ ⎥⎢ ⎥⎢ y ⎥ ⎢ y ⎥
⎢⎣0 0 1 ⎥⎦ ⎢⎣ 0 0 1⎥⎦ ⎢⎣0 0 1⎥⎦ ⎢⎣ 1 ⎥⎦ ⎢⎣ 1 ⎥⎦
Transformasi Lainnya
• Refleksi
⎡−1 0 0⎤
⎡1 0 0⎤ ⎢ 0 −1 0⎥
⎢0 −1 0⎥ ⎡0 1 0⎤
⎢ ⎥ ⎢1 0 0⎥
⎢ ⎥ ⎢⎣ 0 0 1⎥⎦ ⎢ ⎥
⎢⎣0 0 1⎥⎦ ⎣⎢0 0 1⎥⎦
⎡−1 0 0⎤
⎢ 0 1 0⎥
⎢ ⎥
⎢⎣ 0 0 1⎥⎦
• Shear
Arah x Arah y
⎡1 shx 0⎤ ⎡ 1 0 0⎤
⎢0 1 0⎥ ⎢ sh
⎢ ⎥ ⎢ y 1 0 ⎥⎥
⎢⎣0 0 1⎥⎦ ⎢⎣ 0 0 1 ⎥⎦
Grafik Komputer :
KLIPING
Universitas Gunadarma
2006
Definisi
• Kliping adalah pemotongan suatu objek dengan
bentuk tertentu
Kliping Titik
• Untuk menentukan letak suatu titik di dalam jendela
kliping, digunakan ketentuan :
Xmin O X O Xmax dan
Ymin O Y O Ymax
Ymax
P2
P1
Ymin
Xmin Xmax
• Pada gambar di atas, terdapat sebuah jendela kliping
dengan parameter sebagai berikut :
Xmin - batas minimum sumbu X
Xmax - batas maksimum sumbu x
Ymin - batas minimum sumbu Y
Ymax - batas maksimum sumbu Y
P2’
L R
P1’
P1
B
• Untuk menentukan letak sebuah garis di dalam jendela kliping
dilakukan analisis letak titik yang menentukan garis tersebut
dan memastikan bahwa titik-titik tersebut berada di dalam
jendela kliping.
Kliping Garis
P’(x,y),P2'(x,y)
Kliping Garis
Cohen-Sutherland (1/6)
• Hubungan antara sebuah garis dengan jendela kliping
dapat ditulis seperti hubungan antara titik awal dan titik
akhir sebuah garis dengan jendela kliping
P1(x,y) dan P2(x,y) ⇔ W(L,R,T,B)
• Untuk menentukan relasi tersebut diperlukan suatu
struktur data pembantu yang disebut pointcode.
Dengan pointcode kita dapat mengidentifikasi posisi
titik terhadap jendela kliping.
• Nilai untuk pointcode l, r, t dan b adalah 1 dan 0 yang
merupakan nilai logika yang dapat dimengerti dengan
nilai true dan false.
• Suatu titik yang visible berarti titik tersebut terletak di
dalam jendela kliping, dan invisible jika terletak di luar
jendela kliping.
Kliping Garis
Cohen-Sutherland (2/6)
• Berdasarkan urutan kode, pointcode ditentukan :
T B R L 1001 1000 1010
Kliping Garis
Cohen-Sutherland (3/6)
• Visibilitas suatu garis tergantung dari pointcode pada
kedua titik yang membentuk garis tersebut, yaitu P1
dan P2.
– Jika P1 dan P2 di dalam jendela kliping maka garis adalah
visible
– Jika salah satu dari titik P1 atau P2 di uar jendela kliping,
artinya garis adalah halfpartial
– Jika titik P1 dan P2 di luar jendela kliping, artinya garis adalah
invisible.
– Jika P1 dan P2 melintasi jendela kliping, artinya garis adalah
vollpartial
Kliping Garis
Cohen-Sutherland (4/6)
• Daerah titik persinggungan dapat dilihat dari nilai bit :
– Jika bit 1 = 1, titik persinggungan ada di atas
– Jika bit 2 = 1, titik persinggungan ada di bawah
– Jika bit 3 = 1, titik persinggungan ada di kanan
– Jika bit 4 = 1, titik persinggungan ada di kiri
• Titik persinggungan dapat dicari dengan persamaan
garis :
– Persinggungan antara batas KIRI dan KANAN
x = xwmin (LEFT) x = xwmax (RIGHT)
y = y1 + m(x –x1)
x = x1 + (y –y1)/m
Kliping Garis
B1 Cohen-Sutherland (5/6)
1001 D1’ 1000 1010
D1
B2
D1”
C1 A2
C2 D2”
D2’
0101 0100 0110
D2
Garis C1 – C2
Garis A1- A2 1. C1=0001,C2=0000
1. A1=0000,A2=0000 2. (both 0000) – No
……now
2. (both 0000) – Yes 3. AND Operation
C1 Æ 0001 1. C1=0000,C2=0000
-> accept & draw
C2 Æ 0000 2. (both 0000) – Yes
Garis B1 – B2 Result 0000 Æ accept & draw
1. B1=1001,B2=1010 3.1 (not 0000) - No
2. (both 0000) – No 3.2 (0000) - Yes
3. AND Operation 3.2.1 Choose C1
B1 Æ 1001 3.2.2 Intersection point
B2 Æ 1010 C1’ at LEFT
Result 1000 3.2.3 C1 < C1’
3.1 (not 0000) – Yes C1 = 0000
Æ reject 3.2.4 repeat 2
next…….
Kliping Garis
Cohen-Sutherland (6/6)
(150, 100)
1. P1=1001, P2=0100
2. (both 0000) – No
3. AND Operation
B1 Æ 0000
B2 Æ 0100
(10, 10) Result 0000
3.1 (not 0000) – no
3.2 (0000) yes
3.2.1choose P2
Diketahui jendela kliping 3.2.2 intersection with BOTTOM
seperti di atas. Bila titik P1 boundary
adalah (0, 120) dan titik m = (5-120)/(130-0) = -0.8846
x = x1 + (y –y1)/m where y = 10;
P2(130, 5), carilah titik-titik x = 130 + (10-5)/ -0.8846 = 124.35
persinggungan yang P2’ = (124, 10)
membentuk garis baru di 3.2.3 update region code
dalam jendela kliping. P2’ = 0000
Gunakan algoritma Cohen- 3.2.4 repeat step 2
Sutherland ! next……..
….now
1. P1=1001, P2=0100
2. (both 0000) – yes
Æ ACCEPT & DRAW
Kliping Poligon
Sutherland-Hodgeman (1/2)
• Kliping poligon lebih kompleks dibandingkan
kliping garis :
– Input: poligon
– Output: poligon asli, poligon baru, atau lainnya
Kliping Poligon
Sutherland-Hodgeman (2/2)
• Ide Dasar Kliping Poligon :
– Perhatikan setiap edge pada setiap arah pandang.
– Klip/potong poligon dengan persamaan edge.
– Lakukan pada semua edge, hingga poligon
tersebut secara penuh ter-klip/terpotong.