pertemuan15 (1)

16
Grafika Komputer Pertemuan Ke-15 179 BAB-14 FRAKTAL Pada materi ini akan dibahas tentang fraktal By: I Gusti Ngurah Suryantara, S.Kom., M.Kom 14.1. PENDAHULUAN Fraktal adalah benda geometris yang kasar pada segala skala, dan terlihat dapat "dibagi- bagi" dengan cara yang radikal. Beberapa fraktal bisa dipecah menjadi beberapa bagian yang semuanya mirip dengan fraktal aslinya. Fraktal dikatakan memiliki detil yang tak hingga dan dapat memiliki struktur serupa diri pada tingkat perbesaran yang berbeda. Pada banyak kasus, sebuah fraktal bisa dihasilkan dengan cara mengulang suatu pola, biasanya dalam proses rekursif  atau iteratif . Bahasa Inggris dari fraktal adalah  fractal. Istilah fractal  dibuat oleh Benoît Mandelbrot pada tahun 1975 dari kata Latin  fractus yang artinya "patah", "rusak", atau "tidak teratur". Sebelum Mandelbrot memperkenalkan istilah tersebut, nama umum untuk struktur semacamnya (misalnya bunga salju Koch) adalah kurva monster. Berbagai jenis fraktal pada awalnya dipelajari sebagai benda-benda matematis. Geometri fraktal adalah cabang matematika yang mempelajari sifat-sifat dan perilaku fraktal. Fraktal bisa membantu menjelaskan banyak situasi yang sulit dideskripsikan menggunakan geometri klasik, dan sudah cukup banyak diaplikasikan dalam sains, teknologi, dan seni karya komputer. Dulu ide-ide konsepsual fraktal muncul saat definisi-definisi tradisional geometri Euclid dan kalkulus gagal melakukan berbagai pengukuran pada benda-benda monster tersebut. Gambar 14.1.  Fraktal mandelbrot  

Upload: aztinov-alva

Post on 03-Jun-2018

238 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 1/16

Grafika Komputer Pertemuan Ke-15 

179

BAB-14

FRAKTAL 

Pada materi ini akan dibahas tentang fraktal

By: I Gusti Ngurah Suryantara, S.Kom., M.Kom

14.1. PENDAHULUANFraktal adalah benda geometris yang kasar pada segala skala, dan terlihat dapat "dibagi-

bagi" dengan cara yang radikal. Beberapa fraktal bisa dipecah menjadi beberapa bagian

yang semuanya mirip dengan fraktal aslinya. Fraktal dikatakan memiliki detil yang tak

hingga dan dapat memiliki struktur serupa diri pada tingkat perbesaran yang berbeda.

Pada banyak kasus, sebuah fraktal bisa dihasilkan dengan cara mengulang suatu pola,

biasanya dalam proses rekursif  atau iteratif .

Bahasa Inggris dari fraktal adalah fractal. Istilah fractal  dibuat oleh Benoît Mandelbrot 

pada tahun 1975  dari kata Latin  fractus  yang artinya "patah", "rusak", atau "tidakteratur". Sebelum Mandelbrot memperkenalkan istilah tersebut, nama umum untuk

struktur semacamnya (misalnya bunga salju Koch) adalah kurva monster.

Berbagai jenis fraktal pada awalnya dipelajari sebagai benda-benda matematis.

Geometri fraktal adalah cabang matematika yang mempelajari sifat-sifat dan perilaku

fraktal. Fraktal bisa membantu menjelaskan banyak situasi yang sulit dideskripsikan

menggunakan geometri klasik, dan sudah cukup banyak diaplikasikan dalam sains,

teknologi, dan seni karya komputer. Dulu ide-ide konsepsual fraktal muncul saat

definisi-definisi tradisional geometri Euclid  dan kalkulus  gagal melakukan berbagai

pengukuran pada benda-benda monster tersebut.

Gambar 14.1. Fraktal mandelbrot  

Page 2: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 2/16

Grafika Komputer Pertemuan Ke-15 

180

Gambar 14.2. Segitiga sierpinski 

