Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika...

46
Grafika Komputer Evangs Mailoa

Transcript of Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika...

Page 1: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Grafika Komputer

Evangs Mailoa

Page 2: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Translasi

Skala

Rotasi/Putar

Page 3: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Konsep yang terpenting dalam grafikakomputer adalah Transformasi Affine.

• Pada dasarnya, transformasi iniadalah memindahkan objek tanpamerusak bentuk.

Page 4: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Satu contoh transformasi adalah transformasidari jendela (window) ke viewport.

• Disini kita telah melihat citra dalam jendeladunia di-skala dan dipindahkan ke jendelaviewport.

• Kita akan membuat transformasi sejenis untukmemindahkan objek ke lokasi yang kompleks.

Page 5: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Transformasi 2D dan 3D terdiri dari:

–Rotation

–Skala

–Translasi

–Shearing

Page 6: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Transformasi memperkenankan untuk:

1. Komposisi pemandangan

2. Memudahkan membuat objek yang simetris

Page 7: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

3. Melihat objek dari sudutpandang yang berbeda

4. Animasi komputer denganbeberapa objek untukberpindah dari satutempat ke tempat lain.

Page 8: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• OpenGL membuat transformasi mudah.

• Tetapi ini bukan alasan untuk tidak mempelajari

transformasi secara rinci.

Page 9: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Transformasi secara sederhana dapatdikatakan sebagai mengambil titik danmemetakannya ke lokasi lain.

Page 10: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Dalam kasus 2D, ini berarti:

– Untuk P = (Px, Py, 1)T dan Q = (Qx, Qy, 1)T

– P adalah pada lokasi P = Pxi+Pyj + ξ (sama untuk Q)

maka, Q = M (Px, Py, 1)T atau Q = M(P)

Dengan M adalah matrik pemetaan

P

Q

Page 11: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Latihan:

– Jika P = (3,4) dan Q = (5, 7) berapakah M ?

– (5,7,1)T = M (3,4,1)T

– Kita ingin menaikkan Px dengan 2 dan Py dengan 3. Berapakah M ??

1100310201

1PP

QQ

y

x

y

x

Page 12: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Memindahkan titik/objek dalamarah x, y dan atau z.

Page 13: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Ini berarti bahwa nilainyaditambah atau dikurangidengan nilai tertentu.

11001001

1PP

dPdP

QQ

y

x

y

x

y

x

P

Q

dPx

dPy

Page 14: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Contoh: Tentukanmatriks translasi untukmemindahkan titikP=(4,6) ke Q=(10,3) ?

164

100310

601

13

10

P

Q

Berubah dalam X

Berubah dalam Y

Page 15: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Contoh: Tentukanmatriks translasi untukmemindahkan titikP=(4,6,2) ke Q=(10,3,5) ?

1

2

6

4

1000

3100

3010

6001

1

5

3

10

P

Q

Berubah dalam X

Berubah dalam Y

Berubah dalam Z

Page 16: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Nilai koordinat x, y, danatau z dikalikan denganbilangan skalar.

11000000

1PP

sPsP

QQ

y

x

y

x

y

x

P

Page 17: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Contoh: Tentukan matriks skala untukmenskala titik P = (6,2) ke Q = (3,4)

126

10002000

143 2

1

P

Page 18: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Contoh: Tentukan matriks skala untukmenskala titik P = (6,2,9) ke Q = (3,4,3)

1

9

2

6

1000

03

100

0020

0002

1

1

3

4

3

P

Page 19: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Koordinat x,y dan atau z diputar ke sekeliling titikreferensi.

PBagaimana kita menghitung rotasi titik

P ke titik Q?

P

Q

ФӨ

Page 20: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Gunakan right-angles dan trigonometri.

Kita tahu bahwa

P(x,y) = (R cos(Ф), R sin(Ф) )

dan

Q(x,y) = (R cos(Ө+Ф), R sin(Ө +Ф) )

Dari trigonometri:

cos(Ө+Ф) = cos(Ө)cos(Ф) –sin(Ө)sin(Ф)

sin(Ө +Ф) = sin(Ө)cos(Ф) + cos(Ө)sin(Ф)y = R sin

(Ф)

x = R sin (Ф)

Page 21: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Gunakan right-angles dan trigonometri.

Qx = R cos(Ө+Ф) = R cos(Ө)cos(Ф) – R sin(Ө)sin(Ф)

Qy = R sin(Ө +Ф) ) = R sin(Ө)cos(Ф) + R cos(Ө)sin(Ф)

Menggunakan P(x,y) = (R cos(Ф), R sin(Ф) )

didapatkan

Qx = Pxcos(Ө) – Pysin(Ө)

Qy = Pxsin(Ө) + Pycos(Ө)

Page 22: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Matriks rotasi:

