Anda di halaman 1dari 222

PENGENALAN

GRAFIKA KOMPUTER
Definisi Grafika Komputer
Menurut Suyoto (2003), grafika komputer (Computer
Graphic) dapat diartikan sebagai seperangkat alat yang
terdiri dari hardware dan software untuk membuat gambar,
grafik atau citra realistik untuk seni, game komputer, foto
dan film animasi.

Sistem grafika komputer dapat dijalankan dengan


komputer pribadi (Personal Computer) atau workstation
Definisi Grafika Komputer
Pengertian grafik berbeda dengan image/citra, image
merupakan gambar yang diperoleh dengan alat pengambil
gambar, sperti kamera, scanner, dll. Sedangkan grafik
adalah gambar yang dibuat dengan cara tertentu, yaitu
cara yang ada di grafik komputer.

Grafik dan image termasuk picture/gambar.


Sejarah Grafika Komputer
Perkembangan grafika komputer secara sederhana dapat
dibagi menjadi empat fase,yaitu :

1. Fase Pertama (1950) era grafika komputer interaktif


 Tidak begitu cepat karena teknologi, jumlah dan harga
komputer tidak mendukung.
 MIT berhasil mengembangkan komputer whirlwind
dengan tabung sinar katode (Cathode Ray Tube-CRT).
 Sudah menggunakan pena cahaya (light pen) yaitu
sebuah alat input bentuknya seperti pensil yang
digunakan untuk memilih posisi, menunjuk sesuatu dan
menggambar pada layar
 Telah ada alat pemrograman otomatis (Automatic
Programming Tool)
Sejarah Grafika Komputer
2. Fase Kedua (1960) Jaman Penelitian/Riset Grafika
Komputer Interaktif
• Grafika interaktif modern telah ditemukan oleh
Ivan Sutherland
• Mengembangkan teknik interaktif dengan sarana
keyboard dan pena cahaya.
• Sejumlah projek penelitian dan produk Computer
Aided
• Design/Manufacturing (CAD/CAM) telah muncu
Sejarah Grafika Komputer
3. Fase Ketiga (1970)
Grafika komputer interaktif telah digunakan oleh sektor
industri, pemerintah dan ilmuawan untuk memperbaiki
kualitas desain produk secara cepat dan mudah.
4. Fase Keempat (1980-1990)
 Penelitian pada dekade ini bertumpu pada
penggabungan dan pengotomasasian pelbagai unsur
desain dan pemodelan pejal (solid modelling).
 Teknologi hibrid mulai diperkenalkan. Teknologi ini
berguna untuk penggabungan objek pejal dengan
permukaan.
Grafika Komputer
 Merupakan cabang ilmu komputer yang membahas
algorithma untuk menampilkan simulasi (benda).
 Grafika komputer tidak sama dengan pemrosesan citra
(image processing)
 Mata kuliah grafika komputer tidak membahas software
komersial seperti adobe photoshop, corel draw dan
sebagainya.
 Mata kuliah grafika komputer juga tidak membahas
tentang grafik bisnis, seperti diagram pie, diagram garis
dan sebagainya.
Bidang Grafika Komputer
 Mencakup area/ bidang :
 Film (spesial effects)
 Industri :
 CAD (computer aided design)

 Automated machining
 Visualisasi :
 data ilmiah
 hasil medik (scanning,X-Ray, MRI)
 Permainan Komputer
 Distribusi Online
Film (Special effect)
Film (Animasi)
Industri / CAD
Visualisasi data ilmiah
Visualisasi data ilmiah
Medical
Permainan (Game)
Tema Grafika Komputer
 Tiga tema utama dalam grafika komputer :
 Modeling
 Bagaimana kita merepresentasikan (= memodelkan) objek 3
Dimensi ?
 Bagaimana kita dapat membuat model dari objek-objek
tertentu ?
 Animation
 Bagaimana kita merepresentasikan gerakan sebuah objek
 Bagaimana kita dapat memberikan kendali kepada pembuat
animasi (animator) dalam pembuatan animasi
 Rendering
 Bagaimana kita mensimulasikan formasi gambar
 Bagaimana kita dapat mensimulasikan cahaya seperti pada
dunia nyata?
Modelling
 Representasi objek / lingkungan
 shape — geometri dari sebuah objek
 appearance — emission, reflection, and transmission of
light
 Bagaimana kita dapat membuat model-model
tersebut ?
 deskripsimanual (misal : menuliskan rumus)
 manipulasi secara interaktif
 menggunakan prosedur / program
 melakukan pemindaian (scanning) dari objek riil
Modelling
Animasi
 Bagaimana caranya kita menampilkan gerakan
objek
 posisi, sudut dan sebagainya sebagai fungsi dari waktu
 Bagaimana caranya kita mengendailkan gerakan
 membuat gerakan menggunakan tangan, mengisi
keyframe
 simulasi perilaku (membat program yang berfungsi sebagai
"otak" dari sebuah objek)
 simulasi fisika
 menangkap gerakan
Animasi
Rendering
Rendering merupakan sebuah proses untuk menghasilkan
sebuah citra 2D dari data 3D. Proses ini bertujuan untuk
memberikan nuansa realistis (nyata) kepada model-model
geometris sehingga memiliki sifat/ keadaan yang
menyerupai sebenarnya.

Gambar yang dibuat melalui proses rendering digital


adalah gambar digital atau raster image. Gambar digital
tersebut dibuat melalui proses rendering digital sebagai
langkah besar terakhir sebelum disusun menjadi animasi
Rendering
 Bagaimana caranya kita meniru dunia nyata ?
 cahaya yang datang difokuskan oleh lensa
 energi cahaya mempengaruhi film
 representasi gambar sebagai titik-titik / pixels (x,y)
 membutuhkan representasi dari kamera
 Bagaimana caranya kita meniru perilaku
cahaya?
 cahaya dianggap sebagai photon (partikel cahaya)
 menangkap gerak lurus dari photon
 membuat model interaksi antara cahaya dengan
permukaan benda
Tahapan Rendering
Secara umum, proses untuk menghasilkan rendering dua
dimensi dari objek-objek 3D melibatkan 5 komponen
utama, yaitu:
Tahapan Rendering
 Geometri
Geometri identik dengan grafik dua dimensi. Definisinya
adalah besaran rotasi suatu garis dari satu titik pangkal
ke posisi yang lain. Geometri merupakan gambaran
untuk dasar pembuatan bidang.
 Kamera
Dalam grafis 3D, sudut pandang yang dilihat berasal dari
kamera sebagai penentu untuk sudut pandang pada
sebuah world (virtual camera). Pada kamera ada istilah
Field Of View, yang merupakan grafika 3D berbentuk
piramida pada layar monitor yang berbentuk persegi.
Field of view ini sangat penting dalam proses rendering.
Tahapan Rendering

Field of View pada kamera


Tahapan Rendering
 Cahaya
Sumber cahaya pada grafika 3D merupakan sebuah objek
yang penting, karena dengan cahaya ini sebuah world dapat
terlihat dan dapat dilakukan proses rendering. Sumber cahaya
ini juga membuat sebuah world menjadi lebih realistis dengan
adanya bayangan dari objek-objek 3D yang ada.
Pada grafika 3D terdapat beberapa sumber cahaya:
 Point light
Memancar ke segala arah
 Spot light
Memancarkan cahaya ke daerah tertentu dalam bentuk
kerucut.
Tahapan Rendering
 Ambient light
Cahaya latar/alam. Cahaya latar tersebut dimodelkan mengikuti apa
yang terjadi di alam, dalam keadaan tanpa sumber cahaya sekalipun,
benda masih dapat dilihat.
 Directional light