14.2.KONTRIBUSI DARI ANALISIS KLASIKBenda-benda yang sekarang disebut fraktal sudah ditemukan dan dipelajari jauh

sebelum kata fraktal muncul. Pada tahun 1872 Karl Theodor Wilhelm Weierstrass 

menemukan contoh fungsi dengan sifat yang tidak intuitif yaitu kontinyu di manapunnamun tidak terdiferensiasi  di manapun — grafik dari fungsi tersebut akan disebut

fraktal di masa sekarang.

Di tahun 1904 Helge von Koch, tidak puas dengan definisi Weierstraß  yang sangat

abstrak dan analitis, memberikan definisi yang lebih geometris untuk fungsi yang mirip,

yang sekarang disebut bunga salju Koch. Ide mengenai kurva-kurva serupa diri

dikembangkan lebih jauh oleh Paul Pierre Lévy, yang mengenalkan kurva fraktal baru

bernama kurva Lévy C  dalam tulisannya pada tahun 1938 berjudul Plane or Space

Curves and Surfaces Consisting of Parts Similar to the Whole.

Georg Cantor memberi contoh tentang berbagai himpunan bagian dari garis riil dengan

sifat yang tidak wajar — himpunan Cantor  tersebut juga sekarang dikenal sebagaifraktal. Fungsi teriterasi di bidang kompleks  telah diselidiki pada akhir abad 19 dan

awal abad 20 oleh Henri Poincaré, Felix Klein, Pierre Fatou, dan Gaston Julia. Namun

tanpa bantuan grafika komputer modern, mereka tidak dapat melihat keindahan visual

benda-benda yang mereka temukan.

Page 3: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 3/16

Grafika Komputer Pertemuan Ke-15 

181

Gambar 14.3. Fraktal bunga salju koch 

14.3. ASPEK dari DESKRIPSI HIMPUNAN Dalam usahanya untuk memahami benda-benda seperti himpunan Cantor,

matematikawan seperti Constantin Carathéodory dan Felix Hausdorff  menggeneralisasi

konsep intuitif dimensi  agar memungkinkan nilai nonbulat. Ini termasuk bagian darigerakan di pertengahan awal abad kedua puluh yang bertujuan menciptakan teori

himpunan deskriptif , yaitu kelanjutan dari arah riset Cantor yang dapat mengklasifikasi

himpunan titik-titik pada ruang Euclid. Definisi dimensi Hausdorff  secara alami adalah

geometris, walaupun didasarkan pada perkakas dari analisis matematis. Pendekatan ini

digunakan oleh beberapa orang termasuk Besicovitch, yang berbeda dengan investigasi

logis yang membangun sebagian besar teori himpunan deskriptif masa 1920-an dan

1930-an. Kedua bidang tersebut ditelusuri selama beberapa waktu setelahnya, terutama

oleh para spesialis.

15.4. KONTRIBUSI MANDELBROT 

Pada tahun 1960-an Benoît Mandelbrot  mulai menyelidiki keserupa dirian dalamberbagai tulisannya seperti How Long Is the Coast of Britain? Statistical Self-Similarity

and Fractional Dimension. Penyelidikannya merupakan pengembangan dari penelitian

Lewis Fry Richardson. Dengan pendekatan yang sangat visual, Mandelbrot

mendapatkan hubungan dari berbagai topik matematika yang sebelumnya tidak

berkaitan. Di tahun 1975, Mandelbrot menggunakan kata fractal untuk mendeskripsikan

benda-benda serupa diri yang tidak memiliki dimensi yang jelas. Dia menurunkan kata

 fractal dari kata Latin  fractus yang artinya "patah", "rusak", atau "tidak teratur". Kata

Page 4: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 4/16

Grafika Komputer Pertemuan Ke-15 

182

 fractal bukan diturunkan dari kata  fractional (pecahan), seperti yang dipercaya banyak

orang. Kata fractional sendiri juga diturunkan dari fractus.

Setelah visualisasi komputer diaplikasikan pada geometri fraktal, dapat disajikan

