pertemuan 6 lines

30
ALGORITHMA GARIS Hieronimus Edhi Nugroho, M.Kom

Upload: anjani-chairunnisa

Post on 06-Dec-2015

234 views

Category:

Documents


0 download

DESCRIPTION

lkjljlkjljkl

TRANSCRIPT

Page 1: Pertemuan 6 Lines

ALGORITHMA GARIS

Hieronimus Edhi Nugroho, M.Kom

Page 2: Pertemuan 6 Lines

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 2

Algorithma Garis

Masalah : Pixel mana yang harus dipilih untuk menggambar

sebuah garis ?

Page 3: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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

Page 22: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

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: Pertemuan 6 Lines

H. Edhi Nugroho - Grafika Komputer - Algorithma Garis 30

Atribut Garis

Atribut garis meliputi : Ketebalan garis

Pola garis

Warna garis