Memancarkan cahaya dengan intensitas sama ke suatu arah tertentu
TEKNOLOGI DISPLAY
Teknologi Display
• Ada dua cara menampilkan gambar :
– Vector Display
– Raster Display
• Vector Display : gambar ditampilkan sebagai kumpulan
segmen garis (vector)
• Raster Display : gambar ditampilkan sebagai kumpulan
titik (pixel)
• Kuliah Grafika Komputer tidak membahas tampilan
dengan vector display tetapi hanya tampilan dengan
Raster Display
Raster Display
• Raster Display menggunakan peralatan seperti :
– Cathode Ray Tube (CRT) / Tabung sinar katoda
Tabung vakum yang berisi sumber elektron yang
digunakan untuk melihat gambar untuk mempercepat dan
membelokkan berkas elektron ke layar neon untuk
menciptakan gambar. Gambar dapat mewakili bentuk
gelombang listrik (osiloskop), gambar (televisi, monitor
komputer), radar target dan lain-lain
– Plasma Display
Sebuah layar plasma adalah video tampilan komputer
dimana setiap piksel pada layar diterangi oleh sedikit kecil
plasma atau gas yang dibebankan, agak seperti lampu
neon kecil.
Plasma menampilkan lebih tipis dari tabung sinar katoda
(CRT) menampilkan dan lebih terang dari liquid crystal display
(LCD).
- Liquid Cristal Display (LCD)
Suatu jenis display yang menggunakan Liquid Crystal sebagai
media refl eksinya. LCD sudah digunakan di
berbagai bidang, sebagai contoh: monitor,TV, kalkulator.
Pada LCD berwarna semacam monitor terdapat puluhan ribu
pixel. Pixel adalah satuan terkecil di dalam suatu LCD. Pixel-
pixel yang berjumlah puluhan ribu inilah yang membentuk
suatu gambar dengan bantuan perangkat
controller, yang terdapat di dalam suatu
monitor.
• Prinsip kerja : menyalakan / mematikan satu titik di penampil.
CRT (Cathode Ray Tube)
• Paling banyak digunakan
• Bekerja berdasarkan
prinsip scanning :
– Horizontal Scanning
– Vertical Scanning
• Scanning harus dilakukan
dengan cepat untuk
mencegah efek kerdipan
(flicker)
LCD
• Liquid Crystal Displays (LCDs)
– LCDs: organic molecules, naturally in crystalline
state, that liquefy when excited by heat or E field
– Crystalline state twists polarized light 90º.
Plasma Display
• Plasma display panels
– Similar in principle to
fluorescent light tubes
– Small gas-filled capsules
are excited by electric
field,
emits UV light
– UV excites phosphor
– Phosphor relaxes, emits
some other color
Raster Display System
Raster Display System
• Setiap kondisi pixel di layar disimpan ke dalam
memori yang disebut : frame buffer.
• Pixel mempunyai informasi mengenai :
– lokasi = lokasi memori di frame buffer
• banyaknya (lokasi) pixel yang dapat disimpan disebut
sebagai resolusi
– warna = banyaknya byte di frame buffer = 2n
• 1 bit memori = 21 warna = 2 warna
• 4 bit memori = 24 warna = 16 warna
• 8 bit memori (1 byte) = 28 warna = 256 warna
– Kapasitas memori membatasai banyaknya pixel yang
ditampilkan dan warna yang dapat direpresentasikan.
SYNTHETIC CAMERA
SYNTHETIC CAMERA
 Proyeksi perspektif dengan mata berada di
sumbu proyeksi sangat membatasi sudut
pandang.
 Memutar objek agar memperoleh sudut
pandang yang berbeda sangat tidak efisien.
 Pendekatan lain adalah dengan
menggunakan synthetic camera
CARA KERJA CAMERA
cahaya

film lensa objek

Citra objek dibawa cahaya menuju lensa sehingga di lensa muncul


bayangan objek, oleh cahaya bayangan tersebut kemudian diteruskan
ke film (plastik yang dilapisi dengan bahan kimia peka cahaya)
sehingga menimbulkan reaksi kimia yang membentuk citra objek
SYNTHETIC CAMERA
 Synthetic camera adalah metoda memposisikan
‘camera’ untuk melihat benda.
 Membutuhkan tiga komponen :
 Bidang proyeksi
 Sistem koordinat viewer
 mata.
 Cara kerja : objek dipindahkan ke koordinat viewer
dan kemudian 'bayangan' objek diproyeksikan
perspektif.
 Objek perlu dipindahkan ke koordinat viewer agar
posisi objek sesuai dengan (align) arah mata.
transformasi
mata
Koordinat dunia v
ke koordinat viewer u

Koordinat proyeksi
Dunia perspektif
n

Koordinat
Viewer

Bidang Proyeksi
VIEWING COORDINATE
 Viewing coordinate sering juga disebut
sebagai UVN system.
 Sistem koordinat UVN mempunyai tiga
sumbu :
 U
 V
 N
VIEWING COORDINATE
 Viewing coordinate diperoleh berdasarkan
informasi mengenai :
 posisi kamera pada world coordinate, posisi ini disebut
juga sebagai VRP (Viewing Reference Point).VRP
ditentukan berdasarkan vector r = (rx, ry,rz)
 Arah viewplane, disebut sebagai VPN (Viewplane
Normal) dan ditentukan berdasarkan vector n (nx,ny,nz).
Vector n ditentukan berdasarkan world coordinate.
 Arah sumbu V ditentukan berdasarkan vector u. Vector
u bersifat tegak lurus terhadap n dan v.
 posisi mata (eye) ditentukan dalam viewing coordinate
dan disimbolkan dengan e = (eu,ev,en). Umumnya e
berisi (0,0,E)
mata
v
VPN u
eu,ev,en

n
VRP = (rx,ry,rz)

rz
x
ry
y
rx
VIEWING COORDINATE
 Bagaimana menghitung n,v dan u?
 Pemakai dapat menentukan nilai n dengan
memasukkan vector norm dan vector n dihitung
sebagai :
norm
n=
| norm |

 Untuk memperoleh norm, tentukan titik yang


menjadi pusat pandang camera (look at) dan
kemudian norm dihitung sebagai : norm = scene - r
VIEWING COORDINATE
 Vector v ditentukan oleh pemakai
berdasarkan vector up (ux,uy,uz) dan dihitung
sebagai :
up'  up  (up  n) * n
up'
v
up'

 Catatan :
 tanda • menyatakan dotproduct dua vector
 tanda |up’| menyatakan panjang vector up’
VIEWING COORDINATE
 Karena vector u harus tegak lurus terhadap n
dan v maka vector u dapat diperoleh dari :
u  nv
 Catatan : n x v menyatakan cross product
TRANSFORMASI WORLD KE
VIEWPLANE
 Setiap titik di world coordinate (w) dapat
ditransformasikan ke viewing coordinate (p) dengan
menggunakan rumus :
t=w-r
pu = t • u
pv = t • v
pn = t • n

 Setelah titik di world coordinate di transformasikan


ke viewplane maka tahap selanjutnya adalah
melakukan proyeksi perspektif terhadap titik di
viewplane.
PROYEKSI VIEWPLANE
 Jika diketahui titik p=(pu;pv;pn) adalah titik di
viewplane dan mata terletak di (eu;ev;en)
maka titik q (u*,v*) sebagai proyeksi
perspektif dari p dapat diperoleh dengan
en pu - eu pn
u* = en - pn
en pv - ev pn
v* = en - pn
PROYEKSI VIEWPLANE
 Apabila e = (0,0,en) maka rumus di atas
dapat disederhanakan menjadi
pu pv
u* = pn v* = pn
1- e 1- e
n n
RUMUS VECTOR
Dot product :
d=n•v
d = nx * vx + ny * vy + nz * vz
Cross Product:
d=nXv
dx = ny * vz - nz * vy
dy = nz * vx - nx * vz
dz = nx * vy - ny * vx

Panjang Vector
|v| = (vx * vx + vy * vy +vz * vz)
WARNA
Warna
 Warna sebenarnya merupakan persepsi kita
terhadap pantulan cahaya dari benda-benda.

persepsi warna

pantulan
Cahaya
 Cahaya merupakan energi elektromagnetik
 Cahaya dapat dibagi menjadi dua bagian :
 Cahaya terlihat (visible light) yaitu bagian dari energi
elektromagnetik dengan panjang gelombang 400-700 nm
(nanometer)
 Cahaya tidak terlihat (invisible light) yaitu bagian dari
energi elektromagnetik dengan panjang gelombang < 400
nm atau > 700 nm
 Mata manusia hanya peka terhadap panjang
gelombang 400 - 700 nm dan perbedaan panjang
gelombang tersebut dipersepsikan sebagai 'warna'
Spektrum warna
Bagaimana manusia melihat
warna ?
Bagian mata yang
sensitif terhadap
cahaya disebut
sebagai retina,
retina berisi dua
macam kelompok
sel yaitu : rod dan
cone
Bagaimana manusia melihat
warna
 Rods
 Hanya dapat membedakan terang dan gelap (hitam / putih)
 Mata mempunyai 120 juta rod
 Tidak sensitif terhadap warna
 Cones
 Bagian retina yang peka terhadap warna
 Mata mempunyai 60 juta cones
 Ada tiga macam cones, masing-masing peka terhadap
warna merah (L), biru (S) dan hijau (M).
 Dapat membedakan 200 warna sekaligus
Bagaimana manusia melihat
warna?
 Fovea adalah arena di retina yang
berisi cones
 Berukuran 1/150 inch
 Fovea hanya mempunyai sudut
pandang sebesar 1,7 derajad.
Diluar itu gambar terlihat kabur.
 Setiap cones di fovea mempunyai
satu jalur syaraf ke otak dan dapat
mengirim 'gambar' sekaligus
(paralel)
 Bandingkan : Video Kamera
mempunyai 400.000 sensor
tetapi hanya dapat mengirim
'gambar' satu persatu
(stream)
Bagaimana manusia melihat
warna?
Bagaimana warna dibuat ?
 Warna dapat diproduksi
berdasarkan dua cara :
 Substractive Colour

 Additive Colour

 Substractive : warna dihasilkan


sebagai akibat dari diserapnya
warna tertentu.
 Tinta cetak
 Additive : warna dihasilkan