argumen-argumen visual nan ampuh untuk menunjukkan bahwa geometri fraktal

menghubungkan banyak bidang matematika dan sains, jauh lebih besar dan luas dari

yang sebelumnya diperkirakan. Bidang-bidang yang terhubungkan oleh geometri fraktal

terutama adalah dinamika nonlinier, teori chaos, dan kompleksitas. Salah satu contohadalah menggambar metode Newton sebagai fraktal yang ternyata menunjukkan bahwa

batas antara penyelesaian yang berbeda adalah fraktal dan penyelesaiannya sendiri

adalah atraktor aneh. Geometri fraktal juga telah digunakan untuk kompresi data  dan

memodel sistem geologis dan organis yang kompleks, seperti pertumbuhan pohon dan

perkembangan lembah sungai.

14.5. PENGELOMPOKAN Fraktal bisa dikelompokkan menjadi tiga kategori luas. Pengelompokan berikut

didasarkan pada cara pendefinisian atau pembuatannya.

•  Sistem fungsi teriterasi — Contohnya adalah himpunan Cantor, karpet Sierpinski,

kurva Peano, bunga salju Koch, kurva naga Harter-Heighway, Kotak T, dan spons

Menger.

•  Fraktal waktu lolos  — Contohnya adalah himpunan Mandelbrot  dan fraktal

Lyapunov.

•  Fraktal acak  — Dihasilkan melalui proses stokastik, misalnya landskap fraktal dan

penerbangan Lévy.

Fraktal juga bisa dikelompokkan berdasarkan keserupa dirinya. Ada tiga tingkat

keserupaan dirian pada fraktal:

•  Serupa diri secara persis — Ini adalah keserupa dirian yang paling kuat. Fraktalnya

terlihat sama persis pada berbagai skala. Fraktal yang didefinisikan oleh sistemfungsi teriterasi biasanya bersifat serupa diri secara persis.

•  Serupa diri secara lemah — Ini adalah keserupa dirian yang tidak terlalu ketat.

Fraktalnya terlihat mirip (tapi tidak persis sama) pada skala yang berbeda. Fraktal

 jenis ini memuat salinan dirinya sendiri dalam bentuk yang terdistorsi maupun

rusak.

•  Serupa diri secara statistik — Ini adalah kererupadirian yang paling lemah.

Fraktalnya memiliki ukuran numeris atau statistik yang terjaga pada skala yang

berbeda. Kebanyakan definisi fraktal yang wajar secara trivial mengharuskan suatu

bentuk keserupa dirian statistik. Dimensi fraktal sendiri adalah ukuran numeris yang

nilainya terjaga pada berbagai skala. Fraktal acak adalah contoh fraktal yang serupa

diri secara statistik, tapi tidak serupa diri secara persis maupun lemah.

Page 5: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 5/16

Grafika Komputer Pertemuan Ke-15 

183

Perlu dicatat bahwa tidak semua benda yang serupa diri adalah fraktal — misalnya garis

riil  (garis Euclid lurus) bersifat serupa diri, tapi argumen bahwa benda-benda Euclid

adalah fraktal merupakan minoritas. Mandelbrot berargumen bahwa definisi "fraktal"

sepatutnya menyertakan tidak hanya fraktal "sebenarnya", namun juga benda-benda

Euclid tradisional, karena bilangan irasional  di garis bilangan memiliki sifat-sifat

kompleks dan tidak berulang.

Karena fraktal memiliki detil yang tak terhingga, tidak ada benda alami yang

merupakan fraktal. Namun pada skala yang terbatas benda-benda alam bisa

menampakkan sifat-sifat fraktalnya.

14.6. DEFINISI Karakteristik fraktal, walaupun mudah dimengerti secara intuitif, ternyata sangat susah

untuk dibuat definisi matematisnya. Mandelbrot mendefinisikan fraktal sebagai

"himpunan yang dimensi Hausdorff Besicovitchnya  lebih besar dari dimensi

topologisnya". Untuk fraktal yang serupa diri secara persis, dimensi Hausdorffnya sama

dengan dimensi Minkowsi Bouligandnya.

