Anda di halaman 1dari 13

TUGAS 1 GRAFIKA KOMPUTER

Oleh : I Gede Mika Winata (0908605007) Cover

PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS UDAYANA 2012

Algoritma DDA (Digital Differential Analizer) 1. Tentukan titik awal dan titik akhir
2. Hitung dx = x2 x1

dy = y2 y1 3. Menentukan cara dengan langkah berikut : Jika |dx| > |dy| , langkah dx Jika tidak, langkah dy
4. Xinc = dx dibagi (/) langkah yang ditentukan

Yinc = dy dibagi (/) langkah yang ditentukan


5. X = X1 , Y = Y1

X = X1 + Xinc Y = Y1 + Yinc
6. Ulangi langkah 4 dan 5 sampai X = X2 ; Y = Y2 dan hasilnya adalah bilangan bulat

(bukan desimal)

Algoritma Bressenham 1. Tentukan titik yang dihubungkan


2. Titik disebelah kiri sebagai titik awal (Xo, Yo) titik lainnya (X1 ,Y1)

3. dx , dy , 2dy , 2dy 2dx


4. Po = 2dy dx 5. Untuk setiap Xk sepanjang jalur K= 0

Jika Pk < 0 maka (Xk + 1 , Yk ) maka Pk + 1 = Pk + 2dy Jika tidak maka (Xk + 1 , Yk + 1)maka Pk + 1 = Pk + 2dy 2dx
6. Ulangi langkah ke 5 sampai X = X1 dan Y = Y1

Program yang saya pakai menggunakan visual basic 6.0 dimana pada saat compile tampilannya seperti dibawah.

Gambar 1 : tampilan program

Gambar2 : tampilan inputan, di contoh dimasukkan x awal = 2 , y awal = 1, x akhir = 6 dan y akhir = 8 maka DX = 4 dan DY = 8 lalu XINC = 0.5 dan YINC = 1

Gambar 3 : tampilan hasil DDA

Gambar 4 : tampilan hasil Brancheham

Gambar 5 : tampilan grafik hasil beserta tombol reset

Tampilan Kode Program pada visual basic : Private Sub Command1_Click() Dim x1, y1, x2, y2 As Double Dim xinc, yinc As Double Dim dx, dy As Double Dim tempA, tempB As Double

x1 = Text1.Text y1 = Text2.Text x2 = Text3.Text

y2 = Text4.Text

dx = x2 - x1 dy = y2 - y1

Label6.Caption = "DX= " & dx Label7.Caption = "DY= " & dy tempA = x1 tempB = y1

If (dx > dy) Then xinc = dx / dx yinc = dy / dx Label8.Caption = "XINC= " & xinc Label9.Caption = "YINC= " & yinc For i = 1 To dx List1.List(0) = x1 List2.List(0) = y1 tempA = tempA + xinc tempB = tempB + yinc List1.List(i) = Round(tempA) List2.List(i) = Round(tempB) Next i ElseIf (dx < dy) Then xinc = dx / dy

yinc = dy / dy Label8.Caption = "XINC= " & xinc Label9.Caption = "YINC= " & yinc

For i = 1 To dy List1.List(0) = x1 List2.List(0) = y1 tempA = tempA + xinc tempB = tempB + yinc List1.List(i) = Round(tempA) List2.List(i) = Round(tempB) Next i

Else Label10.Caption = "TIDAK VALID" End If

Picture1.Cls Picture1.Scale (-1, 20)-(20, -1) Picture1.Line (-1, 0)-(20, 0) 'sb X Picture1.Line (0, -1)-(0, 20) 'sb Y Picture1.Line (x1, y1)-(x2, y2)

End Sub

Private Sub Command2_Click() Dim x1, x2, y1, y2, dy, dx, langkah, i As Integer x1 = Text1.Text y1 = Text2.Text x2 = Text3.Text y2 = Text4.Text

dx = x2 - x1 dy = y2 - y1

Dim dy1, dy2, a, b, pk As Double Dim dyB, dxB As Integer

If x1 < x2 Then dyB = y2 - y1 dxB = x2 - x1 List4.List(0) = x1 List5.List(0) = y1

Else dyB = y1 - y2 dxB = x1 - x2 List4.List(0) = x2 List5.List(0) = y2 End If

If Abs(dx) > Abs(dy) Then langkah = Abs(dx) Else langkah = Abs(dy) End If

dy1 = 2 * dyB a = 2 * dyB - 2 * dxB b = 2 * dxB - 2 * dyB

If dxB = 0 Then m=0 Else m = dyB / dxB End If

If m < 1 Then dy2 = a Else dy2 = b End If

pk = dy1 - dx List3.List(0) = "~" List3.List(1) = " " & pk

For i = 2 To langkah If pk < 0 Then pk = pk + dy1 List3.List(i) = pk Else pk = pk + dy2 List3.List(i) = pk End If Next i

For i = 1 To langkah If Val(List3.List(i)) <= 0 Then List4.List(i) = 1 + List4.List(i - 1)

List5.List(i) = List5.List(i - 1) Else List4.List(i) = 1 + List4.List(i - 1) List5.List(i) = 1 + List5.List(i - 1) End If Next i

End Sub

Private Sub Command3_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" Text4.Text = "" List1.Clear List2.Clear List3.Clear List4.Clear List5.Clear Picture1.Cls

End Sub