sebagai campuran dari warna
yang dipancarkan oleh sumber
cahaya.
 Monitor
Representasi warna di komputer
 Ada berbagai cara untuk menghasilkan
warna menggunakan komputer.
 Beberapa model warna yang digunakan
antara lain :
 RGB
 HSV / HSB
 HLS
 CMY(K)
 CIE
RGB (Red, Green, Blue)
 Warna diperoleh dari campuran
tiga warna dasar (primary color),
yaitu : Red, Green, Blue
 Setiap komponen warna disimpan R = 255 R=0 R=0
G=0 G = 255 G=0
sebagai angka dari 0-255 (0-FF), B=0 B=0 B = 255
dengan
 0 = tidak ada komponen

 255 = komponen digunakan R = 255 R = 128 R = 128


penuh G = 128 G = 255 G =75
B = 128 B = 255 B=0
CMY(K) / Cyan, Magenta, Yellow,
Black
 Menggunakan warna dasar (primary color) : Cyan, Magenta,
Yellow dan Black.
 Warna lain diperoleh karena campuran warna dasar
menyerap warna dasar dan memantulkan warna yang
diinginkan.
Warna Tinta Menyerap Memantulkan Terlihat
Cyan Merah Biru dan Hijau Sian
Magenta Hijau Merah dan Biru Magenta
Yellow Biru Merah dan Hijau Kuning
Magenta+Yellow Hijau dan Biru Merah Merah
Cyan + Magenta Merah dan Hijau Biru Biru
Cyan + Yellow Merah dan Biru Hijau Hijau
RGB dan CMY(K)

Catatan : warna merah disembunyikan


HSV/B (Hue, Saturation, Value /
Brightness)
 HSB merupakan sistem warna
yang menggunakan ukuran :
 Hue : warna yang diinginkan,
diukur dengan nilai 0o - 360o,
dengan 0o = red,12o=green,
240o=blue
 Saturation : keaslian warna,
diukur dengan nilai 0% - 100%.
Nilai 0 menyatakan warna putih
dan 100% menyatakan warna
asli
 Value / Brightness : pengaruh
kecerahan, 0% menyatakan
tidak ada cahaya (hitam) dan
100% menyatakan warna putih.
HLS (Hue, Lightness, Saturation)
 Menggunakan ukuran :
 Hue : warna yang diinginkan,
diukur dengan nilai 0o - 360o,
dengan 0o = red,12o=green,
240o=blue
 Lightness : pengaruh warna
putih, nilai maksimum Lightness
menyatakan warna putih
sedangkan nilai minimum
menyatakan warna hitam.
 Saturation : keaslian warna,
