algorithma garis

30
ALGORITHMA GARIS Hieronimus Edhi Nugroho, M.Kom

Upload: clancy

Post on 25-Jan-2016

67 views

Category:

Documents


2 download

DESCRIPTION

ALGORITHMA GARIS. Hieronimus Edhi Nugroho, M.Kom. 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 ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ALGORITHMA GARIS

ALGORITHMA GARIS

Hieronimus Edhi Nugroho, M.Kom

Page 2: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 2

Algorithma Garis

Masalah : Pixel mana yang harus dipilih untuk menggambar

sebuah garis ?

Page 3: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 3

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

Page 4: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 4

Kuadran Garis

Kuadran Kriteria Arah Garis Contoh

I (x1 < x2) dan (y1 < y2)(1,1) – (4,5)

(-3,2) – (-1,4)

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

(-3,-3) – (-6,-1)

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

(9,5) – (1,2)

IV (x1 < x2) dan (y1 > y2)(3,9) – (6,2)

(-2,1) – (4,-5)

(x1,y1)

(x2,y2)

(x1,y1)

(x2,y2)

(x1,y1)

(x2,y2)

(x1,y1)

(x2,y2)

Page 5: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 5

Kuadran Garis

0 1 2 3 4 5 6 7 8 9

1

2

34

5

6

7

8

C

D

(x1,y1)

(x2,y2)

(x1,y1)

(x2,y2)

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 ?

0 1 2 3 4 5 6 7 8 9

1

2

34

5

6

7

8

A

B

(x1,y1)

(x2,y2)

(x1,y1)

(x2,y2)

Page 6: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 6

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

Page 7: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 7

LINE EQUATION

Sebuah garis lurus dapat diperoleh dengan menggunakan rumus :

y = mx + b dimana :

m = gradien b = perpotongan garis

dengan sumbu y.

x1x2

y1

y2

b

Page 8: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 8

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 :

12

12

xx

yym

(1)

11 xmyb (2)

Page 9: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 9

Contoh Gambar garis (0,1) – (5,7) dengan

menggunakan Line Equation

0 1 2 3 4 5 6 7 8

76543210

x1 = 0 y1 = 1x2 = 5 y2 = 7m = (7-1)/(5-0) = 1,2b = 1 – 1,2 * 0 = 1x y

0 1.2 * 0 + 1 = 1

1 1.2 * 1 + 1 = 2,2 ≈ 2

2 1.2 * 2 + 1 = 3,4 ≈ 3

3 1.2 * 3 + 1 = 4,6 ≈ 5

4 1.2 * 4 + 1 = 5,8 ≈ 6

5 1.2 * 5 + 1 = 7

Page 10: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 10

Gradien dan Tipe Garis

x1

y1

y2 tegak

m = tak terdefinisi

x1

y1

x2

mendatar

m = 0

x1y1

y2

x2

miring 45o

m = 1

x1y1

y2

x2

cenderung mendatar

0 < m < 1x1

y1

y2

x2

cenderung tegak

m > 1

Page 11: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 11

Tipe Garis

Dapatkah anda mencari perbedaan yang esensial antara garis A dan B (misal : gradien, pertambahan x dan y) ?

0 1 2 3 4 5 6 7 8 9

1

2

34

5

6

7

8

A

B

Page 12: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 12

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 ?

Page 13: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 13

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.

Page 14: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 14

Algorithma DDA

Untuk garis dengan 0 < m < 1, maka xi+1 = xi +1 dan :

Untuk garis dengan m > 1, maka yi+1 = yi + 1 dan :

myy ii 1(3)

mxx ii

11 (4)

Page 15: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 15

Algorithma DDA

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

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

myy ii 1 (5)

mxx ii

11

(6)

Page 16: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 16

Contoh Algorithma DDA Gambar garis dari (0;1) – (5;7) dengan

menggunakan DDA.x1=0,y1=1 x2=5,y2=7m = (7-1)/(5-0) = 1,201/m=1/1,20 = 0,83

x y

0 1

0+0,83 = 0,83 ≈ 1 2

0,83+0,83 = 1,66 ≈ 2 3

1,66+0,83 = 2,59 ≈ 3 4

2,59+0,83 = 3,42 ≈ 3 5

3,42+0,83 = 4,25 ≈ 4 6

4,25+0,83 = 5,08 ≈ 5 7

0 1 2 3 4 5 6 7 8

76543210

Page 17: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 17

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.

0 1 2 3 4

3210

actual line

Page 18: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 18

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)

Page 19: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 19

Algorithma Bresenham

d1=m – ½, karena d1< 0 atau negatif maka pixel berikutnya adalah pixel (xi+1, yi)

xi,yi Xi+1,yi

Xi+1,yi+1

Actual line

d1

Page 20: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 20

Algorithma Bresenham

d1=m – ½, karena d1> 0 atau positif maka pixel berikutnya adalah pixel (xi+1, yi+1)

xi,yi

Xi+1,yi

Xi+1,yi+1

d1

Actual line

Page 21: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 21

Algorithma Bresenham (0 < m < 1) dx = x2 – x1 ;dy = y2 – y1

d1 =2 * dy ; d2 =2 * (dx – dy)p = d1 – dxx = x1 ; y = y1

p >= 0p = p - d2y = y +1

p = p + d1y = y

x = x +1

x >= x2stop

YT

Y

Page 22: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 22

Gambar garis berikut ini dengan menggunakan algorithma Bresenham :(0;1) – (6;5)

(2;2) – (7;5)

(0;1) – (5;7)

Algorithma Bresenham

Page 23: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 23

0 1 2 3 4 5 6 7 8 9 10

876543210

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

Algorithma Bresenham

p x y

2 0 1

-2 1 2

6 2 2

2 3 3

-2 4 4

6 5 4

2 6 5

Page 24: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 24

Garis : (2;2) - (7;5)

0 1 2 3 4 5 6 7 8 9 10

876543210

Algorithma Bresenham

p x y

1 2 2

-3 3 3

3 4 3

-1 5 4

5 6 4

1 7 5

Page 25: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 25

Algorithma Bresenham

p x y

7 0 1

9 1 2

11 2 3

13 3 4

15 4 5

17 5 6

0 1 2 3 4 5 6 7 8 9 10

876543210

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

Page 26: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 26

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.

Page 27: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 27

Algorithma Bresenham ( m > 1) dx = x2 – x1 ; dy = y2 – y1

d1 =2 * dx ; d2 =2 * (dx – dy)p = d1 – dyx = x1 ; y = y1

p >= 0p = p + d2x = x +1

p = p + d1x = x

y = y +1

y >= y2stop

YT

Page 28: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 28

Algorithma Bresenham (m > 1)

p x y

4 0 1

2 1 2

0 2 3

-2 3 4

8 3 5

6 4 6

4 5 7

0 1 2 3 4 5 6 7 8 9 10

876543210

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

Page 29: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 29

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)

Page 30: ALGORITHMA GARIS

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 30

Atribut Garis

Atribut garis meliputi : Ketebalan garis

Pola garis

Warna garis