pertemuan15 (1)
TRANSCRIPT
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
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.
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
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.
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.
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.
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.
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.
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
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
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
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
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)
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
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
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