diukur dengan nilai 0% - 100%.
Nilai 0 menyatakan warna putih
dan 100% menyatakan warna
asli
CIE
 CIE (Commission Internationale d'Eclairage)
mendefinisikan tiga sumber cahaya hipotetis x,y,z yang
menggunakan kurva positif dari spektrum
SISTEM KOORDINAT
Sistem Koordinat
 Ada dua macam sistem koordinat :
 Cartesian
 Polar
 Sistem Koordinat Polar menggunakan sudut
terhadap garis horison (α) dan jarak dari titik
pusat (R) untuk menunjukkan lokasi sebuah
benda
R
α
Sistem Koordinat
 Sistem Koordinat Cartesian menggunakan
pasangan (x,y) untuk menyatakan lokasi
sebuah benda di bidang (2D) dan pasangan
(x,y,z) untuk lokasi di ruang (3D).

Y Y

X X

Z
Sistem Koordinat
 Sistem Koordinat juga dapat dibagi menjadi
dua macam bergantung kepada situasi :
 World Coordinate (wc)
 Sistem Koordinate untuk menyatakan lokasi benda di
“dunia”
 Screen Coordinate (sc)
 Sistem Koordinat untuk menyatakan lokasi titik di
layar.
World Coordinate
 World Coordinate mempunyai batas -~
sampai dengan +~ untuk sumbu x dan y
 Apabila area yang dilihat pada world
coordinat dibatasi pada area tertentu maka
area tersebut dinamakan window.
Y
WT Window (w)

WL X
WR
WB
Screen Coordinate
 Screen Coordinate menggunakan orientasi sumbu y
yang berbeda dengan World Coordinate.
 Screen Coordinate hanya menggunakan nilai positif
untuk sumbu x dan y dan titik (0,0) terletak di pojok
kiri atas.
 Batas maksimal pada sumbu x = Xmax dan batas
maksimal pada sumbu y = Ymax

y
Screen Coordinate
 Perbedaan orientasi tersebut menyebabkan
gambar di World menjadi tampak terbalik di
screen
 Area yang digunakan untuk menampilkan
gambar di layar disebut sebagai viewport.
y

x viewport

world screen
Transformasi wc -> sc
 Agar gambar di screen tampak sama dengan
di world maka perlu dilakukan transformasi
koordinat.
Y

ymax

ywc ymax – ywc


X
Transformasi wc -> sc
 Dengan demikian setiap titik di wc dapat
diketahui lokasinya di sc sebagai :
xsc = xwc
ysc = ymax – ywc

 Rumus (1) tidak dapat mengatasi persoalan :


 Pemakaian window dan viewport.
 Nilai negatif dari koordinat wc.
Transformasi wc -> sc
Y VL xsc VR

WT VT

ywc
ysc
WB VB
X
WL xwc WR

VR  VL VT  VB
sx  sy 
Xsc = sx * xwc + tx WR  WL WT  WB
Ysc = sy * ywc + ty
VL *WR  WL *VR VB *WT  WB *VT
tx  ty 
WR  WL WT  WB
ALGORITHMA GARIS
Algorithma Garis
 Masalah :
 Pixel mana yang harus dipilih untuk menggambar
sebuah garis ?
ALGORITHMA GARIS
 Algorithma garis adalah algorithma untuk
menentukan lokasi pixel yang paling dekat
dengan garis sebenarnya (actual line)
 Ada tiga algorithma utama untuk
menggambar garis :
 Line Equation
 DDA Algorithm
 Bresenham’s Algorithm
Kuadran Garis
Kuadran Kriteria Arah Garis Contoh
(x2,y2)
(1,1) – (4,5)
I (x1 < x2) dan (y1 < y2)
(x1,y1) (-3,2) – (-1,4)

(x2,y2)
(4,2) – (3,4)
II (x1 > x2) dan (y1 < y2)
(x1,y1) (-3,-3) – (-6,-1)

(x1,y1)
(6,-2) – (4,-5)
III (x1 > x2) dan (y1 > y2)
(x2,y2) (9,5) – (1,2)

(x1,y1) (3,9) – (6,2)


IV (x1 < x2) dan (y1 > y2)
(x2,y2) (-2,1) – (4,-5)
Kuadran Garis
8 8
7 (x1,y1) 7 (x1,y1)

6 6 D
5 5
B (x2,y2) (x2,y2)
4 4
(x2,y2)
3 A 3
2 2 C
(x2,y2)
1 1
(x1,y1) (x1,y1)
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9

Di kuadran mana garis A ? Di kuadran mana garis B ? Dapatkah garis A dan B


dinyatakan sebagai garis dengan kuadran yang sama ? Bagaimana caranya ?
Bagaimana halnya dengan garis C dan D ?
Kuadran Garis
 Garis A : (3 ; 1) – (8 ; 4)
 Garis A berada di kuadran I
 Garis B : (3 ; 7) – (1 ; 2)
 Garis B berada di kuadran III
 m = (2 – 7) / (1 – 3) = -5 / -2 = 2.5
 tetapi apabila garis B dinyatakan sebagai (1 ; 2) –
(3 ; 7) maka garis B akan berada di kuadran I
 m = (7 – 2 ) / ( 3 – 1) = 5 / 2 = 2.5
LINE EQUATION
 Sebuah garis lurus dapat diperoleh dengan
menggunakan rumus :
y = mx + b
 dimana : y2
 m = gradien
 b = perpotongan garis y1
dengan sumbu y.
b x1 x2
LINE EQUATION

 Apabila dua pasang titik akhir dari sebuah


garis dinyatakan sebagai (x1,y1) and (x2,
y2), maka nilai dari gradien m dan lokasi b
dapat dihitung dengan :
y2  y1
m (1)
x2  x1

b  y1  m  x1 (2)
Contoh
 Gambar garis (0,1) – (5,7) dengan
menggunakan Line Equation
x1 = 0 y1 = 1
x2 = 5 y2 = 7
7 m = (7-1)/(5-0) = 1,2
6 b = 1 – 1,2 * 0 = 1
x y
5
0 1.2 * 0 + 1 = 1
4
1 1.2 * 1 + 1 = 2,2 ≈ 2
3
2 1.2 * 2 + 1 = 3,4 ≈ 3
2
3 1.2 * 3 + 1 = 4,6 ≈ 5
1
4 1.2 * 4 + 1 = 5,8 ≈ 6
0
5 1.2 * 5 + 1 = 7
0 1 2 3 4 5 6 7 8
Gradien dan Tipe Garis
miring 45o
y2 tegak
mendatar y2

y1

y1 y1
x1 x2 x1 x2
x1
m = tak terdefinisi m=0 m=1

y2
cenderung mendatar
cenderung tegak
y2
y1 y1
x1 x2 x1 x2
0<m<1 m>1
Tipe Garis

8
7
6
5
B
4
3 A
2
1

0 1 2 3 4 5 6 7 8 9
Dapatkah anda mencari perbedaan yang esensial
antara garis A dan B (misal : gradien, pertambahan x dan y) ?
Tipe Garis
 Garis A : (3;1) – ( 8;4)
 m = (y2 – y1) / (x2 – x1) = (4-1)/ (8-3) = 3/5= 0,6
 0<m<1
 xi+1 = xi + 1 ; yi+1 = yi + d1
 Garis B : (1;2) – (2;7)
 m = (7-2) / (2-1) = 5 / 1 = 5
 m>1
 xi+1 = xi + d2 ; yi+1 = yi + 1
 Berapa nilai d1 dan d2 ?
ALGORITHMA DDA
 Digital differential analyzer (DDA) merupakan
algorithma untuk menghitung posisi pixel
disepanjang garis dengan menggunakan
posisi pixel sebelumnya.
 Algorithma berikut ini menggunakan asumsi
bahwa garis berada di kuadran I atau II serta
garis bertipe cenderung tegak atau
cenderung mendatar.
Algorithma DDA
 Untuk garis dengan 0 < m < 1, maka xi+1 = xi
+1 dan :
yi 1  yi  m (3)

 Untuk garis dengan m > 1, maka yi+1 = yi + 1


dan :
1
xi 1  xi  (4)
m
Algorithma DDA

 Garis dengan 0 > m > -1, maka xi+1 = xi-1 dan

yi 1  yi  m (5)

 Sedangkan bila m < -1, maka yi+1 = yi+1 dan

1
xi 1  xi  (6)
m
Contoh Algorithma DDA
 Gambar garis dari (0;1) – (5;7) dengan
menggunakan DDA.
x1=0,y1=1
x2=5,y2=7
m = (7-1)/(5-0) = 1,20
7 1/m=1/1,20 = 0,83
6 x y
5 0 1
4 0+0,83 = 0,83 ≈ 1 2
3 0,83+0,83 = 1,66 ≈ 2 3
1,66+0,83 = 2,59 ≈ 3 4
2
2,59+0,83 = 3,42 ≈ 3 5
1 3,42+0,83 = 4,25 ≈ 4 6
0 4,25+0,83 = 5,08 ≈ 5 7
0 1 2 3 4 5 6 7 8
Algorithma Bresenham
 Bresenham mengembangkan algorithma yang
lebih efisien.
 Algorithma ini mencari nilai integer yang paling
mendekati garis sesungguhnya (actual line).
 Algorithma ini tidak memerlukan pembagian.

3
2
1 actual line
0
0 1 2 3 4
Algorithma Bresenham
 Algorithma Bresenham yang disajikan berikut
ini hanya dapat digunakan untuk garis yang
berada di kuadran I dan 0 < m < 1.
 Anda yang ingin mempelajari pembuktian
matematis dari algorithma Bresenham
silahkan membaca buku Computer Graphics
(Hearn dan Baker)
Algorithma Bresenham

Xi+1,yi+
1

Actual line

xi,yi Xi+1,yi

d1

d1=m – ½, karena d1< 0 atau negatif maka pixel berikutnya adalah


pixel (xi+1, yi)
Algorithma Bresenham
Xi+1,yi+ Actual line
1

Xi+1,yi
d1

xi,yi

d1=m – ½, karena d1> 0 atau positif maka pixel berikutnya adalah


pixel (xi+1, yi+1)
Algorithma Bresenham (0 < m < 1)
dx = x2 – x1 ;dy = y2 – y1
d1 =2 * dy ; d2 =2 * (dx – dy)
p = d1 – dx
x = x1 ; y = y1

p = p + d1 T Y p = p - d2
y=y p >= 0
y = y +1

x = x +1

stop x >= x2
Algorithma Bresenham
 Gambar garis berikut ini dengan
menggunakan algorithma Bresenham :
(0;1) – (6;5)
(2;2) – (7;5)
(0;1) – (5;7)
Algorithma Bresenham

Garis : (0;1) - (6;5)


p x y
8
2 0 1
7
-2 1 2
6
6 2 2
5
2 3 3
4
-2 4 4
3
6 5 4
2
2 6 5
1
0
0 1 2 3 4 5 6 7 8 9 10
Algorithma Bresenham
Garis : (2;2) - (7;5)
8 p x y

7 1 2 2

6 -3 3 3

5 3 4 3

4 -1 5 4

3 5 6 4

2 1 7 5

1
0
0 1 2 3 4 5 6 7 8 9 10
Algorithma Bresenham
Garis : (0;1) - (5;7)
8 p x y
7 7 0 1
6 9 1 2
5 11 2 3
4 13 3 4
3 15 4 5
2 17 5 6
1
0
0 1 2 3 4 5 6 7 8 9 10
Algorithma Bresenham
 Mengapa garis (0;1) – (5;7) tidak dapat
digambar dengan tepat ?
 Garis (0;1) – (5;7) mempunyai m = 1,2, dengan
demikian asumsi pada algorithma tersebut tidak
tepat dan harus disesuaikan.
Algorithma Bresenham ( m > 1)
dx = x2 – x1 ; dy = y2 – y1
d1 =2 * dx ; d2 =2 * (dx – dy)
p = d1 – dy
x = x1 ; y = y1

p = p + d1 T Y p = p + d2
x=x p >= 0
x = x +1

y = y +1

stop y >= y2
Algorithma Bresenham (m > 1)
Garis : (0;1) - (5;7)
8 p x y
7 4 0 1
6 2 1 2
5 0 2 3
4 -2 3 4
3 8 3 5
2 6 4 6
1 4 5 7
0
0 1 2 3 4 5 6 7 8 9 10
SOAL
 Gunakan algorithma DDA dan Bresenham
untuk menggambar garis-garis berikut :
1. (2;1) – (9;6)
2. (1;2) – (8;5)
3. (3;1) – (10;5)
4. (6;7) – (13;10)
5. (2;8) – (9;11)
Atribut Garis
 Atribut garis meliputi :
 Ketebalan garis

 Pola garis

 Warna garis
REVIEW MATERI/ QUIS
ALGORITHMA LINGKARAN
ALGORITHMA LINGKARAN
 Menggambar lingkaran dapat menggunakan
rumus :
 sin dan cosinus
 Algorithma Bresenham
 Pemakaian sinus dan cosinus membutuhkan
memori karena melibatkan angka pecahan
serta komputasi yang rumit dalam
menentukan nilai sinus dan cosinus
ALGORITHMA LINGKARAN
y

y1
R

α
x
x1

x1=cos(α) *R apabila α dari 0o s/d 359o maka


y1=sin(α) * R kita akan memperoleh koordinat titik-titik
yang membentuk sebuah lingkaran
BRESENHAM’S CIRCLE
 Algorithma lingkaran bresenham melibatkan
angka integer dan tidak membutuhkan
pembagian.
 Algorithma yang disajikan berikut ini hanya
membahas pada kuadran I yaitu pada x ≥ 0
dan y ≥ 0
(xi,yi) Ada 3 pilihan titik
(xi+1,yi)
dari (xi,yi), yaitu :H,V, dan D.

Jarak antara H,V dan D


mH terhadap lingkaran
sesungguhnya dirumuskan
sebagai :
(xi+1)2+(yi-1)2
mV
mH=| (x1+1)2+(y1)2 – R2 |
mD mD=| (x1+1)2+(y1-1)2 – R2 |
mV=| (x1)2+(y1-1)2 – R2 |

(xi+1,yi-1) Titik yang dipilih adalah nilai


(xi,yi-1)
paling kecil diantara mH,mD
R dan mV
x

Lingkaran yang diinginkan


(xi+1,yi+1)

mH
(xi,yi)
(xi+1,yi)

mV mD

(xi+1,yi-1)

(xi-1,yi-1) (xi,yi-1)
4 3 5
Algorithma Lingkaran Bresenham :

Δi=(xi+1)2+(yi-1)2-R2

Δi < 0 maka

α=mH - mD (kasus 1 dan 2)

bila α ≤ 0 maka pilih mH


bila α > 0 maka pilih mD
Δi > 0 maka (kasus 3 dan 4)

β = m D – mV

bila β ≤ 0 maka pilih mD


bila β > 0 maka pilih mV

Δi = 0 maka pilih mD (kasus 5)


TUGAS
 Implementasikan algorithma lingkaran
Bresenham ke dalam salah satu bahasa
pemrograman.
 Tugas kelompok (maks 3 orang).
 Kumpulkan listing program dan printout hasil
program.
 Dikumpulkan pada pertemuan berikutnya.
TRANSFORMASI 2 DIMENSI
TRANSFORMASI

 Metoda untuk memanipulasi lokasi sebuah


titik.
 Ada 3 macam transformasi :
 Translation (Pergerseran)
 Scaling (Penskalaan)
 Rotation (Pemutaran)
TRANSLATION

 Titik A (x,y) digeser sejumlah Trx pada sumbu


x dan digeser sejumlah Try pada sumbu y
 Rumus Umum :
Q(x,y) = P(x,y) +Tr
= P(x+Trx, y+Try)
TRANSLATION

Contoh : 7
Diketahui : A(2,4) digeser 6
sejauh (4,2)
Ditanya : lokasi hasil 5
A’
pergeseran (A’) 4
Jawab :
3 A
A’ (x,y) = A + Tr
= (2,4) + (4,2) 2
= (6,6) 1
0 1 2 3 4 5 6 7
SCALING

 Menggunakan asumsi titik pusat (0,0)


 Lokasi asli dikalikan dengan besaran Sx pada
sumbu x dan Sy pada sumbu y
 Rumus Umum :
Q(x,y) = A * S
= A(x,y) * S(x,y)
= A(x*Sx, y * Sy)
CONTOH
Diketahui : Titik A (1,1);B
(3,1); C(2,2), ketiga titik 6
tersebut diskalakan sebesar C’
Sx = 2 dan Sy = 3 5
Ditanyakan : Lokasi titik hasil 4
penskalaan
3 A’ B’
Jawab :
2 C
A’=(1*2, 1*3) = (2,3)
B’=(3*2, 1*3) = (6,3) 1 A B
C’=(2*2, 2*3) = (4,6) 0
0 1 2 3 4 5 6
ROTASI
 Perhatikan gambar di bawah ini :

(x’,y’) x
cos 
r
r  + x  r * cos
y
r sin  
 (x,y) r
y  r * sin 
ROTASI
 Dari rumus trigonometri diketahui bahwa :
x'  r cos(   )  r cos cos  r sin  sin 
y '  r sin(   )  r sin  cos  r cos sin 
 Dimana r merupakan jarak dari titik asal terhadap
titik pusat (0,0). Diketahui pula :

 Sehingga : x  r cos , y  r sin 


x'  x cos  y sin 
y '  x sin   y cos
ROTATION
Diketahui :
A(1,1);B(3,1);C(2,2)
Ditanyakan : Rotasikan
ketiga titik tersebut sebesar 4
90o 3
Jawab : 2
A’=(1*cos 90 - 1*sin 90, 1
1*cos 90+1*sin 90)
-4 -3 -2 -1 0 1 2 3 4
=(0-1,0+1)=(-1,1)
B’=(3*cos 90 – 1*sin 90, -1
1*cos 90 + 3*sin 90) -2
=(-1,3) -3
C’=(2*cos 90 – 2*sin 90,
2 * cos 90 + 2*sin 90)
=(-2,2)
ROTASI / PENSKALAAN PADA SEMBARANG TITIK
PUSAT

 Tahapan untuk melakukan rotasi atau


penskalaan dengan sembarang titik pusat
(xr, yr).

 Lakukan pergeseran sebesar (-xr,-yr)


 Lakukan rotasi atau penskalaan
 Lakukan pergeseran sebesar (xr,yr)
(xt,yt) (xt,yt)

(xt,yt) (xt,yt)

Translasi (-xt,-yt) Rotasi /Skala Translasi (xt,yt)


 Contoh :
Diketahui : Titik A(1,1); B(3,1); C(2,3)
Ditanyakan : Skalakan sebesar (3,3) titik tersebut
dengan menggunakan titik pusat
(2,2)
Jawab :
a) Pergeseran sebesar (-2,-2)
A’=(1-2,1-2) = (-1,-1)
B’=(3-2,1-2) = (1,-1)
C’=(2-2,3-2) = (0,1)
b) Penskalaan
A”= (-1*3,-1*3) = (-3,-3)
B”= (1*3,-1*3) = (3,-3)
C”= (0*3,1*3) = (0,3)
c) Pergeseran sebesar (2,2) 5
4
A”’ = (-3+2,-3+2) = (-1,-1) 3
2
B”’ = (3+2,-3+2) = (5,-1) 1
0 1 2 3 4 5
C”’ = (0+2,3+2) = (2,5)
TRANSFORMASI
MENGGUNAKAN MATRIKS
 Rumus transformasi juga dapat dinyatakan