Masalah-masalah yang dihadapi saat mendefinisikan fraktal termasuk:

1.  Tidak ada definisi matematis dari "terlalu tidak terartur".

2.  Tidak ada definisi tunggal mengenai "dimensi".

3.  Suatu benda dapat bersifat serupa diri dengan berbagai cara.

4.  Tidak setiap fraktal didefinisikan secara rekursif .

Contoh Pohon  dan pakis  adalah contoh fractal di alam dan dapat dimodel pada komputer

menggunakan algoritma rekursif . Sifat rekursifnya bisa dilihat dengan mudah — ambil

satu cabang dari suatu pohon dan akan terlihat bahwa cabang tersebut adalah miniaturdari pohonnya secara keseluruhan (tidak sama persis, tapi mirip).

Contoh yang relatif sederhana adalah himpunan Cantor, di mana selang terbuka yang

pendek dan semakin pendek tersebar pada selang dasar  [0, 1], menyisakan himpunan

yang mungkin serupa diri, dan mungkin memiliki dimensi d  yang memenuhi 0 < d  < 1.

Suatu resep sederhana, yaitu menghilangkan digit  7 dari ekspansi desimal,

menghasilkan himpunan Cantor yang serupa diri pada perbesaran lipat 10.

Secara umum fraktal bentuknya tidak teratur (tidak halus), jadi bukan termasuk benda

yang terdefinisikan oleh geometri  tradisional. Ini berarti bahwa fraktal cenderung

memiliki detil yang signifikan, terlihat dalam skala berapapun; saat ada keserupa dirian,

ini bisa terjadi karena memperbesar fraktal tersebut akan menunjukkan gambar yangmirip. Himpunan-himpunan tersebut biasanya didefinisikan dengan rekursi.

Page 6: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 6/16

Grafika Komputer Pertemuan Ke-15 

184

Sebagai perbandingan, ambil benda Euklid biasa, misalnya lingkaran. Lengkung pada

lingkaran akan terlihat semakin datar jika diperbesar. Pada perbesaran tak terhingga

tidak mungkin lagi terlihat perbedaan antara lengkung lingkaran dengan garis lurus.

Fraktal tidak seperti ini. Ide konvensional kurvatur, yang merupakan resiprokal dari jari-

 jari lingkaran aproksimasi, tidak bisa digunakan. Pada fraktal, meningkatkan perbesaran

akan menunjukkan detil yang tidak terlihat sebelumnya.

Beberapa contoh fraktal yang umum adalah himpunan Mandelbrot, fraktal Lyapunov,

himpunan Cantor, segitiga Sierpinski, karpet Sierpinski, spons Menger, kurva naga,

kurva Peano, dan kurva Koch. Fraktal bisa deterministik   maupun stokastik . Sistem

dinamikal chaotis sering (bahkan mungkin selalu) dihubungkan dengan fraktal.

Benda-benda yang mendekati fraktal bisa ditemukan dengan mudah di alam. Benda-

benda tesebut menunjukkan struktur frakral yang kompleks pada skala tertentu.

Contohnya adalah awan, gunung, jaringan sungai, dan sistem pembuluh darah. Harrison

(en)  [1]  meluaskan kalkulus Newtonian ke domain fraktal, termasuk teorema Gauss,

Green, dan Stokes 

Fraktal biasanya digambar oleh komputer dengan perangkat lunak fraktal. Lihat

daftarnya di bawah. Fraktal acak memiliki kegunaan praktis yang terbesar sebab dapat

digunakan untuk mendeskripsikan banyak benda di alam. Contohnya adalah awan,

gunung, turbulensi, garis pantai, dan pohon. Teknik-teknik fraktal juga telah digunakan

pada kompresi gambar fraktal dan berbagai disiplin sains.

Page 7: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 7/16

Grafika Komputer Pertemuan Ke-15 

185

14.7. KURVA FRAKTAL Kurva yang kompleks dapat dibuat secara rekursif dengan cara berulang-ulang

penghalusan kurva. Gambar berikut menunjukkan kurva Koch. Ide dasar dari kurva ini

