7 BAB 2 LANDASAN TEORI
2.1
Fraktal
2.1.1
Definisi Fraktal Terdapat beberapa definisi fraktal yang dicetuskan oleh beberapa orang yang
berbeda, beberapa diantaranya adalah : 1. Gambar yang dibangkitkan oleh komputer berdasarkan perulangan dalam fungsi matematika, dengan cara mengulang pola yang sama dengan dirinya sendiri secara terus – menerus. (Anonim, www.levity.com/mavericks/glossary.htm) 2. Fraktal adalah sebuah pola di dalam pola, di dalam pola. (Anonim, http://www.enchantedlearning.com/dictionarysubjects/shapes.shtml) 3. Sebuah obyek yang mempunyai ‘dimensi fraktal’; yaitu sesuatu yang mempunyai variasi yang sama dengan dirinya sendiri dalam berbagai skala, sehingga detail maksimal tidak akan pernah dapat dicapai dengan meningkatkan skala. (Hans Zuurins, www.forestry.umt.edu/academics/courses/for503/stats_glossary.htm )
2.1.2
Sejarah Fraktal Seperti pembentukan kehidupan, cabang baru dari matematika dan sains tidak
muncul begitu saja. Ide dari geometri fraktal dapat dilacak hingga akhir abad ke – 19,
8 saat matematikawan menciptakan bentuk – kumpulan dari titik – yang kelihatannya melawan alam. Dengan sangat kebetulan, matematika abstrak yang diturunkan dari konsepsi awal saat itu, menjadi lebih baik daripada yang lainnya untuk menjelaskan banyak bentuk natural dan proses. Pada abad ke-17, Newton dan Leibniz menciptakan kalkulus, dengan kemampuannya untuk menemukan turunan dari sebuah fungsi – dalam istilah geometri, menemukan tangen dari sebuah kurva di titik manapun. Benar bahwa beberapa fungsi memang diskontinu, tanpa nilai tangen pada suatu celah atau sebuah titik yang terisolasi. Beberapa memiliki singulariti, sebuah perubahan arah dimana makna dari tangen menjadi tidak bermakna. Namun, hal ini dipandang sebagai suatu perkecualian, dan perhatian terfokus pada fungsi-fungsi ‘sempurna’ yang berjalan baik pada pemodelan standar. Mulai pada awal 1870-an, terjadi 50 tahun transformasi pemikiran matematika. Weierstrass menjelaskan fungsi yang bersifat kontinu, namun tidak terdiferensiasi (tidak ada nilai tangen yang dapat dihasilkan pada setiap titik). Cantor menunjukkan bagaimana sebuah prosedur sederhana dan berulang dapat menjadi sebuah garis, kemudian menjadi sebaran titik. Kemudian Peano menghasilkan kurva konvulasi yang menyentuh setiap titik dari bidang datar. Bentuk-bentuk ini jatuh diantara garis 1 dimensi, bidang 2 dimensi dan bangun 3 dimensi. Kebanyakan orang masih melihat hal itu sebagai kasus yang ‘patologis’, namun dimana-mana mereka mulai menemukan aplikasinya Di cabang lain matematika, bentuk-bentuk tidak wajar juga mulai bermunculan. Poincare berhasil menganalisa kestabilan dari tata surya tahun 1880 dan menemukan bahwa masalah dinamik berlawanan dengan metode tradisional. Dia menciptakan
9 pendekatan kualitatif, sebuah ‘pernyataan angkasa’ di mana setiap titik mewakili orbit planet yang berbeda., dan mempelajari hal yang sekarang ini disebut sebagai topologi semua benda angkasa. Pendekatan ini mengungkapkan banyak pergerakan awal yang dapat diselesaikan dengan kurva-kurva, ada juga orbital tidak beraturan yang tidak pernah menjadi periodik dan dapat diduga. Peneliti lain mencoba untuk memahami fluktuasi, fenomena ‘ke-tidakberaturan’ (banjir pada sungai Nil, urutan harga pada bidang ekonomi, gerak brown pada molekul benda cair). Mereka berhasil menemukan bahwa model tradisional tidak lagi dapat dicocokkan dengan data. Mereka harus memperkenalkan fitur skala berdasarkan pilihan (arbitrary), dengan menggunakan model paku yang semakin jarang bila paku tersebut semakin besar, tapi tidak dapat hilang sama sekali. Selama bertahun-tahun, perkembangan ini tampaknya tidak saling berhubungan, tapi terdapat petunjuk mengenai kesamaan penelitian. Sama seperti gerakan orbital yang tidak beratur, graph urutan waktu yang tak beraturan terkadang mempunyai kemiripan sifat: suatu bagian gambar skala kecil yang diperbesar nampak sangat mirip dengan skala besarnya. (Bert Tyler, http://www.goshen.edu/~kevin/fractint/history.html)
2.1.3
Jenis – Jenis Fraktal Terdapat banyak sekali tipe dari fraktal, namun pada dasarnya fraktal dapat
digolongkan ke dalam 6 kelompok besar : 1. Fraktal yang diturunkan dari geometri standar menggunakan transformasi iterasi pada bentuk-bentuk standar seperti garis lurus (the Cantor dust or the von Koch curve), segitiga (the Sierpinski triangle), atau kubus (the Menger sponge).
10 Bentuk fraktal pertama yang diciptakan di akhir abad 19 dan 20 merupakan bagian dari kelompok ini. 2. IFS (Iterated Function Sistems). Jenis fraktal ini diperkenalkan oleh Michael Barnsley. Struktur dari fraktal ini ditentukan oleh satu set dari fungsi linear yang transformasinya terjadi berdasarkan keseragaman, translasi, dan rotasi. Fungsi yang dimasukkan ke dalam sistem dipilih secara acak, tapi set akhir/ final adalah pasti dan memperlihatkan struktur fraktal. 3. Strange Attractors. Bentuk ini dapat dikatakan adalah representasi dari pergerakan chaos/ acak. Bentuk ini sangat kompleks dan dibentuk dari garis yang memiliki panjang yang tidak terbatas, digambarkan dengan perulangan terus-menerus, tanpa pernah bersilangan. 4. Plasma fractals. Dibentuk dengan teknik gerak Brown (Brownian motion) atau algoritma titik tengah (midpoint). Fraktal jenis ini menghasilkan tekstur indah dengan sktruktur fraktal seperti awan, api, batu, kayu, dan lain-lain. Banyak digunakan pada program CAD. Seniman fraktal yang sudah ahli sangat menyukai plasma untuk membuat tekstur atau latar dari gambar mereka. 5. L-Sistems. Juga disebut sebagai sistem Lindenmayer, tidak diciptakan untuk membentuk fraktal, tapi untuk memodelkan pertumbuhan dan interaksi. L-Sistem adalah grammar formal yang secara berulang-ulang melakukan aturan-aturan (rules) menjadi sebuah set. Sebagai hasilnya, kadang-kadang dihasilkan suatu struktur fraktal. 6. Gambar fraktal yang diciptakan dengan iterasi dari fungsi polinomial. Mungkin adalah jenis fraktal yang paling terkenal (Julia dan Mandelbrot). Hanya jenis
11 inilah yang sudah sangat luas diteliti dan dikembangkan dengan berbagai algoritma pewarnaan. Banyak jenis fraktal yang diperhitungkan sebagai bagian dari kelompok fraktal diatas, contohnya fractal terrains, adalah bentuk representasi 3 dimensi dari Plasma Fractal. Music Fractal, adalah suara yang direpresentasikan oleh pergerakan acak. Fraktal jenis lain, antara lain quarternionic atau hyperhionic dapat digolongkan sebagai ekstensi dari dimensi yang lebih tinggi dari polynomial fractal diiterasikan pada bentuk kompleks. (http://www.mi.sanu.ac.yu/vismath)
2.2
Metode Newton Raphson
2.2.1
Sejarah Metode Newton Raphson Metode Newton Raphson dijelaskan oleh Isaac Newton dalam De analysi per
aequationes numero terminorum infinitas (ditulis tahun 1669, diterbitkan tahun 1711 oleh William Jones) dan dalam De metodis fluxionum et serierum infinitarum (ditulis tahun 1671, diterjemahkan dan diterbitkan sebagai Method of Fluxions tahun 1736 oleh John Colson). Namun, pengertiannya saat itu berbeda dari pengertian modern. Newton menggunakan metode tersebut hanya untuk fungsi polinomial. Dia tidak menghitung perkiraan dari xn, tapi menghitung barisan dari polinomial dan hanya pada akhirnya, tiba pada perkiraan untuk akar x. Pada akhirnya, Newton melihat metode ini sebagai metode aljabar murni dan gagal untuk melihat hubungannya dengan kalkulus. Isaac Newton kemungkinan menurunkan metode buatannya tersebut dari metode serupa, namun mempunyai ketepatan lebih buruk yang dicetuskan oleh François Viète. Metode Newton pertama kali diterbitkan tahun 1685 pada A Treatise of Algebra both Historical and Practical oleh John Wallis. Tahun 1690, Joseph Raphson
12 menerbitkan deskripsi yang sudah disederhanakan dalam Analysis aequationum universalis. Sekali lagi Raphson melihat metode Newton murni sebagai metode aljabar dan membatasi kegunaannya pada fungsi polinomial, namun dia memperkenalkan metode perkiraan suksesif xn daripada barisan polinomial yang lebih rumit yang digunakan oleh Newton.
2.2.2
Sir Isaac Newton
Gambar 2.1 Sir Isaac Newton Isaac Newton dilahirkan di Lincolnshire, dekat Grantham, pada tanggal 25 Desember 1642, dan meninggal di Kensington, London, pada tanggal 20 Maret 1727. Dia berkuliah di Trinity College, Cambridge, dan tinggal disana dari tahun 1661 hingga tahun 1696, dimana dia menghasilkan banyak sekali penelitiannya di bidang matematika. Tahun 1969 dia mendapat kantor pemerintah yang megah, dan kemudian pindah ke London, di mana dia tinggal hingga akhir hayatnya. Ayahnya, yang meninggal tidak lama sebelum Newton lahir, adalah seorang petani. Dia berpikir bahwa Newton seharusnya mewarisi sawah ayahnya. Newton
13 dikirim ke sekolah di Grantham, dimana pelajarannya dan profisiensi mekanik mendapat perhatian. Tahun 1656 dia pulang ke rumahnya untuk mempelajari bisnis persawahan, namun sebaliknya dia menghabiskan banyak waktunya menyelesaikan permasalahan maupun membuat eksperimen. Pamannya yang pernah berkuliah di Trinity College, Cambridge, menyarankan bahwa sebaiknya Newton dikirim kesana. (J J O'Connor, www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Newton.html)
2.2.3
Joseph Raphson Kehidupan dari Joseph Raphson (1648-1715) diselimuti oleh misteri dan sulit
untuk diikuti. Joseph Raphson dilahirkan di Middlesex, Inggris tahun 1648, diketahui dari beberapa sumber bahwa Joseph Raphson berkuliah di Jesus College Cambridge dan lulus dengan gelar Master of Arts tahun 1692. Dengan usia yang sudah lebih tua (43 tahun), secara mengejutkan Raphson menjadi anggota Royal Society tahun 1691, setahun sebelum kelulusannya. Kehormatan ini adalah dampak langsung dari bukunya yang diterbitkan tahun 1690, berjudul Analysis aequationum universalis. Buku ini berfokus terutama pada metode Newton untuk memperkirakan akar dari persamaan, yang kemudian bernama metode Newton-Raphson. Sebenarnya, metode Newton mengenai fluks menjelaskan metode yang sama dan contoh-contoh untuk memperkirakan akar persamaan, walaupun metode tersebut ditulis tahun 1671, namun tidak pernah diterbitkan sampai 1736, maka Joseph Raphson menerbitkan materi ini dan metodenya 50 tahun sebelum Newton. Meskipun hubungan antara Newton dan Raphson tidak begitu jelas, namun diketahui bahwa Raphson diperbolehkan oleh Newton, untuk melihat dan mempelajari tulisannya secara berkala. Pada kenyataannya, Raphson dan Edmund Halley terlibat
14 bersama Newton dalam publikasi hasil kerja Newton di awal tahun 1670 mengenai kurva kuadratur, fluks, dan sejenis matematika yang sekarang dikenal sebagai kalkulus, namun mereka belum dapat melakukannya hingga tahun 1704. Publikasi hasil kerja Newton tersebut memberkan penjelasan secara detail mengenai metode fluks. Raphson juga diijinkan untuk melihat penelitian matematika Newton pada tahun 1711, melalui Roger Cotes dan William Jones. Sebagai hasilnya, Raphson menulis A History of Fluxions, yang terbit setahun setelah kematiannya. Tulisan ini menjadi dukungan kuat bagi Newton melawan Leibniz yang mengklaim dirinya sebagai penemu kalkulus.
2.2.4
Cara Kerja Newton Rapshon Metode Newton Raphson, adalah suatu algoritma untuk menentukan akar
persamaan, yang menggunakan sebagian dari ketentuan pertama dari deret Taylor. Dalam Metode Numerik, Metode Newton Raphson adalah algoritma yang cukup efisien untuk menentukan perkiraan akar dari fungsi real. Selain itu, metode Newton Raphson juga dapat digunakan untuk menentukan nilai maksimum dan minimum dari sebuah fungsi, dengan cara menentukan nilai nol dari derivasi pertama. Anggap f : [a, b] → R adalah dapat fungsi yang dapat diturunkan dan berada
dalam interval [a, b] dengan akar adalah bilangan real dalam R. Kemudian dimulai dengan menentukan nilai x0 (dengan nilai f(x0) lebih dekat dengan 0 lebih baik) dan kemudian tentukan untuk setiap angka natural n.
x n +1 = x n −
f ( xn ) f ' ( xn )
15 Iterasi terus dilakukan hingga mencapai nilai yang dimaksud, dengan maksimum error yang juga telah ditetapkan.
Gambar 2.2 Ilustrasi Metode Newton Raphson
Gambar di atas adalah ilustrasi dari metode Newton Raphson. Langkah langkah untuk mendapatkan nilai nol x pada fungsi f(x) adalah sebagai berikut :
1. Dari titik awal x0, tarik garis sepanjang sumbu y sehingga didapat perpotongan dengan garis f(x) di titik a1. 2. Tarik garis yang memotong a1 dan mengiris garis f(x), sehingga memotong sumbu x di x1.
16 3. Dari x1, tarik garis sepanjang sumbu y sehingga didapat perpotongan dengan garis f(x) di titik a2. 4. Lakukan proses di atas secara iteratif sehingga didapat nilai nol x pada fungsi f(x). Contoh masalah : Tentukan nilai positif untuk x dengan cos(x) = x3. Kita dapat mengubah permasalahan tersebut menjadi : Tentukan nilai nol untuk f(x) = cos(x) – x3. Dari situ didapatkan f’(x) = -sin(x) – 3x2, Karena cos( x) ≤ 1 untuk semua x dan x3 > 1 untuk x > 1, kita dapat mengetahui bahwa nilai f(x) = 0 berkisar antara x = 0 dan x = 1. Proses akan dimulai dengan x0 = 0.5
x1 = x0 −
f ( x0 ) cos(0.5) 3 = 0 . 5 − = 1.112141637097 f 1 ( x0 ) − sin(0.5) − 3 × 0.5 2
x 2 = x1 −
f ( x1 ) = f 1 ( x1 )
M
= 0.909672693736
x3 =
M
=
M
= 0.867263818209
x4 =
M
=
M
= 0.865477135298
x5 =
M
=
M
= 0.865474033111
x6 =
M
=
M
= 0.865474033102
Nilai atau akar yang sebenarnya adalah nilai yang digarisbawahi. Semua digit pada x6 adalah tepat. Dapat dilihat bahwa jumlah desimal dari digit yang benar
17 meningkat dari 2 (untuk x3) menuju 5 dan 10. Hal itu dapat menunjukkan konvergensi kuadratik pada metode Newton Raphson. Untuk lebih memperjelas, persamaan di atas dapat digambarkan sebagai berikut
Gambar 2.3 Grafik Metode Newton Rapshon untuk f(x) = cos(x) – x3
2.2.5 Algoritma Newton Raphson
Metode Newton Raphson berasal dari Metode Taylor :
f ( x0 + ε ) = f ( x0 ) + f ' ( x0 )ε + 12 f ' ' ( x0 )ε 2 + ...
(1)
18 Karena ε 2 dianggap sudah sangat kecil dan tidak dignifikan, maka Newton hanya mengambil 2 suku pertama dari deret Taylor tersebut, sehingga didapat : f ( x0 + ε ) = f ( x0 ) + f ' ( x0 )ε
(2)
Ekspresi ini dapat digunakan untuk memperkirakan angka dari offset ε yang dibutuhkan agar mendekati akar sebenarnya, diawali dengan perkiraan awal x0 . Dengan menentukan nilai f ( x0 + ε ) = 0 dan menyelesaikan persamaan (2) untuk
ε ≡ ε 0 akan didapatkan : ε0 = −
f ( x0 ) , f ' ( x0 )
(3)
yang merupakan bagian pertama untuk mendapatkan akar persamaan. Dengan menentukan x1 = x0 + ε 0 , menghitung nilai baru ε 1 , dan seterusnya, proses tersebut dapat terus diulang sehingga membentuk suatu konvergensi ke arah satu nilai, menggunakan :
εn = −
f ( xn ) f ' ( xn )
(4)
Sayangnya, prosedur ini dapat menjadi tidak stabil saat mendekati asimptot horisontal atau nilai ekstrim lokal. Namun, dengan inisialisasi awal dari posisi akar, algoritma ini dapat diaplikasikan iteratif untuk mendapatkan : x n +1 = x n −
f ( xn ) f ' ( xn )
(5)
Untuk n = 1, 2, 3,... . Inisialisasi x0 yang menghasilkan nilai konvergensi yang aman untuk metode Newton tersebut disebut sebagai approximate zero (perkiraan nol).
19 Iterasi / perulangan dilakukan terus menerus sampai nilai x memenuhi persamaan f(x) atau nilai error sudah berada di bawah error yang sudah ditentukan sebelumnya. Nilai error ε n +1 setelah iterasi ke n + 1 ditentukan dengan :
ε n +1
=
ε n + ( x n +1 − x n )
=
εn −
f ( xn ) f ' ( xn )
(6)
Diketahui bahwa: f ( xn )
f ' ( xn )
=
f ( x n −1 ) + f ' ( x n −1 )ε n + 12 f ' ' ( x n −1 )ε n 2 + ...
=
f ' ( x n −1 )ε n +
=
f ' ( x n −1 ) + f ' ' ( x n −1 )ε n + ...
=
f ' ( x n −1 )ε n + 12 f ' ' ( x n −1 )ε n 2 + ... f ' ( x n −1 ) + f ' ' ( x n −1 )ε n + ...
≈
f ' ( x n −1 )ε n + 12 f ' ' ( x n −1 )ε n 2 f ' ( x n −1 )
1 2
f ' ' ( x n −1 )ε n 2 + ...
(7) (8)
Kemudian: f ( xn ) f ' ( xn )
=
εn +
f ' ' ( x n −1 ) 2 εn 2 f ' ( x n −1 )
(9)
Sehingga menjadi:
ε n +1
⎡
=
ε n − ⎢ε n +
=
−
⎣
f ' ' ( x n −1 ) 2 ⎤ εn ⎥ 2 f ' ( x n −1 ) ⎦
f ' ' ( x n −1 ) 2 εn 2 f ' ( x n −1 )
(10)
20 2.2.6
Flowchart Metode Newton Raphson
Persamaan-persamaan tersebut dapat dibentuk menjadi suatu diagram alir (flow chart) sebagai berikut :
Gambar 2.4 Flowchart Metode Newton Raphson
2.3
Metode Pewarnaan Fraktal
Setiap sistem dinamik menghasilkan barisan nilai z0, z1, z2, …, zn. Gambar fraktal dibangkitkan dengan cara menuangkan barisan tersebut ke dalam piksel-piksel gambar. Algoritma pewarnaan adalah suatu susunan yang menentukan warna yang digunakan pada tiap barisan. Biasanya, algoritma pewarnaan menghasilkan satu nilai pada tiap piksel. Karena warna adalah suatu obyek tiga dimensi, maka terlebih dahulu harus mengembangkan
21 piksel yang berbentuk satu dimensi. Metode yang paling sering ditemui adalah membuat suatu palet, sebuah barisan dari warna 3 dimensi. Hal ini terus bersambung terus dan nilai dari hasil algoritma pewarnaan tersebut kemudian digunakan sebagai posisi sepanjang garis multi-segmen (gradien). Jika palet terakhir terhubung dengan yang pertama, maka suatu perulangan bersegmen yang tertutup akan terbentuk, dan berbagai nilai real dari algoritma tersebut dapat dipetakan intuk menentukan warna di dalam suatu gradien. Gradien biasanya diinterpolasikan dalam RGB (Red, Green, Blue), tapi dapat juga diinterpolasikan dalam HSL (Hue, Saturation, Lightness) dan diinterpolasikan dalam kurva, disamping segmen garis lurus. Pemilihan dari gradient adalah bagian yang paling menentukan sisi artistik dalam membuat gambar fraktal yang indah. Pemilihan warna dapat menekankan satu bagian dari gambar, sementara bagian lain menjadi kurang terfokus. Dalam kasus yang ekstrim, dua fraktal dengan parameter yang sama, namun dengan skema warna yang berbeda, akan nampak sama sekali berbeda. Beberapa algortima pewarnaan menghasilkan nilai diskrit, sementara beberapa yang lainnya menghasilkan nilai kontinu. Nilai diskrit akan menghasilkan gradasi warna yang terlihat mata. Hal ini dulu tidak begitu berpengaruh, karena keterbatasan warna 8bit yang memang selalu menghasilkan gradasi warna yang kurang baik. Dengan diperkenalkannya warna 24-bit, algoritma yang menghasilkan nilai kontinu semakin penting, karena nilai kontinu memungkinkan interpolasi warna apapun yang dikehendaki. (http://www.mi.sanu.ac.yu/vismath)
2.3.1
Pembangkitan Gambar Fraktal dengan Menggunakan Metode Newton Raphson
22 Gambar fraktal dibangkitkan dengan menggunakan metode Newton Raphson. Gambar dibentuk dengan menggunakan setiap titik dari bilangan kompleks, dan mewarnai berdasarkan berapa banyak iterasi yang diperlukan untuk mencapai f(x) mendekati nol. Berikut adalah langkah-langkah untuk menghasilkan suatu gambar fraktal dari fungsi polinomial menggunakan metode Newton Raphson : 1) Tentukan fungsi polinomial yang akan digunakan 2) Tentukan panjang dan lebar dari gambar yang akan dihasilkan 3) Lakukan iterasi pada setiap piksel gambar dari posisi piksel pertama 4) Ubah x menjadi sebuah fungsi kompleks dimana nilai realnya merupakan posisi horisontal dan nilai imaginernya merupakan posisi vertikal piksel. 5) Lakukan iterasi menggunakan metode Newton Raphson. 6) Jumlah iterasi merupakan nilai warna yang akan dituangkan pada setiap posisi piksel 7) Ulangi langkah 3 – 7 sampai posisi piksel terakhir
2.3.2
Flowchart Pembangkitan Fraktal Menggunakan Metode Newton Raphson
23
Gambar 2.5 Flowchart Pembangkitan Fraktal Menggunakan Metode Newton Raphson
2.4
Microsoft Visual Studio .NET
2.4.1
Definisi Microsoft Visual Studio .NET
.NET adalah strategi Microsoft dengan mempergunakan Web Service, untuk menghubungkan informasi, manusia, sistem, maupun peralatan menggunakan perangkat
24 lunak. Teknologi .NET, yang sudah terintegrasi dalam platform Microsoft, menyediakan kemampuan untuk membangun, menyebar, menata, dan menggunakan solusi keamanan yang sudah dipercanggih dengan Web Service. Solusi terhubung .NET membuat integrasi sistem menjadi lebih cepat, dan membantu mewujudkan janji informasi kapanpun, dimanapun, dengan alat bantu apapun. Platform Microsoft mencakup semua hal yang dibutuhkan bisnis untuk membuat dan men-deploy arsitektur Teknologi Informasi dengan Web service yang terkoneksi : Server sebagai host Web Service, development tools untuk membuat aplikasi, dan jaringan network yang mencakup lebih dari 35.000 partner Microsoft yang bersertitikasi untuk menyediakan bantuan bila diperlukan.
2.4.2
.NET Framework
Microsoft Visual Studio tidak hanya mendukung language-indepence, tapi juga laguage-integration. Hal ini berarti, bahwa sebuah kelas dapat diwariskan, ditangkap kesalahannya, dan digunakan fasilitas polimophism-nya melewati batas-batas bahasa. Hal ini dimungkinkan oleh .NET dengan adanya Common Type Sistem (CTS) yang harus dipatuhi oleh semua componen .NET. Contohnya, semua hal di dalam .NET adalah objek dari kelas yang spesifik, yang diturunkan dari kelas utama, yaitu Sistem.Object. Menurut Isak Rickyanto (“Membuat Aplikasi Windows dengan Visual Basic .NET”, halaman 1-6), dikatakan bahwa .NET Framework sebenarnya adalah sebuah platform komputasi baru yang menyederhanakan proses pembuatan aplikasi pada lingkungan terdistribusi di Internet. Framework ini didesain untuk memenuhi tujuan sebagai berikut :
25 •
Untuk menyediakan lingkungan permrograman berorientasi objek yang konsisten meskipun kode objek disimpan dan dijalankan secara lokal, dijalankan secara lokal tetapi terdistribusi lewat internet, atau dijalankan secara remote.
•
Untuk menyediakan lingkungan yang menjalankan kode dengan meminimalkan konflik saat deployment dan versioning.
•
Untuk
menyediakan
lingkungan
yang
menjalankan
kode
yang
memberikan jaminan keamanan saat menjalankan kode, termasuk kode yang dijalankan oleh pihak ketiga yang tidak diketahui atau kurang dipercaya. •
Untuk
menyediakan
lingkungan
yang
menjalankan
kode
yang
menghilangkan masalah performance / kecepatan dari lingkungan scripting / interpreted. •
Untuk membuat developer mengalami pengalaman yang konsisten di berbagai tipe aplikasi, seperti aplikasi Windows dan aplikasi berbasis web.
•
Untuk membangun komunikasi standar industri yang memastikan kode berbasis Framework .NET dapat diintegrasikan dengan kode lain.
Salah satu bentuk keunggulan dari platform ini terlihat pada kompilasi sumber kode program (source code), dimana semua source code akan dikompilasi menjadi Microsoft Itermediate Language (MSIL). Selanjutnya MSIL akan dikompilasi oleh .NET Compiler menjadi bahasa mesin pada saat akan digunakan.
26 File MSIL dikategorikan sebagai Managed Application, artinya aplikasi tersebut masih dapat dikontrol / diatur (manage) sebelum dijalankan oleh prosesor. Istilah ini digunakan untuk membedakannya dari istilah Unmanaged Application, yakni aplikasi program yang kita kenal sekarang ini (misalnya Visual Basic, Delphi, Visual FoxPro, dan lain-lain). Framework .NET memiliki 2 komponen utama, yaitu : •
Common Language Runtime (CLR)
•
.NET Framework Class Library
Arsitektur dari .NET Framework dapat dilihat pada gambar berikut
Gambar 2.6 .NET Framework
27 Saat ini diketahui bahwa .NET Framework mendukung 15 bahasa pemrograman. Antara lain Visual Basic , C#, C++, Jscript, VBScript. Bahkan Perl, Cobol, dan Pascal dapat digunakan untuk menghasilkan aplikasi managed code. .NET Framework juga dikembangkan untuk mobile dan embedded devices yang disebut Compact .NET Framework. Jadi, dengan menguasai salah satu bahasa pemrograman yang didukung oleh .NET Framework, kita dapat menghasilkan berbagai tipe aplikasi maupun target aplikasi (server, desktop, maupun smart device seperti PDA). a.
Common Language Runtime
Common language Runtime (sering disingkat menjadi CLR) adalah pondasi dari .NET Framework. CLR (sering disebut sebagai runtime) dapat dianggap sebagai agen yang menangani kode pada saat dijalankan, menyediakan layanan inti seperti manajemen memori, manajemen thread, dan remoting, juga memastikan pendefinisian tipe data secara ketat dan bentuk lain untuk memastikan keakuratan kode program sehingga dapat tercipta keamanan dan ketangguhan suatu program. Konsep manajemen kode adalah prinsip dasar dari runtime. Program yang dijalankan oleh CLR disebut sebagai managed code, sedangkan kode yang tidak memiliki sasaran runtime (CLR) disebut unmanaged code. .NET Framework dapat di-hosted oleh komponen unmanaged code yang memanggil CLR ke prosesnya, dan menjalankan managed code, sehingga menciptakan lingkungan software yang menggunakan fasilitas managed dan unmanaged. Framework .NET tidak hanya menyediakan
28 beberapa runtime host, tetapi juga mendukung pengembangan dari runtime host pihak ketiga. Ilustrasi berikut menunjukkan relasi dari CLR dan Class Library ke aplikasi dan sistem secara keseluruhan. Ilustrasi ini juga menunjukkan bagaimana managed code beroperasi dengan arsitektur yang lebih besar.
Custom System Librarie s
ASP.NET (Runtim e)
Managed Web Applications
Internet Information Service Class Runtim e Operating System/ Library Hardw are
Managed Applications
Unmanaged Applic ations
Gambar 2.7 Relasi Sistem dalam Visual Studio .NET b.
NET Framework Class Library
.NET Framework Class Library adalah suatu koleksi dari tipe data yang dapat digunakan ulang yang terintegrasi dengan CLR. Class Library berorientasi obyek, dan menyediakan tipe data dimana managed code dapat menurunkan fungsionalitasnya. Hal ini tidak hanya dapat membuat tipe data dari .NET Framework mudah digunakan, tapi juga mengurangi waktu belajar
29 dari fasilitas .NET Framework. Sebagai tambahan, komponen pihak ketiga dapat terintegrasi dengan class dari .NET Framework. Sebagaimana diharapkan dari class library berorientasi objek, tipetipe data .NET Framework memberikan fasilitas untuk menyelesaikan sejumlah tugas pemrograman yang umum, termasuk manajemen string, koleksi data, konektivitas database, dan akses file. Sebagai tambahan dari tugas-tugas umum tersebut, class library mengikutkan tipe data yang mendukung variasi skenario development. Sebagai contoh, .NET Framework dapat digunakan untuk membangun aplikasi berikut : -
Aplikasi konsol
-
Aplikasi skripting / hosted
-
Aplikasi Windows GUI (Windows Form)
-
Aplikasi Web (ASP.NET)
-
XML Web Services
-
Windows Services
XML (Extensible Markup Language)
XML
adalah
sebuah
bahasa
yang
sudah
banyak
diadopsi
untuk
merepresentasikan teks dan data di dalam sebuah format yang dapat diproses tanpa melibatkan banyak keahlian manusia maupun mesin. Informasi yang dibuat dalam format XML dapat dipergunakan lintas platform, bahasa, dan aplikasi. XML juga dapat digunakan dalam jangkauan yang sangat luas pada pengembangan suatu aplikasi.
Setiap dokumen XML terdiri dari satu atau lebih elemen, batas-batasnya adalah start-tags dan end-tags, atau untuk elemen kosong, digunakan empty-element tag. Setiap
30 elemen mempunyai tipe, ditandai dengan nama, terkadang disebut “generic identifier” (GI) dan dapat mempunyai set atribut yang spesifik. Setiap spesifikasi atribut mempunyai nama dan nilai.
Struktur XML :
- Start-Tag
Start-Tag adalah awal dari setiap elemen XML yang tidak kosong. Contoh : <xmlelement id="element-id" term="element-term"> - End-Tag
End-Tag adalah penanda akhir dari suatu elemen. Contoh : - Content
Content dari adalah isi dari elemen, terletak diantara Start-Tag dan EndTag. Contoh : <xmlelement>content - Empty-Element-Tag
Empty-Element-Tag digunakan untuk setiap elemen yang tidak mempunyai content. Contoh : <xmlelement id="element-id" type=”type” /> Keuntungan menggunakan XML : a. XML adalah data yang dapat menjelaskan dirinya sendiri. Tidak seperti record dalam database tradisional, XML tidak memerlukan skema relasi (relational schemata), tabel deskripsi file (file description tables), definisi tipe data eksternal
31 (external data type definitions), dan lain lain karena data XML sudah memuat informasi tersebut di dalam dirinya sendiri. b. Dokumen XML dapat memuat semua data, mulai dari data klasik seperti teks dan angka, obyek multimedia seperti suara, sampai format aktif seperti Java Applet atau komponen ActiveX. c. XML merupakan dokumen multi-bahasa dan standar Unicode.
UML (Unified Modeling Language)
Inti dari pemecahan masalah berorientasi obyek adalah dengan membentuk suatu model. Model tersebut merupakan abstraksi dari detail masalah yang ada pada dunia nyata. Beberapa alat pemodelan dibungkus dalam UML (Unified Modeling Language). Dalam UML terdapat beberapa istilah yang harus dipahami sebelumnya. Proses pembuatan UML dimulai dengan pembentukan model. Model adalah abstraksi dari masalah yang sedang dihadapi. Domain adalah dunia nyata, di mana masalah tersebut muncul. Model terdiri dari obyek yang berinteraksi dengan saling mengirimkan pesan (messages). Obyek mempunya hal-hal yang diketahui (attributes) dan hal-hal yang dapat dilakukan (behaviors atau operations). Nilai dari atribut suatu obyek menentukan state. Kelas (class) adalah cetak biru untuk obyek. Sebuah kelas membungkus attributes
(data) dan behaviors (methods atau functions) menjadi sebuah entiti yang unik. Obyek adalah instance dari kelas.
Dalam UML, terdapat 9 jenis diagram pemodelan, yaitu :
a. Use case diagrams
32 Use case diagrams menjelaskan apa yang dilakukan suatu sistem dari sudut
pandang pengamat yang bersifat eksternal. Penekanan ada pada apa (what) yang dilakukan sistem daripada bagaimana (how) melakukannya Use case diagrams sangat berhubungan denga scenario. Skenario adalah contoh dari apa yang terjadi saat seseorang berinteraksi dengan sistem
b. Class Diagrams
Class diagram memberikan garis besar dari sistem tersebut dengan
memperlihatkan kelas-kelas dan hubungan diantaranya. Class Diagrams berbentuk statis, dengan hanya menunjukkan apa yang berinteraksi, tapi tidak menunjukkan apa yang terjadi saat interaksi setiap kelas berinteraksi.
c. Packages and object diagrams
Untuk mempermudah diagram kelas yang kompleks, kelas-kelas tersebut dapat disatukan ke dalam suatu paket (package). Paket adalah koleksi dari elemen UML yang berinteraksi secara logis.
d. Sequence diagrams
Class and object diagrams adalah bentuk pemodelan statis, sedangkan Interaction diagrams berbentuk dinamik, dengan menunjukkan bagaimana
obyek berkolaborasi.
Sequence diagram adalah interaction diagram yang menjelaskan dengan detil
bagaimana suatu operasi berjalan, pesan apa yang dikirim dan kapan. Sequence
33 diagrams diatur berdasarkan waktu. Proses berjalannya waktu sejalan dengan turunnya halaman. Obyek-obyek yang terlibat dalam operasi terdaftar dari kiri ke kanan menurut waktu terlibatnya.
e. Collaboration diagrams
Collaboration diagrams juga merupakan interaction diagrams. Pada dasarnya
Collaboration diagrams menghasilkan informasi yang sama dengan sequence diagrams, tapi terfokus pada peranan obyek daripada waktu pesan dikirim.
f. Statechart diagrams
Obyek mempunyai behaviors dan state. State dari sebuah obyek bergantung pada kondisi atau aktivitasnya pada saat itu.. Statechart diagram menunjukkan kemungkinan state dari sebuah obyek dan transisinya yang dapat mengakibatkan perubahan state.
g. Diagram aktivitas (Activity diagrams)
Diagram aktivitas adalah flowchart yang sederhana. Diagram aktivitas dan
statechart diagrams saling berhubungan. Statechart diagram berfokus pada proses yang dilakukan oleh suatu obyek, activity diagram berfokus pada aliran aktivitas yang terlibat pada proses tunggal. Activity diagram memperlihatkan bagaimana tiap aktivitas tersebut bergantung satu sama lain.
h. Component and deployment diagrams
34 Deployment diagrams menunjukkan konfigurasi fisik dari hardware dan
software.
2.4.3
Keuntungan Menggunakan Microsoft Visual Studio .NET
Microsoft Visual Studio .NET mempunyai framework yang merupakan bagian integral dari next generation aplication dan XML Web Service. Programmer dapat membuat aplikasi dalam framework .NET menggunakan beberapa bahasa. Masingmasing dari bahasa tersebut terkompilasi di dalam Microsoft Intermediate Language (MSIL), yang kemudian dikonversi ke dalam bahasa natif, dan dieksekusi dalam CLR. Karena tiap bahasa berinteraksi dengan kode yang ditulis dalam CLR, berbagai aplikasi yang ditulis dengan bahasa yang satu, dapat berinteraksi dengan aplikasi yang ditulis dengan bahasa lain. Dengan diperkenalkannya CLR, programmer sekarang ini mempunyai ruang lingkup bahasa yang lebih luas untuk dipilih, sehingga membantu pemilihan bahasa yang tepat untuk kemampuan mereka dan untuk tugas yang akan dihadapi.
2.4.4
Microsoft C# .NET
Visual C# .NET adalah suatu bahasa yang simpel, dengan hanya sekitar 80 kata kunci,
dan
lusinan
tipe
data
bawaan,
namun,
C#
sangat
tepat
untuk
mengimplementasikan konsep pemrograman modern. Bahasa C# diciptakan oleh sebuah tim kecil yang dipimpin oleh 2 programmer Microsoft, Anders Hejlsberg dan Scott Wiltamuth. Hejlsberg diketahui juga sebagai pencipta Turbo Pascal, dan tim utama dalam pembuatan Borland Delphi.
35 a. Konsep Object Oriented Programming (OOP) dalam Microsoft C# .NET
Object
Oriented
Programming
merupakan
paradigma
baru
dalam
pemrograman. Ide dasar dari OOP adalah mengkombinasikan data dan method (fungsi) untuk mengakses data menjadi sebuah kesatuan unit. Unit ini dikenal dengan nama object (Abdul Kadir, 1995, p4) Objek merupakan suatu enkapsulasi dari data dan fungsi. Sebuah peningkatan dari pemahaman sebelumnya dimana posisi data dalam suatu program lebih rendah dari fungsi atau method, dalam OOP, data mempunyai kedudukan yang seimbang dengan fungsi atau method. b. Class dan Object
Class dapat dianalogikan sebagai cetakan obyek. Class menentukan spesifikasi pembentukan object. Mulai dari jenis data, fungsi – fungsinya, nilai awalnya, hingga caranya berinteraksi dengan object lainnya. Sebuah class umumnya terdiri dari variabel instan dan method untuk obyek. Method merupakan fungsi (subprogram) yang melekat pada sebuah object atau instansi dari suatu class tertentu. (http://java.sun.com/docs/books/concepts.class.html) c. Inheritance
Inheritance merupakan fitur dasar dalam OOP yang memungkinkan untuk menurunkan data dan fungsionalitas dari sebuah kelas induk. Daripada membuat suatu obyek dari awal, programmer dapat mengambil kode dari programmer lain, dan hanya menambahkan fitur-fitur lain yang diperlukan. Obyek induk yang merupakan dasar dinamakan base class, sedangkan obyek anak yang mewarisi sifat base class dinamakan derived class.
36 d. Interface
Interface
merupakan
suatu
mekanisme
yang
disediakan
C#
yang
memungkinkan agar banyak class dapat berbagi konstanta maupun bentuk method. Method yang dipergunakan di sini adalah method abstrak, yang hanya terdapat deklarasi tanpa definisi. Suatu class hanya dapat mewarisi variabel dan method dari 1 superclass saja namun dengan mempergunakan interface, satu class dapat memepergunakan abstact method dan konstanta dari banyak interface berbeda. Interface juga dapat mewarisi interface lain seperti halnya class dapat mewarisi class lainnya.
2.4.5
Keunggulan Microsoft Visual C# .NET - Mewarisi secara kuat sifat-sifat C++
Visual C# mewarisi kuat sifat-sifat C++ yang menjamin pondasi kuat bagi para developer. Bahasa C++ merupakan bahasa pemrograman yang sudah dikenal luas, sehingga memudahkan programmer seperti C++ dan Java untuk mempelajarinya. - Sistem berbasiskan OOP (Object Oriented Programming)
Visual C# menyediakan bahasa modern dan Object Oriented Programming yang intuitif. - Akeses kepada Microsoft .NET Framework - Component-Oriented Development - Dukungan terhadap ‘XML Comment’
37 Visual C# memungkinkan programmer untuk menggunakan XML Comment, yang berguna untuk dokumentasi source code yang ampuh dan dapat dikostumasi. - XML Web Service yang interaktif
Visual C# memungkinkan pebuatan web service yang berbasiskan XML - Dapat digunakan pada berbagai target device
Visual C# memungkinkan programmer menghasilkan aplikasi untuk desktop komputer, berbagai alat seperti handheld dan wireless device menggunakan tool dan cara pengembangan yang sama - Model memori ‘C’
Visual C# memberikan akses manajemen memori dan pointer seperti pada bahasa C jika diperlukan, tidak menghilangkan pointer dan memaksa programmer untuk menggunakan cara lain seperti pada kebanyakan bahasa pemrograman. - Visual C# IDE
Visual C# menyediakan IDE yang canggih, yaitu Visual Studio .NET development environment, seperti Task Lists, Property Editors, Microsoft Intellisense, Forms Designer, dan lain lain, yang telah terbukti dengan memenangkan penghargaan.
2.5 Grafik Komputer
Grafik komputer adalah salah satu bidang dari visual computing, di mana manusia
menggunakan
komputer
untuk
menghasilkan
menggabungkan atau merubah pandangan dari dunia nyata .
gambar
tiruan
dan
38 Perkembangan penting yang pertama dalam dunia grafik komputer adalah ditemukannya Sketchpad oleh Ivan Sutherland. Sketchpad adalah sebuah alat yang terdiri dari pensil dan kertas elektronik, di mana goresan di kertas tersebut akan tergambar dalam komputer. Bidang-bidang dalam dunia grafik komputer dapat dibagi lagi ke dalam beberapa bagian, yaitu : real-time 3D rendering (sering digunakan dalam dunia game), computer animation (animasi komputer), video capture dan video creation rendering, special effects editing (sering digunakan dalam film dan televisi), image editing, dan modeling (sering digunakan untuk tujuan medik) Perkembangan dalam dunia grafik komputer pertama dibiayai oleh akademiakademi yang tertarik pada bidang tersebut, dan sponsor pemerintah. Walau begitu, saat aplikasi dunia nyata dari grafik komputer dalam penyiaran televisi dan film menghasilkan alternatif yang lebih baik daripada metode tradisional, dunia komersil mulai ramai membiayai perkembangannya. Sering disebutkan, bahwa film pertama yang menggunakan grafik komputer adalah pada tahun 2001 : A Space Odyssey, yang mencoba menunjukkan bagaimana komputer dapat menghasilkan grafik di masa depan, namun semua efek ‘komputer’ yang digunakan dalam film tersebut ternyata dibuat dengan gambar tangan. Mungkin, yang pertama menggunakan grafik komputer adalah Futureworld (1976), yang memasukkan animasi wajah manusia dan tangan, diproduksi oleh Ed Catmull dan Fred Parke di Universitas Utah.
2.5.1
Komputer Grafik 2D
Terdapat dua pendekatan dalam grafik 2 dimensi :
39 - Vektor
Grafik vektor menyimpan data geometrik yang tepat, topologi, dan corak seperti posisi koordinat dari titik, koneksi dari titik ke titik (untuk membentuk garis atau jalur) dan warna, ketebalan dan kemungkinan pengisian dari bentuk. Kebanyakan grafik vektor dapat juga menggunakan bentuk standar primitif seperti lingkaran dan persegi, dll. Pada banyak kasus, grafik vektor harus diubah terlebih dahulu menjadi raster untuk dapat dilihat. - Raster
Grafik raster adalah bentuk dua dimensi sususan piksel-piksel. Setiap piksel mempunyai nilai yang spesifik seperti tingkat kecerahan, transparansi warna atau kombinasi dari nilai-nilai tersebut. Grafik raster juga mempunyai resolusi terbatas yang terdiri atas angka spesifil dari baris dan kolom. Tampilan komputer standar menunjukkan resolusi grafik raster, misalnya 1280 (kolom) x 1024 (baris) piksel. Sekarang ini orang kebanyakan menggabungkan raster dan vektor dalam format file majemuk (pdf, swf).
2.5.2
Komputer Grafik 3D
Dengan lahirnya komputer workstation (seperti LISP machines, paintbox computers, dan Silicon Graphics workstation) lahirlah grafik komputer 3 dimensi, dengan menggunakan metode grafik vektor. Selain menyimpan informasi mengenai titik, garis dan kurva dalam grafik vektor 2 dimensi, komputer juga menyimpan lokasi titik, garis, dan bentuk permukaan (untuk membentuk poligon) dalam ruang 3 dimensi. Poligon 3 dimensi adalah awal lahirnya semua grafik komputer virtual 3 dimensi. Sebagai akibatnya, kebanyakan mesin grafik 3 dimensi didasarkan pada penyimpanan
40 titik (koordinat tunggal 3 dimensi), garis yang menghubungkan titik-titik tersebut menjadi satu, dan permukaan antara garis, dan kemudian membentuk permukaanpermukaan tersebut menjadi poligon 3 dimensi. Jaman modern ini, grafik komputer sudah sangat jauh berbeda, tidak hanya penyimpanan sederhana dari poligon. Grafik sekarang ini tidak hanya menghasilkan bentuk dari koleksi poligon, namun juga dihasilkan dari teknik seperti shading dan texturing. a. Shading
Proses pembentukan bayangan (dalam konteks grafik komputer 3D) melibatkan simulasi komputer (kalkulasi) bagaimana permukaan dari poligon akan terlihat saat diterangi oleh sumber cahaya virtual. Kalkulasi secara tepat berbeda tergantung tidak hanya pada data apa yang tersedia tentang permukaan yang akan dibentuk bayangannya, tapi juga teknik pembentukan bayangan. - Flat shading: Teknik yang membentuk bayangan setiap poligon dari
sebuah obyek berdasarkan garis normal poligon, posisi, dan intensitas dari sumber cahaya. - Gouraud shading: Ditemukan oleh Henri Gouraud tahung 1971, sebuah
teknik yang cepat dan memperhatikan sumber daya, digunakan untuk mensimulasikan
permukaan
yang
bayangannya
lembut
dengan
menginterpolasikan warna garis sepanjang permukaan poligon. - Texture mapping: Teknik untuk simulasi permukaan yang detail dengan
cara memetakan gambar (tekstur) ke dalam poligon-poligon. - Phong shading: Ditemukan oleh Bui Tuong Phong, teknik pembentukan
bayangan lembut yang memperkirakan pencahayaan permukaan-
41 lengkung dengan cara menginterpolasikan garis normal garis poligon sepanjang permukaan; model pencahayaan termasuk pemantulan kilap dengan level kekilapan yang dapat dikontrol. - Bump mapping: Ditemukan oleh Jim Blinn, sebuah teknik normal-acak
yang digunakan untuk mensimulasikan permukaan bergelombang atau berkerut. Ray Tracing: A method based on the physical principles of geometric optics that can simulate multiple reflections and transparency. - Radiosity : Teknik untuk pencahayaan global yang menggunakan teori
radiatif untuk mensimulasikan pencahayaan tidak langsung (memantul) dengan permukaan difus. - Blobs: Teknik untuk merepresentasikan permukaan tanpa menentukan
batas-batas keras, biasanya digunakan untuk permukaan prosedural. b. Texturing
Permukaan poligon dapat mengandung data tidak hanya warna, tapi juga kanvas virtual untuk gambar, atau gambar raster yang lain. Gambar semacam ini diletakkan dalam permukaan, atau seri-permukaan dan disebut sebagai tekstur.
2.5.3
Model Warna
Sebelum memahami model warna, sangat penting untuk memahami perbedaan pada sistem. Banyak orang memahami warna sebagai cat. Kemudian saat mencampur biru dan kuning, akan didapatkan hijau muda. Tapi hasilnya akan berbeda jika mencampurkan hijau dan merah muda. Hal itu akan menghasilkan warna kuning jika 100% merah dicampurkan dengan hijau muda. Jadi ada baiknya memahami kedua sifat berbeda ini. Jika memperhatikan warna yang dihasilkan monitor, warna yang dihasilkan
42 oleh cahaya, hal ini didasarkan dari model RGB dan ini adalah model warna aditif. Dari sini lalu muncul cat atau tinta printer. Kemudian ada juga model CMYK, yang adalah model warna subtraktif
a. Model RGB (Red Green Blue)
Komputer menciptakan warna berdasarkan model RGB (Red Green Blue). Hal ini menghasilkan spektrum cahaya tampak. Monitor dapat membuat jutaan warna dengan mengkombinasikan warna primer ini dengan prosentase yang berbeda baik merah, hijau, maupun biru. Sedangkan dengan piranti lunak seperti Photoshop dapat dilihat bahwa warna GRB tersebut telah ditambahkan dengan nilai numerik, antara 0 s/d 255. Dengan RGB, pencampuran merah dan hijau secara merata dapat menghasilkan kuning, mencampurkan hijau dengan biru secara merata dapat menghasilkan sian, dan mencampurkan merah dengan biru secara merata dapat menghasilkan magenta. Ketika ketiga warna, merah, hijau, dan biru dicampurkan secara merata dapat menghasilkan cahaya putih. Maka kemudian dinamakan model warna aditif. Contoh lain model RGB adalah mata manusia dan scanner.
Keuntungan dasar dari model RGB adalah bahwa model ini sangat berguna untuk penyuntingan warna lengkap karena model ini mampunyai jangkauan warna yang luas. Namun disaat yang sama model ini tergantung pada alat. Artinya bagaimana warna ditampilkan pada layar tergantung pada perangkat keras yang digunakan untuk menampilkannya.
b. Model CMYK (Cyan Magenta Yellow Black)
43 Kebalikan dari RGB adalah CMY (Cyan Magenta Yellow). Tinta printer dibuat berdasarkan model ini. Dengan mencampurkan sian, magenta, dan kuning akan didapatkan hitam. Namun prakteknya pada industri printer tidaklah mungkin untuk menghasilkan warna hitam murni dari ketiga warna ini. Hasil dari pencampuran CMY adalah coklat tanah karena ketidakmurnian dari tinta. Maka tinta hitam ditambahkan untuk mendapatkan warna hitam yang solid. Hasilnya adalah CMYK di mana K merupakan singkatan dari Black, yang juga dikenal sebagai warna ‘kunci’. Karena hitam adalah campuran penuh dari semua warna, tingkat sian, magenta, dan kuning harus dikurangi untuk menghasilkan warna terang. Saat sinar jatuh ke permukaan hijau atau tinta hijau, permukaan tersebut akan menyerap semua warna dari sinar, kecuali hijau. Oleh karena itulah model ini disebut subtraktif model. Produksi printer didasarkan pada model ini.
Gambar 2.8 Model Warna RGB dan CMYK