dengan matriks seperti berikut :
a b c
M  d e f 
 g h i 
 Sehingga rumus transformasi menjadi :

x' y' 1  x y 1* M


MATRIKS TRANSFORMASI

 Translasi :
1 0 0 Rotasi
 
0 1 0  cos sin  0
Trx Try 1  sin  cos 0
 Scaling :  
 0 0 1
S x 0 0
0 Sy 0

 0 0 1
CONTOH
 Diketahui : Titik A (2,1)
 Ditanyakan : Lokasi titik yang baru setelah
translasi (2,4)
 Jawab :

1 0 0
 
Q  2 1 1* 0 1 0  4 5 1
2 4 1
TRANSFORMASI BERTURUT-
TURUT
 Transformasi berturut-turut akan lebih mudah
dihitung dengan menggunakan matriks
transformasi
 Rumus Umum :
Mb= M1 * M2 * M3*...*Mn
Dengan Mb merupakan matrik transformasi baru
dan M1...Mn merupakan komponen matrik
transformasi.
CONTOH
Diketahui : Titik A(1,1);B(3,1);C(2,3)
Ditanyakan :
Lokasi titik yang baru setelah dilakukan
transformasi pergeseran (2,3) dan
kemudian penskalaan (3,3)
Jawab :
1 0 0 3 0 0 3 0 0
M b  0 1 0 * 0 3 0  0 3 0
2 3 1 0 0 1 6 9 1

3 0 0
A'  1 1 1* 0 3 0  9 12 1
6 9 1
3 0 0
B'  3 1 1* 0 3 0  15 12 1
6 9 1
 3 0 0
C '  2 3 1* 0 3 0  12 18 1
6 9 1
Tugas
Hitung lokasi titik A (3,1), B (6,2); C (7,4); D
(2,5) setelah dilakukan transformasi berturut-
turut :
(a) Translasi (-4,2)
(b) Rotasi 65o

(c) Skala (2,3) pada titik pusat (6,2)


ALGORITHMA CLIPPING
COHEN-SUTHERLAND
Clipping
 Clipping adalah metoda untuk hanya
menampilkan garis pada area yang visible
(terlihat)

sebelum di-clipping setelah di-clipping


Visible dan Invisible Line
 Berdasarkan posisi garis terhadap area
gambar maka garis dapat dibedakan menjadi
:

fully visible fully invisible partially visible


Visible dan Invisible Line
 Bagaimana menentukan visible dan invisible
line?
 fully visible : (x1 ≥ xmin) dan (x1 ≤ xmax)
dan (y1 ≥ ymin) dan (y1 ≤ ymax)
dan (x2 ≥ xmin) dan (x2 ≤ xmax)
dan (y2 ≥ ymin) dan (y2 ≤ ymax)
 partially visible : -- coba sendiri dan anda akan
menemukan bahwa tidak mudah melakukan hal
tersebut ! --
Algorithma Clipping
 Berbagai algorithma telah dikembangkan
untuk menangani masalah pemotongan garis
tersebut, antara lain :
 Cyrus-Beck
 Cohen-Sutherland
Algorithma Cohen-Sutherland
 Area gambar dibatasi oleh xmin,xmax,
ymin,ymax

ymax area gambar

ymin

xmin xmax
Algorithma Cohen-Sutherland
 Cohen dan Sutherland memberikan kode
kepada tiap area yang mungkin dilewati oleh
sebuah garis atau disebut sebagai region
code.
Top

Left Right

Bottom
Algorithma Cohen-Sutherland
 Region code mempunyai panjang empat bit
dan menggunakan urutan sebagai berikut :
3 2 1 0
T B R L

T(op) = 1 jika ujung garis berada di atas area gambar selain itu 0 (nol)
B(ottom) = 1 jika ujung garis berada di bawah area gambar selain itu 0 (nol)
L(eft) = 1 jika ujung garis berada di kiri area gambar selain itu 0 (nol)
R(ight) = 1 jika ujung garis berada di kanan area gambar selain itu 0 (nol)
Algorithma Cohen-Sutherland
 Sehingga diperoleh region code :

1001 1010 0001 = 1


1000
0010 = 2
0100 = 4
0001 1000 = 8
0000 0010
0101 = 5
0110 = 6
0110 1001 = 9
0101 0100
1010 = 10
 Garis kemungkinan partially visible atau fully invisible apabila
region code dari ujung garis tersebut mempunyai bit bernilai 1
Algorithma Cohen-Sutherland
c
Region Code dari Pa = 0001
Region Code dari Pb = 0010
P
a
Region Code dari Qc = 1001
b
Region Code dari Qd = 0110
Q