adalah bagilah masing-masing segmen Kn ke dalam tiga bagian yang sama besar, dan

gantikan bagian tengah dengan jendul dalam bentuk segitiga sama sisi. 

Page 8: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 8/16

Grafika Komputer Pertemuan Ke-15 

186

14.8. KURVA LINDENMAYER (Sistem L) Contoh pada gambar berikut menunjukkan telah menggunakan teori penghasil string

dan dibangkitkan dari Sistem L. Sistem ini merupakan cara yang berguna untuk

penggambaran semua urutan pohon.

Sebuah sistem-L bekerja dengan urutan string yang masing-masing simbol dalam urutan

instruksi yang diberikan.

‘F’ berarti maju selangkah

‘+’ berarti belok kanan dengan sudut x drajat.

‘-’ berarti x diset dan ditentukan sebelumnya.

Misalnya string F+F-F berati maju selangkah, belok kanan, maju selangkah, belok kiridan maju selangkah.

Jika kita lanjutkan sistem L dengan pembuatan aturan penghasilan string maka hasilnya

dapat berbeda dan menarik.

Page 9: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 9/16

Grafika Komputer Pertemuan Ke-15 

187

14.9. SET MANDELBROT Kemungkinan besar, yang paling terkenal dan pengenalan fraktal adalah set Mandelbrot.

Baik set Mandelbrot ataupun Set Julia menguji hasil iterasi tak hingga dari sebuah

fungsi. Grafika komputer menyediakan cara yang terbaik untuk mengilustrasikan

hasilnya dalam cara yang menarik dan secara grafik/ cara alami dari fraktal ini akan

diuji secara visual dan cara yang lebih mudah daripada menggunakan banyak angka.

  Set Mandelbrot menggunakan: f(z) = z2 + c

  dengan c merupakan konstanta tertentu

  Sistem menghasilkan masing-masing “output” dengan mengkuadratkan “input”

dan menambahkan dengan c.

  ORBIT input menentukan bagaimana nilai digambarkan.

  Orbit adalah set nilai “output” sebagai fungsi yang diiterasi.

  Contoh” f(z) = z2 + 2 dengan z mulai dengan 0 maka urutan output adalah:

2, 6, 38, 1446, 2090918, …

  Orbit dikatakan menjadi tak terhingga sebagaimana nilainya didekati dengan tak

terhingga (dikenal dengan orbit tak terhingga).

  Orbit tak berhingga adalah satu dengan nilai diset dengan nilai sekitar satu.

  Contoh: f(z) = z2 – 1 dengan z mulai = 0 urutan output adalah:

0, -1, 0, -1, 0, -1.

  Nilai-nilai ini tak pernah berakhir dan perlu dibatasi !

  Definisi: Set Mandelbrot, M, adalah set semua bilangan kompleks, c, yang

menghasilkan orbit terhingga dari nilai permulaan z = 0.

  Ini berarti bahwa dengan nilai permulaan 0, yang dengan nilai c (menggunakan

bilangan kompleks) menghasilkan urutan output terhingga.

  Mungkin nilai-nilainya:

0,c,c2+c,(c2+c)+c,…

  Dengan c = x+yi

Page 10: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 10/16

Grafika Komputer Pertemuan Ke-15 

188

14.10. MATERI LAB14.10.1.Program fraktal segitiga spriesky

Tambahkan sebuah form, dan beri nama formnya frmSierpinski.

.Gambar 14.4. Tampilan segitiga sierpinski 

Program'Nama Program: Fraktal Sierpinski

Option Explicit

Private LastX As Single

Private LastY As Single

Private CornerX(0 To 2) As Single

Private CornerY(0 To 2) As Single

' Draw the Sierpinski gasket.

Private Sub Form_Load()Dim i As Integer

Randomize

Me.Show

Do

' Pick the next corner.

i = Int(Rnd * 3)

' Move halfway from the current point

' to the new corner.

LastX = (LastX + CornerX(i)) / 2

LastY = (LastY + CornerY(i)) / 2

Me.PSet (LastX, LastY)