11000)cos()sin(0)sin()cos(

1PP

QQ

y

x

y

x

Page 23: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Ada 3 jenis rotasi

• Rotasi pada sumbu x, y dan z

Page 24: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Putaran Z sama denganperputaran dalam 2D sebagai objek putarantara sumbu x dan y

11 1000

0100

00)cos()sin(

00)sin()cos(

PPP

Q

QQ

z

y

x

z

y

x

Sudut rotasi positif dengan aturan tangan kanan.

Page 25: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Putaran X adalah rotasi antara sumbu y dan z.

11 1000

0)cos()sin(0

0)sin()cos(0

0001

PPP

Q

QQ

z

y

x

z

y

x

Page 26: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Putaran Y adalah rotasi antara sumbu x dan z .

11 1000

0)cos(0)sin(

0010

0)sin(0)cos(

PPP

Q

QQ

z

y

x

z

y

x

Page 27: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Shearing

– Shearing berarti bahwa sebuah titik ditarik kearah tertentu.

Page 28: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Shearing terjadi sepanjanggaris.

• Dalam contoh ini, shear terjadi sepanjang sumbu x.

• Atau:

– Qx = Px + hPy;

– Qy = Py;

110001001

1PPh

QQ

y

x

y

x

Page 29: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Kombinasi Transformasi• Rotasi, skala, translasi dan Shearing dapat

dikombinasikan ke dalam satu matriks.

• Contoh: jika kita ingin untuk mentranslasisebuah objek, memutarnya dan kemudianmenskala, maka matriks transformasi T:

1001001

1000)cos()sin(0)sin()cos(

1000000

dPdP

sPsP

y

x

y

x

Page 30: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Transformasi Affine mempertahankangaris dan bidang.

–Mempertahankan keliniearan dankedatarannya

• Garis tetap sebagai garis

• Bidang tetap datar

Page 31: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Transformasi Affine mempertahankan garisdan bidang.

– Jika 2 garis paralel dikenakan transformasiyang sama maka hasil setelah transformasitetap juga paralel.

– Demikian juga untuk bidang

Page 32: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

OpenGL bekerja dengan matriks 4 dimensi.

OpenGL akan mengerjakan transformasi affine untuk kita.

Akan menghasilkan segiempat warna hijau:

glColor3f (0.0, 1.0, 0.0);

glRectf (300.0, 200.0, 400.0, 300.0);

Pemrograman

Page 33: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

PemrogramanSekarang akan ditranslasikan glTranslated( x, y, z) danwarnanya diganti dengan warna biru

void display(void){

glColor3f (0.0, 1.0, 0.0);glRectf (300.0, 200.0, 400.0, 300.0);

glColor3f (0.0, 0.0, 1.0);glPushMatrix();

glTranslated(150,150,0);glRectf (300.0, 200.0, 400.0, 300.0);

glPopMatrix();

glFlush ();}

Page 34: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan
Page 35: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Pemrograman

Atau diputar glRotate(degrees, x, y, z); danwarnanya diganti dengan merah.

void display(void){

glColor3f (0.0, 1.0, 0.0);glRectf (300.0, 200.0, 400.0, 300.0);

glColor3f (1.0, 0.0, 0.0);glPushMatrix();

glRotatef(30.0f, 0.0f, 0.0f, 1.0f); glRectf (300.0, 200.0, 400.0, 300.0);

glPopMatrix();

glFlush ();}

Page 36: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan
Page 37: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Pemrograman

Atau diskala glScaled(x, y, z); dan warnanya digantidengan kuning

void display(void){

glColor3f (0.0, 1.0, 0.0);glRectf (300.0, 200.0, 400.0, 300.0);

glColor3f (1.0, 1.0, 0.0);glPushMatrix();

glScalef(0.5f, 0.5f, 1.0f); glRectf (300.0, 200.0, 400.0, 300.0);

glPopMatrix();

glFlush ();}

Page 38: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan
Page 39: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Atau kombinasi ketiganyavoid display(void){

glColor3f (0.0, 1.0, 0.0);glRectf (300.0, 200.0, 400.0, 300.0);

glColor3f (0.0, 1.0, 1.0);glPushMatrix();

glRotatef(30.0f, 0.0f, 0.0f, 1.0f); glScalef(0.5f, 0.5f, 1.0f); glTranslated(150,150,0);glRectf (300.0, 200.0, 400.0, 300.0);

glPopMatrix();

glFlush ();}

Pemrograman

Page 40: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan
Page 41: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Dan kita harus mengalikan matriks transformasidengan urutan terbalik demikian juga denganOpenGL.

• Contoh untuk melakukan transformasi darisegiempat dengan ditranslasi, diskala dankemudian dirotasi maka kodenya adalah :

glRotatef(30.0f, 0.0f, 0.0f, 1.0f); glScalef(0.5f, 0.5f, 1.0f); glTranslated(150,150,0);glRectf (300.0, 200.0, 400.0, 300.0);

Pemrograman

Page 42: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Saat mau memulainya nampakkompleks, tetapi sebenarnyacukup mudah.

Page 43: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Saluran OpenGL : matriks pandangan model, matriksproyeksi, dan matriks viewport.

Page 44: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Matriks Proyeksi

– set dengan glOrtho(left, right, bottom, top, near, far)

left right

top

bottom

near

far

Page 45: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

• Matriks Pandangan model

– Disamping dengan glTranslated, glScaled and glRotated…, juga digunakan

– gluLookAt(eye.x, eye.y, eye.z, lookat.x, lookat.y, lookat.z, up.x, up.y, up.z);

Posisi mata

(x, y, z)

Arah ke atas

Page 46: Grafika Komputer - evangsmailoa.files.wordpress.com · •Konsep yang terpenting dalam grafika komputer adalah Transformasi Affine. •Pada dasarnya, transformasi ini adalah memindahkan

Mau bertanya..?