Region Code dari Re = 0100


f
Region Code dari Rf = 0000
R

d
e
Algorithma Cohen-Sutherland
 Pemotongan (clipping) dilakukan terhadap
ujung-ujung garis yang region code berisi bit
bernilai 1.
 Contoh sebelumnya menunjukkan bahwa
ujung Pa, Pb, Qc,Qd dan Re yang akan
mengalami pemotongan.
Algorithma Cohen-Sutherland
Ujung garis Pa
Region code Pa =1000
a
p1 Pa berpotongan dengan garis
ymax
P ymax sehingga menghasilkan
titik potong p1 (x1,ymax)

y1 p2
b Ujung garis Pb
ymin Region code Pb = 0010
xmin x1 xmax Pb berpotongan dengan garis
xmax sehingga menghasilkan
titik potong p2 (xmax,y1)
Algorithma Cohen-Sutherland
 Dengan menggunakan cara yang sama maka
lokasi titik potong untuk tiap area akan sesuai
tabel di bawah ini :
Area berpotongan dicari titik potong
T ymax xp1 (xp1,ymax)
B ymin xp2 (xp2,ymin)
R xmax yp1 (xmax,yp1)
L xmin yp2 (xmin,yp2)
Algorithma Cohen-Sutherland
 Koordinat titik potong dapat dicari dengan
cara :
ymax  y1
xp1  x1 
m
ymin  y1
xp2  x1 
m
yp1  y1  m * xmax  x1 

yp2  y1  m * xmin  x1 
Algorithma Cohen-Sutherland
 Contoh
• Diketahui : area gambar : (1,2)-(5,5)
• Ditanyakan :
 lokasi titik potong dari garis
P (2,1) - (4,6) terhadap area gambar
 lokasi titik potong dari garis S (2,6) - (6,3)
Algorithma Cohen-Sutherland
b m = (y2-y1) / (x2-x1)
6
= (6-1) / (4-2) = 5/2 =2,5
5
Ujung garis Pa
4
Region code Pa = 0100
3 P
Ujung Pa berpotongan dengan
2
garis ymin sehingga
1 a p = x1+(ymin - y1) / m
-2 -1 1 2 3 4 5 6 p = 2 + (2 - 1) / 2,5 = 2,4
-1
Jadi lokasi titik potong
-2
p = (2,4;2)
Algorithma Cohen-Sutherland
Ujung garis Pb
6
q Region code Pb = 1000
5
Ujung Pb berpotongan dengan
4
garis ymax sehingga
3 P
q = x1+(ymax - y1) / m
2
p q = 2 + (5 - 1) / 2,5 = 3,6
1
Jadi lokasi titik potong
-2 -1 1 2 3 4 5 6 q = (3,6;5)
-1 Dengan demikian garis P akan
-2 di gambar dari p ke q atau dari
(2,4;2) menuju (3,6;5)
Algorithma Cohen-Sutherland
a m = (y2-y1) / (x2-x1)
6
= (3-6) / (6-2) = -3/4 = -0,75
5
Ujung garis Sa
4 S
Region code Pa = 1000
3
b
Ujung Sa berpotongan dengan
2
garis ymax sehingga
1
p = x1+(ymax - y1) / m
-2 -1 1 2 3 4 5 6 p = 2 + (5 - 1) / -0,75 = 3,3
-1
Jadi lokasi titik potong
-2
p = (3,3;5)
Algorithma Cohen-Sutherland
Ujung garis Sb
6
p Region code Sb = 0010
5
Ujung Sb berpotongan dengan
4 S garis xmax sehingga
q
3
q = y1+ m * (xmax - x1)
2
q = 6 + (-0,75) * (5 - 2) = 3,75
1
Jadi lokasi titik potong
-2 -1 1 2 3 4 5 6 q = (5;3,75)
-1 Dengan demikian garis S akan
-2 di gambar dari p ke q atau dari
(3,3;5) menuju (5;3,75)
Algorithma Cohen-Sutherland
 Untuk ujung-ujung garis dengan region code
berisi bit 1 maka ada tiga kemungkinan
perpotongan antara garis P dengan area
gambar

p3 p1 p4
p1 p1
P P
p2 p2 P

p2
p3
2 titik potong 3 titik potong 4 titik potong
Algorithma Cohen-Sutherland
 Apabila ditemukan lebih dari satu titik potong
maka pilih titik potong yang paling "dekat"
dengan area gambar.
 Bagaimana pengertian "dekat" didefinisikan?
 Tugas anda mendefinisikan pengertian "dekat"
tersebut!
Algorithma

Cohen-Sutherland
Algorithma Cohen-Sutherland dapat dituliskan sebagai berikut :

Ambil ujung pertama (Pa) dari garis P


rc = Tentukan Region Code dari Pa
switch (rc)
0 : p = Pa
1 : p = (xmin,yp1)
2 : p = (xmax,yp2)
4 : p = (xp2,ymin)
5 : p1 = (xp2,ymin) ; p2 = (xmin,yp1)
Tentukan mana yang lebih dekat antara p1 & p2
6 : p1 = (xp2,ymin) ; p2 = (xmax,yp2)
p = Tentukan mana yang lebih dekat antara p1 & p2
8 : p = (xp1,ymax)
9 : p1 = (xp1,ymax) ; p2 = (xmin,yp1)
p = Tentukan mana yang lebih dekat antara p1 & p2
10 : p1 = (xp2,ymax) ; p2 = (xmin,yp1)
p = Tentukan mana yang lebih dekat antara p1 & p2
Algorithma Cohen-Sutherland
Ambil ujung kedua (Pb) dari garis P
rc = Tentukan Region Code dari Pb
switch (rc)
0 : q = Pb
1 : q = (xmin,yp1)
2 : q = (xmax,yp2)
4 : q = (xp2,ymin)
5 : p1 = (xp2,ymin) ; p2 = (xmin,yp1)
q = Tentukan mana yang lebih dekat antara p1 & p2
6 : p1 = (xp2,ymin) ; p2 = (xmax,yp2)
q = Tentukan mana yang lebih dekat antara p1 & p2
8 : p1 = (xp1,ymax)
9 : p1 = (xp1,ymax) ; p2 = (xmin,yp1)
q = Tentukan mana yang lebih dekat antara p1 & p2
10 : p1 = (xp2,ymax) ; p2 = (xmin,yp1)
q = Tentukan mana yang lebih dekat antara p1 & p2
Gambar garis dari p menuju q
Algorithma Cohen-Sutherland
 Tugas (kelompok) :
Tentukan titik-titik potong dari garis-garis berikut :
 P = (2,1) - (6,7)
 Q = (2,3) - (7,5)
 S = (4,2) - (8,7)
pada area gambar (2,2) - (5,5)
PROYEKSI
PROYEKSI

 Proyeksi adalah metoda menggambarkan


benda tiga dimensi pada bidang 2 dimensi.
 Ada 2 cara melakukan proyeksi :
 Proyeksi paralel : Semua garis paralel akan
tampak paralel pada bidang proyeksi.
 Proyeksi perspektif : Semua garis paralel akan
menghilang di titik pusat proyeksi.
PROYEKSI

P2 P2
P'2 Bidang
Proyeksi

Bidang P'2
Proyeksi
P'1 P'1 Titik hilang
P1 P1

(a) Proyeksi Paralel (a) Proyeksi Perspektif


PROYEKSI PARALEL
 Ada dua macam proyeksi paralel :
 Proyeksi Orthographic
 Proyeksi Oblique
 Proyeksi orthographic adalah proyeksi
dengan mata tegak lurus terhadap bidang
proyeksi
 Proyeksi Oblique adalah proyeksi dengan
mata berada di lokasi yang tidak tegak lurus
terhadap bidang proyeksi
PROYEKSI ORTHOGRAPHIC
 Proyeksi orthographic dibagi menjadi 2
macam :
 Pandangan Multiview Orthographic
 Pandangan Axonometric yang dibagi menjadi tiga
macam :
 Isometric : Proyeksi dimana 3 muka dipendekkan dalam
ukuran yang sama
 Dimetric : Proyeksi dimana 2 muka benda dipendekkan
dalam ukuran yang sama
 Trimetric : Proyeksi dimana 2 muka dipendekkan dalam
ukuran yang berbeda
PROYEKSI MULTIVIEW
ORTHOGRAPHIC
 Proyeksi ini diperoleh dengan menolkan
salah satu koordinat sesuai dengan sumbu
proyeksi.
 Terhadap bidang xy : Q(x,y) = P(x,y,z)
 Terhadap bidang xz : Q(x,z) = P(x,y,z)
 Terhadap bidang yz : Q(y,z) = P(x,y,z)
PROYEKSI MULTIVIEW
ORTHOGRAPHIC
Pandangan Atas Pandangan Depan
atas

samping

depan
Pandangan Samping
PROYEKSI AXONOMETRIC

isometric

dimetric

trimetric
PROYEKSI OBLIQUE

 Memproyeksikan ke garis sejajar yang tidak