' Check for events.

DoEvents

Loop

End Sub

' Define the corner points.

Private Sub Form_Resize()

Const R As Single = 60

Dim i As Integer

' Clear.

Me.Cls

Page 11: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 11/16

Grafika Komputer Pertemuan Ke-15 

189

' Define the corners.

CornerX(0) = R + 10

CornerY(0) = Me.ScaleHeight - R - 10

CornerX(1) = Me.ScaleWidth / 2

CornerY(1) = R + 10

CornerX(2) = Me.ScaleWidth - R - 10

CornerY(2) = Me.ScaleHeight - R - 10

' Draw the corners.

For i = 0 To 2

Me.Circle (CornerX(i), CornerY(i)), R

Next i

' Pick a starting point.

i = Int(Rnd * 3)

LastX = CornerX(i)

LastY = CornerY(i)

End Sub

Private Sub Form_Unload(Cancel As Integer)

End

End Sub

14.10.2.Program fraktal MidelBort

Tambahkan sebuah form, dan beri nama formnya frmMidelBort

Gambar 15.2. Fraktal MidelBort  

Setting property

Nama objek Property SettingForm1 Name

Caption

Form1

frmMidelBort

PictuteBox1 Name Picture1

PictureBox2 Name Picture2

Button1 Name

Caption

Command1

Refresh

Button2 Name

Caption

Command2

Stop

Page 12: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 12/16

Grafika Komputer Pertemuan Ke-15 

190

ProgramBuat program ini di moduleType complex

real As Double

i As Double

End Type

Dim scheme As IntegerDim drawing As Integer

Dim stop_draw As Integer

Function init()

stop_draw = 0

End Function

Function stop_drawing()

stop_draw = 1

End Function

Function set_scheme(x As Integer)

scheme = x

End Function

Function add(x1 As complex, x2 As complex) As complex

Dim temp As complex

Dim a1 As Double

Dim a2 As Double

Dim b1 As Double

Dim b2 As Double

a1 = x1.real

b1 = x1.i

a2 = x2.real

b2 = x2.i

temp.real = a1 + a2

temp.i = b1 + b2

add = temp

End Function

Function mul(x1 As complex, x2 As complex) As complex

Dim temp As complex

Dim a1 As Double

Dim a2 As Double

Dim b1 As Double

Dim b2 As Double

a1 = x1.real

b1 = x1.i

a2 = x2.real

b2 = x2.i

temp.real = a1 * a2 - b1 * b2

temp.i = a1 * b2 + a2 * b1

mul = temp

End Function

Page 13: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 13/16

Grafika Komputer Pertemuan Ke-15 

191

Function dist(x As Double, Y As Double) As Double

dist = Sqr(((x - 0) ^ 2) + ((Y - 0) ^ 2))

End Function

Function is_in_Mset(c As complex, n As Integer) As Integer

Dim Z As complex

Dim tZ As complex

Z.real = 0

Z.i = 0

tZ.real = 0

tZ.i = 0

For i = 1 To n

tZ = add(mul(Z, Z), c)

Z = tZ

If dist(Z.real, Z.i) >= 2 Then

is_in_Mset = i

GoTo done

End If

Next i

is_in_Mset = 0

done:

End Function

Function draw(pic As PictureBox, x1 As Double, y1 As Double, x2 As

Double, y2 As Double, detail As Integer)

init

Dim t As complex

Dim x As Double

Dim Y As Double

Dim c As Integer

Dim scaleY As Double

Dim scaleX As Double

frmMidelBort.Command1.Enabled = False

scaleX = (x2 - x1) / pic.Width

scaleY = (y2 - y1) / pic.Height

drawing = 1

pic.Cls

pic.DrawWidth = 1

det = 1

frmMidelBort.Picture2.Cls

frmMidelBort.Picture2.Print "Rendering - Detail grade "; det

For i = 0 To pic.Width Step detFor j = 0 To pic.Height Step det

x = x1 + (i * scaleX)

Y = y1 + (j * scaleY)

t.real = x

t.i = Y

c = is_in_Mset(t, 100)