tegak lurus terhadap bidang proyeksi.
 Dibagi menjadi dua macam
 Cavalier
 Cabinet
PROYEKSI OBLIQUE

Cabinet Cavalier
PROYEKSI PERSPEKTIF
 Proyeksi perspektif bergantung pada dua
variable : lokasi mata dan bidang proyeksi.

1 titik hilang
2 titik hilang 3 titik hilang
PROYEKSI PERSPEKTIF
t=0 t=1

t
A r(t) = A(1-t) + B*t B

Contoh :
A=5;B=9
dengan t = 0,3 maka r(t) = 9 * (1-0,3) + 5*0,3 = 6,2
dengan t = 1 maka r(t) = 9 * (1-1) + 5 * 1 = 9
PROYEKSI PERSPEKTIF
y
viewplane

p(x,y,z)
p'(x',y')

y
x'

y' x
z

mata
E x

z
PROYEKSI PERSPEKTIF
 Dengan bidang proyeksi adalah bidang xy
dan titik terletak di sumbu z sejauh E maka
titik hasil proyeksi akan z = 0 apabila :
1
t' 
1 z
E
y'  y * t '
x'  x * t '
 dengan E > z
Contoh proyeksi perspektif
Diketahui sebuah benda dengan vertex-vertex dan edge seperti tabel di bawah
ini, lakukan proyeksi perspektif jika E terletak di z=10 dan z = 20:

Vertex x y z edge v1 v2

1 1 2 0 1 1 2
2 3 2 0 2 2 3
3 3 2 3 3 3 4
4 1 2 3 4 4 1
5 2 4 2 5 1 5
6 2 5
7 3 5
8 4 5
Contoh proyeksi perspektif
E = 10
Vertex x' y'
1 = x / (1-z/E) = y / (1-z/E) 5
5
= 1 / (1-0/10) = 2 / (1-0/10)
=1 =2 4
2 = 3 / (1-0/10) = 2 / (1-0/10) 3 3
4
=3 =2
2 1 2
3 = 3 / (1-3/10) = 2 / (1-3/10)
= 4,29 = 2,86 1
4 = 1 / (1-3/10) = 2 / (1-3/10) x
1 2 3 4
= 1,43 = 2,86
5 = 2 / (1-2/10) = 4 / (1-2/10)
= 2,5 =5
Contoh proyeksi perspektif
E = 20

Vertex x' y' y


1 = x / (1-z/E) = y / (1-z/E)
5
= 1 / (1-0/20) = 2 / (1-0/20) 4
=1 =2
3
2 = 3 / (1-0/20) = 2 / (1-0/20) 4 3
=3 =2 2 1 2

3 = 3 / (1-3/20) = 2 / (1-3/20) 1
= 3,19 = 2,13
x
4 = 1 / (1-3/5) = 2 / (1-3/5) 1 2 3 4
= 1,06 = 2,13
5 = 2 / (1-2/20) = 4 / (1-2/20)
= 2,08 = 4,17
DUNIA 3 DIMENSI
2 Dimensi dan 3 DIMENSI
 Apa yang membedakan 2 dimensi dengan 3
dimensi ?
 2 Dimensi : Tinggi dan Lebar
 3 Dimensi : Tinggi, Lebar dan Kedalaman
 Kedalaman adalah jarak antara pemirsa
(viewer) terhadap benda yang dia lihat
2 Dimensi dan 3 Dimensi
2 Dimensi 3 Dimensi
tinggi

tinggi
kedalaman

lebar lebar
3 Dimensi
 Bagaimana manusia memperoleh kesan kedalaman ?
 Manusia mempunyai dua mata.

 Kedua mata manusia mempunyai selisih sudut pandang 120o

 Perbedaan sudut pandang tersebut membuat masing-masing


mata memperoleh gambar yang berbeda untuk objek yang sama.
 Perbedaan gambar diproses oleh otak sehingga kita memperoleh
kesan 'kedalaman' atau jarak terhadap benda.
 Percobaan : Tutup salah satu mata anda selama kurang lebih 2
hari dan anda akan mengetahui bahwa anda tidak dapat
menentukan dengan mudah jarak antara anda dengan benda
yang anda lihat
3 Dimensi

mata kiri mata kanan


Sifat-sifat 3 dimensi
 Setiap titik dalam 3 dimensi ditentukan oleh
tiga posisi :
 x : jarak titik tersebut terhadap sumbu x
 y : jarak titik tersebut terhadap sumbu y
 z : jarak titik tersebut terhadap sumbu z
 Posisi sebuah titik dalam 3 dimensi dituliskan
dalam bentuk (x,y,z)
Sifat-sifat 3 dimensi
 Bagaimana menggambarkan sumbu 3
dimensi ?
y+ y+
z+

z+
x+ x+
Benda 3 Dimensi dan komputer
 Komputer dapat digunakan untuk mengolah
benda tiga dimensi.
 Ada tiga persoalan dalam mengolah benda
tiga dimensi menggunakan komputer :
 Pembuatan lokasi titik 3D
 Manipulasi titik 3D
 Transformasi titik 3D menjadi 2D
Pembuatan lokasi titik 3D
 Proses yang digunakan untuk menghasilkan lokasi
titik-titik 3D yang menunjukkan bentuk dari benda
3D
 Ada 3 macam proses untuk menghasilkan lokasi titik
3D :
 Penentuan langsung menggunakan peralatan seperti
mouse3D, scanner3D berbagai peralatan lain
 Menggunakan parametric surface
 Menggunakan prosedur khusus seperti extrude dan
surface of revolution.
Scanner 3D
 Scanner 3D merupakan peralatan yang
digunakan untuk menghasilkan lokasi titik-titik
3D secara langsung dengan menunjuk lokasi
titik tersebut.
 Contoh peralatan : mouse, trackball, laser
scanner dan sebagainya.
Parametric Surface
 Digunakan untuk menghasilkan benda-benda
yang dapat direpresentasikan dalam rumus
matematika seperti : bola, donut, tabung,
cone dan sebagainya
Parametric Surface
Extrude
 Merupakan prosedur menghasilkan lokasi
titik 3D dengan menarik titik-titik 2 dimensi ke
satu arah tertentu.
titik hasil extrude

arah extrude

titik asal
Surface of Revolution
 Prosedur untuk menghasilkan lokasi titik 3D
dengan cara memutar profile pada sumbu
putar
sumbu putar
hasil putaran

profile
Reprsentasi Struktur data titik 3D
 Titik 3D dapat disimpan sebagai :
 Mesh
 Rumus matematika
 Titik profile
Mesh
 Mesh merupakan kumpulan titik 3D yang saling
dihubungkan.
 Model yang dihasilkan disebut sebagai wireframe
model
 Permukaan benda (surface) diperoleh dengan
menghubungkan titik-titik vertex baik dalam bentuk
segiempat atau segitia.
 Umumnya digunakan surface dalam bentuk segitiga
karena bentuk segitiga akan selalu berada dalam
keadaan planar (datar).
Mesh
edge surface 2
e2 e2
v3 v2
v3 v2

e3 vertex e1
e1 e3
e2 e1

v4 v1
e4 v4 v1
e3
surface 1
surface

surface surface 1 surface 2


v1-v2-v3-v4 v1-v2-v4 v4-v2-v3
Mesh
 Mesh dengan surface segi-empat disimpan
sebagai record :

Point3D = record
x,y,z:real;
end;
Mesh = record
jumvertex,jumedge:integer;
vertex : array [1..1000] of Point3D;
edge : array[1..1000,1..2] of integer;
end;
Mesh
Z
Daftar Vertex
Vertex x y z
1 0 0 0
4
2 0 1 0
5 3
3 0 1 1
9
4 0 0.5 1.5 10 8
5 0 0 1 1 2
Y
6 1 0 0
6 7
7 1 1 0
8 1 1 1
9 1 0.5 1.5
10 1 0 1
X

edge v1 v2 edge v1 v2 edge v1 v2 edge v1 v2


1 1 2 6 6 7 11 1 6 16 2 5
2 2 3 7 7 8 12 2 7 17 1 3
3 3 4 8 8 9 13 3 8
4 4 5 9 9 10 14 4 9
5 5 1 10 10 6 15 5 10
Proses Komputer 3D
Lokasi
Manipulasi Penampilan
titik-titik 3D

Shadow
Surf Transformasi / Pewarnaan
scanning Formula
Of Rev.

Hidden Line
Removal
Perspektif

Hidden Surface
Removal
Camera

RayTracing
OpenGL & GLUT
Sejarah OpenGL
Pada awal tahun 90-an Silicon Graphics (SGI) adalah
sebuah perusahaan yang memimpin dalam aplikasi
berbasis grafik 3D untuk workstation. Mereka
menggunakan API yang disebut IRIS GL untuk workstation
mereka. IRIS GL adalah milik perangkat keras SGI dan
bukan standar "terbuka". API dianggap mudah digunakan
dan juga mendukung render mode langsung.

Pada saat itu vendor yang bersaing, termasuk Sun


Microsystems, IBM dan Hewlett-Packard juga membawa
3D perangkat keras di pasaran. Mereka menggunakan API
lain yang disebut PHIGS. (Dalam fungsi dan kemampuan
IRIS GL lebih unggul dari PHIGS)
Sejarah OpenGL
SGI memutuskan mengubah IRIS GL menjadi standar terbuka
tetapi karena terkendala masalah lisensi dan paten, mereka
membuat API baru berdasarkan IRIS GL yang disebut
OpenGL. Pada tahun 1992, SGI memimpin pembentukan
dewan peninjau arsitektur OpenGL (ARB) yang terdiri dari
SGI, Microsoft, IBM, DEC dan Intel. Peran OpenGL ARB
adalah untuk menetapkan dan memelihara spesifikasi
OpenGL.
Tidak semua fitur khusus perangkat keras dapat diakses oleh
versi OpenGL (Opengl default). Untungnya, pembuatan kartu
video dapat dan memang menyediakan ekstensi OpenGL.
Dengan ekstensi ini Anda dapat mengakses fitur khusus
khusus perangkat keras.
Sejarah OpenGL
Jika fitur ini digunakan oleh banyak vendor, ekstensi
dapat menjadi tambahan resmi untuk standar OpenGL.
(Dalam versi lama (OpenGL 1.2), fitur lanjutan
(tambahkan waktu itu) diminta oleh pengembang game
yang disebut multi-texturing).

Rilis OpenGL di masa mendatang akan semakin


dipengaruhi oleh pengembang game dan industri game.
Overview OpenGL
 Open Graphics Library (OpenGL) merupakan spesifikasi
standar yang mendefinisikan Application Programming
Language (API) lintas-bahasa, lintas-platform.
 OpenGL menyediakan programmer sebuah antarmuka
ke perangkat keras grafis.
 OpenGL adalah perangkat lunak perenderan dan
pemodelan tingkat rendah yang kuat.
 OpenGL dimungkinkan untuk menghasilkan aplikasi
grafik 2D dan 3D. OpenGL secara luas digunakan dalam
permainan video, CAD, aplikasi ilmiah, dll, di berbagai
platform. Banyak game komersial, seperti seri Quake
Perangkat Lunak ID
Overview OpenGL
 OpenGL menghilangkan kebutuhan untuk pemrogram
untuk menulis ulang bagian grafis dari sistem operasi
setiap kali sebuah bisnis akan diupgrade ke versi baru
dari sistem.
 Fungsi dasar dari OpenGL adalah untuk mengeluarkan
koleksi perintah khusus atau executable ke sistem
operasi.
 OpenGL pada awalnya didesain untuk digunakan pada
bahasa pemrograman C/C++, namun dalam
perkembangannya OpenGL dapat juga digunakan dalam
bahasa pemrograman yang lain seperti Java, Tcl, Ada,
Visual Basic, Delphi, maupun Fortran
Overview OpenGL
 OpenGL di-package secara berbeda-beda sesuai
dengan bahasa pemrograman yang digunakan. Oleh
karena itu, package OpenGL tersebut dapat di-download
pada situs http://www.opengl.org sesuai dengan bahasa
pemrograman yang akan digunakan.
Layanan OpenGL
 Untuk menyembunyikan kompleksitas dari interfacing
dengan berbagai 3D accelerators, memamerkan oleh
programmer dengan satu, seragam API.
 Untuk menyembunyikan kemampuan yang berbeda
dari hardware platform, oleh semua yang
memerlukan mendukung implementasi penuh fitur
opengl set (menggunakan software emulation jika
diperlukan)
GLUT (GL Utility Toolkit)
 Merupakan pengembangan dari OpenGL yang didesain
untuk aplikasi dengan level kecil hingga menengah dan
menggunakan callback functions untuk menambahkan
interaksi dari user.
 Untuk pemrograman OpenGL menggunakan C++,
diperlukan library tambahan yaitu :
 glut.h yang dicopy ke drive:\Program Files\Microsoft
Visual Studio 2010\Vc\include\GL
 glut32.lib yang dicopy ke drive:\Program
Files\Microsoft Visual Studio 2010\Vc\
 libglut32.dll yang dicopy ke drive:\Windows\System
Klasifikasi Fungsi
Primitive : berupa geometric, imagesAttribute :
berupa color, line type, light, texture
Viewing : berupa virtual cameraControl : turn fuction
ON / OFF
Windowing : window, mouse, keyboard
Cara Kerja OpenGL
OpenGL lebih mengarah pada prosedural daripada
sebuah deskriptif API grafis dengan memanggil banyak
perintah openGL, perintah tersebut digunakan untuk
menggambarkan grafis primitif seperti titik,garis dan
poligon dalam tiga dimensi.

OpenGL mendukung lighting, shading, texture mapping,


blending, transparancy, dan banyak kemampuan efek
khusus lainnya.
Cara Kerja OpenGL
OpenGL mempunyai banyak fungsi dan
penggunaan perintah yang sangat luas,
penggunaan openGL membutuhkan library
tambahan yang harus di letakkan pada direktory
system dari windows (OS), yaitu:
OpenGL32.dll
Glu32.dll
Glut32.dll
Library pada OpenGL
Fungsi asli dari OpenGL sendiri selalu diawali dengan gl yang
terdapat pada library opengl32.dll dan file header gl.h

Fungsi-fungsi tambahan pada OpenGL adalah :


 OpenGL Utility Library (GLU) terdapat sejumlah rutin yang
menggunakan level bawah dari perintah OpenGL yang
mempunyai awalan glu yang merupakan implementasinya
 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.
 Auxiliary atau aux library terdapat pada library glaux.lib dan
file header glaux.h. Perintah yang akan digunakan selalu
menggunakan awalan aux
Inisialisasi OpenGL
Inti dari tahapan ini adalah mengatur view port dan
persepektif untuk penampilan obyek ke dalam layar
monitor.

Fungsi/prosedur yang digunakan:


 LoadGlut(‘glut32.dll) - pemanggilan library openGL
 InitGL – inisialisasi openGL awal yang harus dilakukan
 glViewport – untuk pengaturan viewport
 glMatrixMode – pengaturan viewport
 gluPerspective – pengaturan persepektif
Contoh script inisialisasi OpenGL
Try
LoadGlut(‘glut32.dll’);
InitGL;
Exept on e := exeption
do
Begin
messageDlg{ e.message, mtError,
[mbOk],};
Halt {1}; End;
End;
Script di atas merupakan script yang paling
sederhana, dalam artian minimal diperlukan untuk
menginisialisasi penggunaan openGL.

Fungsi-fungsi lain seperti yang disebut diatas seperti


glViewport, glMatrixMode, dapat di tambah kan pada
script sesuai dengan kebutuhan
Langkah-langkah OpenGL
a. Install Microsoft Visual Studio.NET pada komputer anda
b. Siapkan file OpenGL95.exe dan glut-3.7.6.zip pada
direktori sementara
c. Masukan
1. GL.H, GLAUX.H, GLU.H dan glut.h ke drive:\Program
Files\Microsoft Visual Studio .NET 2003\Vc7\include\gl
2. GLAUX32.LIB, GLU32.LIB, OPENGL32.LIB dan
glut32.lib ke drive:\Program Files\Microsoft Visual
Studio .NET 2003\Vc7\lib
3. OPENGL32.DLL, GLU32.DLL dan glut32.dll ke
drive:\Windows\System
Membuat program OpenGL sederhana
a. Jalankan Visual Studio .NET, buatlah sebuah proyek
dengan tipe Visual C++ Projects dan template Win32
Console Project. Beri nama sesuai selera anda.
b. Pada Application Settings pilih Console Application
dan Empty Project
c. Pada Solution Explorer, klik kanan Source Files lalu
Add - Add New Item,lalu pilih template C++ File (.cpp),
beri nama menurut selera anda, klik Open. Pada layar
akan terlihat halaman kosong
d. Masukan program berikut:
Membuat program OpenGL sederhana
#include <windows.h>
#include <GL\glut.h>
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.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();
glFlush ();
}
int main(int argc, char** argv)
Membuat program OpenGL sederhana
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("Program Pertama OpenGL");
glClearColor (0.0, 0.0, 0.0, 0.0);
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
Membuat program sederhana OpenGL

e. Modifikasi Project Properties dengan memilih


Project – Properties – All Configurations – Linker,
masukkan opengl32.lib glu32.lib glut32.lib pada
textbox Additional Dependencies
f. Jika diperlukan, agar console windows tidak dibuka
pada saat menjalankan program (console output
akan disabled), masukan /SUBSYSTEM:
WINDOWS ENTRY:mainCRTStartup pada Linker –
Command Line – Additional Options
Membuat program sederhana OpenGL
g. Lakukan kompilasi terhadap program tersebut,
hasilnya adalah sebagai berikut
REVIEW MATERI/ QUIS

Anda mungkin juga menyukai