Page 14: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 14/16

Grafika Komputer Pertemuan Ke-15 

192

If stop_draw = 1 Then GoTo zip_it

pic.Line (i + det, 0)-(i + det, pic.Height), QBColor(15)

If scheme = 1 Then pic.Line (i, j)-(i + det, j + det),

QBColor(c Mod 16), BF

If scheme = 2 Then pic.Line (i, j)-(i + det, j + det),

RGB((c Mod 50) * 10, (c Mod 100) * 20, (c Mod 200) *

12), BF

If scheme = 3 Then pic.Line (i, j)-(i + det, j + det),RGB((c Mod 60) * 10, (c Mod 100) * 20, (c Mod 200) *

200), BF

If scheme = 4 Then pic.Line (i, j)-(i + det, j + det),

RGB((c Mod 60) * 250, (c Mod 100) * 50, (c Mod 200) *

20), BF

If scheme = 5 Then pic.Line (i, j)-(i + det, j + det),

RGB((c Mod 10) * 250, (c Mod 6) * 70, (c Mod 20) * 20),

BF

Next j

If stop_draw = 1 Then GoTo zip_it

DoEvents

Next i

drawing = 0

zip_it:

frmMidelBort.Command1.Enabled = True

frmMidelBort.Picture2.Cls

frmMidelBort.Picture2.Print "Drag mouse untuk area yang akan di ZOOM"

End Function

Buat program ini di formDim x1 As Double

Dim x2 As Double

Dim y1 As Double

Dim y2 As Double

Dim tx1 As Double

Dim tx2 As Double

Dim ty1 As DoubleDim ty2 As Double

Dim down As Integer

Dim sY As Double

Dim sX As Double

Private Sub Command1_Click()

sX = (x2 - x1) / Picture1.Width

sY = (y2 - y1) / Picture1.Height

draw Picture1, x1, y1, x2, y2, 100

End Sub

Private Sub Command2_Click()

stop_drawing

End Sub

Private Sub Form_Activate()

'sX = (x2 - x1) / Picture1.Width

'sY = (y2 - y1) / Picture1.Height

'draw Picture1, x1, y1, x2, y2, 100

set_scheme 5

draw_it

End Sub

Page 15: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 15/16

Grafika Komputer Pertemuan Ke-15 

193

Private Sub Form_Load()

x1 = -2

y1 = -1.5

x2 = 1

y2 = 1.5

down = 0

drawing = 0

initEnd Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

End

End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x

As Single, Y As Single)

If drawing = 0 Then

Picture1.DrawMode = 6

Picture1.DrawWidth = 3

'Picture1.Line (tx1, ty1)-(tx2, ty2), 1, B

down = 1

tx1 = x

ty1 = Y

tx2 = x

ty2 = Y

End If

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, x

As Single, Y As Single)

If down = 1 Then

frmMidelBort.Cls

frmMidelBort.Print tx1, ty1, tx2, ty2

Picture1.Line (tx1, ty1)-(tx2, ty2), 1, B

tx2 = x

ty2 = ty1 + ((tx2 - tx1) * (Picture1.Height / Picture1.Width))

'ty2 = YPicture1.Line (tx1, ty1)-(tx2, ty2), 1, B

End If

End Sub

Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, x As

Single, Y As Single)

down = 0

Picture1.DrawMode = 13

x2 = tx2 * sX + x1

y2 = ty2 * sY + y1

x1 = tx1 * sX + x1

y1 = ty1 * sY + y1

'sX = (x2 - x1) / Picture1.Width

'sY = (y2 - y1) / Picture1.Height

'draw Picture1, x1, y1, x2, y2, 100

draw_it

End Sub

Page 16: Pertemuan15 (1)

8/12/2019 Pertemuan15 (1)

http://slidepdf.com/reader/full/pertemuan15-1 16/16

Grafika Komputer Pertemuan Ke-15 

194

Function draw_it()

sX = (x2 - x1) / Picture1.Width

sY = (y2 - y1) / Picture1.Height

draw Picture1, x1, y1, x2, y2, 100

End Function