Minggu, 07 November 2010

Perbandingan beberapa type extensi gambar

1.Gambar mengunakan extention .JPG




Judul                : lee_min_ho_13072009213430.jpg
Type                : JPG image
Dimensions     : 768 x 1024 pixels
Size                  : 50.7 KB








2.Gambar menggunakan extention .BMP



JuduL              : lee_min_ho_13072009213430.bmp
Type                : Bitmap image
Dimensions     : 768 x 1024 pixels
Size                  : 2.25 MB








 3.Gambar menggunakan extention .PNG



JuduL                : lee_min_ho_13072009213430.png
Type                  : PNG image
Dimensions       : 768 x 1024 Pixels
Size                    : 421 KB







4.Gambar menggunakan extention .GIF
 

Judul                  : lee_min_ho_13072009213430.gif
Type                   : GIF image
Dimensions        : 768 x 1024 pixels
Size                     : 241 KB







5.Gambar menggunakan extention .TIFF

untuk gambar berekstension .TIFF sepertinya blogger menolaknya, tapi berikut ini adalah rincian perbedaannya :

JuduL                                : lee_min_ho_13072009213430.tiff
Type                                 : TIFF image
Dimensions                     : 768 x 1024 pixels
Size                                  : 2.27 MB






Pengolahan Citra
3KA01-Kurma.blogspot.com

Minggu, 24 Oktober 2010

RADIOSITY


Sebelum membahas mengenai radiosity, coba perhatikan gambar-gambar berikut ini (sumber : google).

 
      

Gambar-gambar di atas merupakan gambar di dalam ruangan yang ditampilkan dengan efek bayangan atau pantulan cahaya sehingga memberi kesan yang realistis (tampak seperti keadaan sebenarnya). Untuk menghasilkan gambar seperti di atas, dapat digunakan teknik-teknik pencahayaan yang telah banyak berkembang.
Teknik pencahayaan pada grafika 3D merupakan sebuah objek yang penting, karena dengan cahaya ini sebuah objek dapat terlihat nyata dan dapat dilakukan proses rendering. 
 
Rendering adalah proses menangkap segala sesuatu yang ada di dalam scene termasuk geometri, material, cahaya, lingkungan serta efek-efek yang terdapat didalamnya. Sumber cahaya ini juga membuat sebuah objek menjadi lebih realistis. Sebuah sumber cahaya memiliki jenis. 
  1. Metode Rendering

    Metode rendering yang paling sederhana dalam grafika 3D :
  • Wireframe rendering
    Wireframe yaitu Objek 3D dideskripsikan sebagai objek tanpa permukaan. Pada wireframe rendering, sebuah objek dibentuk hanya terlihat garis-garis yang menggambarkan sisi-sisi edges dari sebuah objek. Metode ini dapat dilakukan oleh sebuah komputer dengan sangat cepat, hanya kelemahannya adalah tidak adanya permukaan, sehingga sebuah objek terlihat tranparent. Sehingga sering terjadi kesalahpahaman antara siss depan dan sisi belakang dari sebuah objek.

  • Hidden Line Rendering
    Metode ini menggunakan fakta bahwa dalam sebuah objek, terdapat permukaan yang tidak terlihat atau permukaan yang tertutup oleh permukaan lainnya. Dengan metode ini, sebuah objek masih direpresentasikan dengan garis-garis yang mewakili sisi dari objek, tapi beberapa garis tidak terlihat karena adanya permukaan yang menghalanginya.
    Metode ini lebih lambat dari dari wireframe rendering, tapi masih dikatakan relatif cepat. Kelemahan metode ini adalah tidak terlihatnya karakteristik permukaan dari objek tersebut, seperti warna, kilauan (shininess), tekstur, pencahayaan, dll.

  • Shaded Rendering
    Pada metode ini, komputer diharuskan untuk melakukan berbagai perhitungan baik pencahayaan, karakteristik permukaan, shadow casting, dll. Metode ini menghasilkan citra yang sangat realistik, tetapi kelemahannya adalah lama waktu rendering yang dibutuhkan.

Pada grafika 3D dikenal beberapa macam sumber cahaya, yaitu :
  • point light
memancar ke segala arah, namun intensitas cahaya yang diterima objek bergantung dari posisi sumber cahaya. Tipe ini mirip seperti lampu pijar dalam dunia nyata.
  • spotlight
Memancarkan cahaya ke daerah tertentu dalam bentuk kerucut. Sumber cahaya terletak pada puncak kerucut. Hanya objek-objek yang terletak pada daerah kerucut tersebut yang akan nampak.
  • ambient light
Cahaya latar/alam. Cahaya ini diterima dengan intensitas yang sama oleh setiap permukaan pada benda. Cahaya latar tersebut dimodelkan mengikuti apa yang terjadi di alam, diaman dalam keadaan tanpa sumber cahaya sekalipun, benda masih dapat dilihat.
  • area light

      
    • directional light
    memancarkan cahaya dengan intensitas sama ke suatu arah tertentu. Letak tidak mempengaruhi intensitas cahayanya. Tipe ini dapat menimbulkan efek seolah-olah sumber cahaya berada sangat jauh dari objek.

    • parallel point
    Sama dengan directional, hanya pencahayaan ini memiliki arah dan posisi.
     
    Model dari pencahayaan, dipakai untuk menghitung intensitas dari cahaya yang terlihat dari setiap posisi pada setiap permukaan benda yang terlihat oleh kamera. Ketika melihat sebuah benda, terlihat cahaya yang dipantulkan dari permukaan benda, dimana cahaya ini merupakan intregrasi dari sumber-sumber cahaya serta cahaya yang berasal dari pantulan cahaya permukaan-permukaan yang lain. Karena itu benda-benda yang tidak langsung menerima cahaya dari sumber cahaya, masih mungkin terlihat bila menerima cahaya pantulan yang cukup dari
    benda didekatnya.

    Model sederhana dari sumber cahaya adalah sebuah titik sumber, dimana dari titik ini cahaya dipancarkan. Perhitungan pencahayaan bergantung pada sifat dari permukaan yang terkena cahaya, kondisi dari cahaya latar serta spesifikasi sumber cahaya.

    Semua sumber cahaya dimodelkan sebagai sumber titik yang dispesifikasikan dengan :

    a. Lokasi; Lokasi (x,y,z) dari sebuah sumber cahaya akan menentukan pengaruhnya terhadap sebuah objek.

    b. Intensitas; Intensitas cahaya menyatakan kekuatan cahaya yang dipancarkan oleh sebuah sumber cahaya. Parameter ini merupakan angka, yang biasanya makin besar nilainya, makin terang sumber cahaya tersebut.

    c. Warna; Warna cahaya dari sumber ini akan mempengaruhi warna dari sebuah objek, jadi selain warna objek tersebut warna cahaya yang jatuh pada objek tersebut akan mempengaruhi warna pada rendering. Warna cahaya ini biasanya terdiri dari 3 warna dasar grafika komputer, yaitu: merah, hijau, biru atau lebih dikenal dengan RGB.

    Misalnya pantulan Phong, pelacakan sinar, HDRI, dan radiosity. Untuk pantulan Phong dan pelacakan sinar, hasil yang diperoleh kurang memuaskan karena menghasilkan model plastik yang mengambang di dalam ruang bebas kelihatan secara alami menghantarkan kepada teknik seperti bayangan dan pemetaan tekstur yang dicangkokkan pada model pantulan dasar. Berbeda dengan teknik radiosity yang hasilnya lebih baik dan tampak sempurna. Radiosity merupakan salah satu bidang dalam grafik komputer yang berhubungan dengan pencahayaan. Radiosity atau disebut juga Global Illumination (GI) adalah teknik pencahayaan virtual yang hasilnya paling realistik diantara metode-metode lain, tetapi teknik ini adalah teknik yang paling mahal, dalam arti membutuhkan waktu yang lama untuk menghasilkan hasil yang realistik. Pengertian lain juga menyebutkan bahwa

    Radiosity adalah sebuah metode yang memiliki kebutuhan prosesor yang setidaknya sekuat pelacakan sinar dan ini tidak diragukan lagi dan merupakan salah satu dari alasan karena tidak adanya penyebaran seluruh grafik komputer. Seperti pelacakan sinar, setelah awal penetapan metode tersebut, penelitian yang baru saja dilakukan mengkonsentrasikan pada pengintegrasian fenomena pantuIan yang lain seperti pantulan spekular ke dalam metode tersebut. Meskipun istilah 'nyata' merupakan kata sifat yang digunakan secara berlebihan dalam grafik komputer, namun ia tidak dapat disangkal lagi bahwa metode ini menghasilkan gambar yang paling nyata dan berkesan.

    Sejarah Radiosity
    Metode radiosity pertama kali dikembangkan dalam pemindahan panas radiasi (Siegel dan Howell,1984) untuk menjelaskan pemindahan panas antara elemen di dalam perapian atau pada sebuah pesawat terbang.
    Metode radiosity adalah sebuah algoritma ruang obyek yang menyelesaikan intensitas pada titik diskrit atau lekatan permukaan dalam sebuah lingkungan dan bukan untuk pixel di dalam sebuah proyeksi bidang gambar. Jadi penyelesaiannya tidak tergantung pada posisi objek.

    Radiosity memberikan sebuah penyelesaian terhadap interaksi difusi, akan tetapi dengan mengorbankan lingkungan kedalam elemen 'largish' (yang mana pencahayaanya tetap). Pendekatan ini tidak dapat menanggulangi pantulan spekular yang tajam dan pada dasamya kita memiliki dua penyelesaian global yaitu :
    pelacakan sinar (yang menangani pantulan specular global) dan radiosity (yang menangani pantulan difusi global).
    Metode radiosity telah dikembangkan untuk menerangkan interaksi dari cahaya difusi antara elemen dalam sebuah gambar. Metode ini sangat bagus untuk menghasilkan gambar dari lingkungan interior, yang kebanyakan kumpulan dari obyek yang bukan spekular, dan ini menghasilkan interior yang kelihatan nyata.

    Kelebihan Radiosity

    Radiosity dapat mensimulasikan efek – efek cahaya dalam kehidupan sehari – hari. Contohnya : 
     
    1. soft-shadow (Bayangan dalam kehidupan nyata yang tidak terlalu tampak gelap tetapi semu).

    2. Color – Bleed (Pendekatan 2 benda yang warnanya kontras maka warna salah satu benda akan menyebrang kebenda lain).

    3. Ambient Occlusion (AO), contohnya pencahayaan tidak langsung dan bayangan yang dihasilkannya.

    Kekurangan Radiosity

    1. Membutuhkan biaya yang mahal.

    2. Membutuhkan waktu yang lama untuk menghasilkan hasil yang realistik.

    3. Membutuhkan kapasitas memory yang besar.

    Pilihan algoritma dasar di dalam metode radiosity adalah sebagai berikut:

    Gathering

    Sebuah matriks dari faktor bentuk dihitung, disimpan, dan digunakan dalam sebuah penyelesaian Gauss-seidel tradisional. Jika penyelesaian tersebut dipandang begitu ia berlangsung, radiosity
    lekatan yang diperkirakan diperbaharui di dalam urutan mereka dalam rumusan matriks.

    Shooting 
     
    Cahaya dari masing-masing lekatan ditembakkan kedalam lingkungan dan seluruh gambar diperbaharui untuk masing-masing iterasi. Pendekatan ini dioptimisasi secara visual dengan memperlakukan lekatan dalam urutan yang memperhitungkan jumlah energi yang mereka pancarkan.

    Shooting dan ambient

    Sebuah suku ambient kini dicantumkan dengan demikian maka perkiraan awal dapat dilihat. Pada masing-masing iterasi mutu dan ketelitian penyelesaian bertambah dan pecahan ambient dikurangi.

    Radiosity hibrida dan pelacakan sinar

    Metode radiosity standar menyediakan sebuah penyelesaian untuk interaksi dari permukaan difusi di dalam sebuah lingkungan tertutup. Jika metode radiosity tersebut menjadi sebuah teknik sintesa gambar standar, maka ia harus mencantumkan pemodelan fenomena spekular. Wallace, Cohen, dan Greenberg (1987) melakukan ini dengan menggabungkan pelacakan sinar dan memisahkan metode tersebut menjadi sebuah pendekatan dua-lewatan.

    Metode radiosity pertama kali diperluas dengan mencantumkan interaksi spekular oleh Immel, Cohen, dan Greenberg (1986) yang menggabungkan sebuah fungsi pantulan dua arah kedalam persamaan radiosity dasar dan mengambil sebuah penyelesaian yang tidak tergantung pada pandangan terhadap antar pantulan spekular. Akan tetapi, pendekatan ini menghasilkan biaya tambahan komputasi yang sangat besar untuk segala sesuatu namun gambar sederhana, karena di dalam sebuah penyelesaian yang tidak tergantung pada pandangan, meskipun pencahayaan difusi berubah relatif lambat pada sebuah permukaan, sub-pembagian yang teliti diperlukan untuk interaksi specular. Di dalam pendekatan dua-lewatan Wallace, lewatan yang pertama adalah perhitungan dari sebuah penyelesaian yang tidak tergantung pada sebuah penyelesaian radiosity yang ditingkatkan. Sifat alami dari interaksi antara dua permukaan dan mencantumkan interaksi difusi ke difusi, specular ke difusi, dan specular ke specular. Pendekatan dua-lewatan yang tidak tergantung pada pandangan/tergantung pada pandangan diistilahkan 'preprocess' dan 'postprocess'
     
    Preprocess ditingkatkan dengan mencantumkan transmisi difusi (translucency) dan transpot specular- ke-difusi. Metode radiosity dasar dengan menggunakan sebuah hemicube untuk penentuan faktor bentuk kemudian digunakan. 
     
    Postprocess menggunakan pelacakan sinar yang tidak tergantung pandangan yang memperhitungkan interaksi specular-ke specular dan interaksi difusi-ke-specular. Translucency diimplementasikan dengan menggunakan sebuah hemicube pada belakan seperti halnya permukaan depan, yang memungkinkan arah balik seperti halnya faktor bentuk maju dihitung.

    Jadi, di dalam preprocess, atau penyelesaian yang tidak tergantung pada pandangan, transport specular diperhitungkan, namun hanya sampai pada perluasan tertentu untuk menghitung komponen difusi secara teliti. Postprocess atau tergantung pada pandangan memperlakukan mekanisme specular ke specular dan difusi ke specular dengan menggunakan sebuah pendekatan pelacakan sinar. Pelacakan sinar normal, tentu saja, memperlakukan transfer specular-ke-specular. Untuk menghitung mekanisme difusi-ke-specular dengan benar, pengintegrasian intensitas cahaya yang datang harus dilakukan pada seluruh belahan bola pada titik yang ditinjau, diberi bobot dengan sifat pantul specular dua arah. Akan tetapi, Wallace, Cohen, dan Greenberg (I 987) membuat anggapan bahwa hanya sebagian kecil dari sinar yang datang pada belahan bola yang andil terhadap tonjolan specular yang meninggalkan. Mereka menggunakan sebuah frustum pantulan persegi untuk meniru tonjolan specular dan metode ini juga menggabungkan mekanisme specular ke specular . Intensitas difusi yang datang kepada masing-masing frustum pantulan dihitung dengan interpolasi linear dari intensitas puncak lekatan yang tidak tergantung pada pandangan / preprocess.

    Frustum pantulan diimplementasikan secara geometri sebagai sebuah piramida persegi yang ujung permukaannya dibagi kedalam n x n pixel. Permukaan yang dapat dilihat ditentukan dengan menggunakan sebuah algoritma penyangga-Z yang biasa dengan resolusi yang sangat rendah sekitar l0 x 10 pixel. 
     
    Intensitas yang datang yang dilihat melalui sebuah pixel frustum pantulan'hanya intensitas permukaan yang dilihat oleh pixel tersebut, jadi, intensitas tersebut dihitung di dalam fase preprocess / tidak tergantung pada pandangan.

    Jika sebuah permukaan yang dapat dilihat adalah specular, maka proses tersebut diterapkan secara rekursif sebagaimana dalam pelacakan sinar normal. Intensitas yang datang yang mengalir melalui masing-masing pixel dijumlahkan untuk meniru sebaran specular dan dapat juga dijadikan subyek pada sebuah fungsi pembebanan yang menirukan bentuk sebaran specular. Wallace membatasi jumlah pekerjaan yang harus dilakukan pada tahap ini dengan pembatasan kedalaman rekursif dimana proses tersebut beroperasi dan juga dengan pengurangan resolusi pixel pada permukaan ujung dari frustum pantulan sebagai sebuah fungsi kedalaman lacakan.

    Sumber:
    http://elearning.gunadarma.ac.id/docmodul/pengantar_komputer_grafik/bab10-radiosity.pdf
    http://dhila-ilmu.blogspot.com/2009/10/radiosity.html
    http://my.opera.com/community/

     


     
 
 
 

Senin, 11 Oktober 2010

Beberapa Algoritma Membuat Garis

PENDAHULUAN 

Ada beberapa metode pembentuk garis yang umum digunakan yaitu: Algoritma DDA (Digital Defferential Analyzer) dan Algoritma Bressenham 

DDA (Digital Defferential Analyzer)

Garis merupakan kumpulan dari titik-titik, untuk membentuk garis lurus adalah dengan mengetahui titik awal dan titik akhir. Dengan mengetahui titik awal dan titik akhir maka kita dapat membentuk garis. Untuk menggambarkan proses pembuatan garis dari titik awal ke titik akhir ada berbagai algoritma. Algoritam yang umum adalah DDA dan Bresenham.
Perkembangan kemampuan komputasi prosesor yang pesat telah membuat komputer desktop mempunyai kemampuan komputasi yang besar. Hal ini mendorong perkembangan program aplikasi yang memerlukan komputasi yang besar seperti program aplikasi yang menggunakan grafik 3 dimensi. Peningkatan kemampuan komputasi prosesor untuk aplikasi grafik yang sarat komputasi, perlu dibarengi peningkatan efisiensi algoritma, sehingga pembuatan grafik garis dan kurva yang merupakan dasar pembuatan grafik dapat memberikan hasil yang optimal.

GARIS LURUS

Garis lurus dinyatakan dinyatakan dalam persamaan :
y = mx + c                   (1)
dimana :
m : gradient dan
c : konstanta.

Untuk menggambarkan piksel-piksel dalam garis lurus, parameter yang digunakan tergantung dari gradient, jika besarnya gradient diantara 0 dan 1, maka digunakan sumbu x sebagai parameter dan sumbu y sebagai hasil dari fungsi, sebaliknya, bila gradient melebihi 1, maka sumbu y digunakan sebagai parameter dan sumbu x sebagai hasil dari fungsi, hal ini bertujuan untuk menghindari terjadinya gaps karena adanya piksel yang terlewatkan. Hasil dari fungsi biasanya merupakan bilangan riil, sedangkan koordinat pixel dinyatakan dalam bilangan integer (x,y), maka diperlukan operasi pembulatan kedalam bentuk integer terdekat.
Penggambaran garis lurus dengan metode diatas dimulai dengan operasi bilangan riil untuk menghitung gradient m dan konstanta c.

m = (y2 - y1 ) / (x2-x1)         (2)
c = y1 – m* x1                      (3)

Operasi bilangan riil berikutnya adalah menghitung nilai y dengan persamaan (1) untuk mendapatkan koordinat piksel (x,y), untuk setiap nilai x, dari =x1 sampai x=x2, operasi inilah yang perlu dihindari, karena operasi ini memerlukan waktu operasi yang besar.

**Algoritma digital differential analyzer(DDA)**

Prinsip algoritma ini adalah mengambil nilai integer terdekat dengan jalur garis berdasarkan atas sebuah titik yang telah ditentukan sebelumnya(titik awal garis).

Algoritma pembentukan garis DDA:

1)  Tentukan dua titik yang akan dihubungkan dalam pembentukan garis.
2)  Tentukan salah satu titik sebagai awal(x0,y0) dan titik akhir(x1,y1).
3)  Hitung dx=x1¬x0, dan dy= y1¬y0.
4)  Tentukan langkah, yaitu dengan cara jarak maksimum jumlah penambahan nilai x          maupun nilai y, dengan cara :
    *Bila nilai absolut dari dx lebih besar dari absolut dy, maka langkah= absolut dari            dx.
    *Bila tidak maka langkah= absolut dari dy
5)  Hitung penambahan koordinat pixel yaitu x_increment=dx/langkah, dan
    y_increment=dy/langkah
6)  Koordinat selanjutnya (x+x_increment, y+y_increment)
7)  Posisi pixel pada layar ditentukan dengan pembulatan nilai koordinat tersebut.
8)  Ulangi nomor 6 dan 7 untuk menentukan posisi pixel selanjutnya,sampai x=x1
     dan y=y1.

Algoritma Bresenham

Bresenham pada tahun 1965, melakukan perbaikan dari algoritma perhitungan koordinat piksel yang menggunakan persamaan (1), dengan cara menggantikan operasi bilangan rii perkalian dengan operasi penjumlahan, yang kemudian dikenal dengan Algoritma Bresenham. Pada algoritma bresenham, nilai y kedua dan seterusnya, dihitung dari nilai y sebelumnya, sehingga hanya titik y pertama yang perlu dilakukan operasi secara lengkap. Perbaikan algoritma ini ternyata tidak menghasilkan perbaikan yang cukup siginifikan. Perbaikan berikutnya dilakukan dengan cara menghilangkan operasi bilangan riel dengan operasi bilangan integer. Operasi bilangan integer jauh lebih cepat dibandingkan dengan operasi bilangan riel, terutama pada penambahan dan pengurangan.

Cara menentukan garis dengan algoritma bresenham :

1.    Tentukan koordinat awal garis (x0,y0)
2.    tentukan koordinat akhir garis (x1,y1)
3.    Hitung jarak mendatar ke 2 titik (dx)
Dx=x1-x0
4.    Hitung jarak mendatar ke 2 titik (dx)
Dy=y1-y0
5.    Tentukan faktor pembagi (mencari yg lebih panjang)
Apakah dx>dy,bila ya
            Step=dx
             Bila tidak
            Step=dy
6.    Hitung faktor penambah ke koordinat mendatar dan vertikal titik berikut (x_tambah,y_tambah)
X_tambah=dx/step
Y_tambah=dy/step

7.    Buat loop mulai titik ke 1 sampai titik ke step
For k=1 to step
8.    Hitung koodinat titik berikutnya
X=x+x_tambah
Y=y+y_tambah
9.    gambar pikxel pada koordinat (x,y)
Catatan : koordinat x,y harus bulat (integer), sehingga hasil dari perhitungan diatas harus diinteger-kan
10.    Ulangi langkah ke 7, dan setetrrsnya sampai titik ke step 


Algoritma Midpoint untuk Penggambaran Garis

Algoritma midpoint merupakan algoritma pembuatan garis dan kurva dengan dasar operasi bilangan integer yang menonjolkan ciri kecepatan. Sehingga algoritma ini dapat dipakai sebagai algoritma pembuatan grafik yang menuntut kecepatan sebagai hal yang diutamakan. Pembahasan algoritma Midpoint dilakukan dengan mengasumsikan garis lurus dari kiri ke kanan, dan gadient antara 0 dan 1, sedangkan untuk lingkaran dengan mengasumsikan hanya sebagian lingkaran dengan sudut sebesar 45°, hal ini dilakukan untuk mempermudah penjelasan, sedangkan untuk kondisi yang lain dapat diderivasi dengan cara yang serupa. Untuk mendapatkan kinerja algoritma midpoint, dilakukan uji kecepatan komputasi dengan cara mengimplementasikan kedalam bahasa pemrograman C, dan melakukan perbandingan waktu komputasi, dengan algoritma yang menggunakan dasar komputasi bilangan riil, maupun algoritma lain yang telah banyak dikenal seperti algoritma dda dan algoritma bressenhan.

Algoritma midpoint dikembangkan oleh Pitteway pada tahun 1967. Pada gambar 1, titik abu-abu menyatakan posisi piksel, titik hitam menyatakan posisi piksel yang telah digambar. Berdasarkan piksel ke n yang telah digambar, diperlukan metode untuk menentukan piksel berikut yang akan digambar, karena penggambaran dilakukan dari kiri ke kanan, maka piksel berikutnya harus pada kolom n+1. Karena gradien diantara 0 dan 1, maka piksel berikutnya adalah pada posisi titik p atau titik q.
        Gambar 1. Garis Lurus

Persamaan garis lurus yang telah dinyatakan dalam persamaan (1) dapat dinyatakan dalam fungsi x,y berikut:
f(x, y) = ax + by + c = 0             (4)

Fungsi f(x,y) dalam persamaan (4), akan memberikan nilai 0 pada setiap titik yang terletak pada garis, dan bernilai positip pada setiap titik yang terletak dibawah garis, dan bernilai negatif pada setiap titik yang terletak diatas garis.
Maka untuk menentukan apakah titik P atau Q sebagai koordinat piksel berikutnya, maka dilakukan dengan cara menghitung nilai fungsi f(x,y) dalam persamaan (4) pada titik P dan titik Q . Jika fungsi f(x,y) tersebut memberikan nilai positif, maka piksel berikutnya adalah Q, sebaliknya piksel berikutnya adalah P.
g(x, y) = f(xn + 1, yn + 1/2)          (5)

Fungsi g(x,y) persamaan (5) merupakan variabel penentu, dengan mengevaluasi g(x,y) dapat ditentukan piksel berikutnya yang mana berdasarkan tanda plus atau minus dari hasil fungsi g(x,y).
Untuk mempercepat komputasi fungsi g(x,y), dilakukan dengan cara incremental berdasarkan nilai sebelumnya. Untuk setiap piksel, increment sederhana (DeltaG) dipakai sebagai variable penentu. Karena hanya ada 2 pilihan piksel pada setiap tahap, maka hanya ada 2 increment yang dapat digunakan. Hal ini dilakukan dengan cara pengurangan nilai g(x,y) yang berurutan dengan menggunakan persamaan (4) dan persamaan (5).
DeltaG = a * DeltaX + b * DeltaY (6)
Dimana DeltaX dan DeltaY adalah increment yang dipakai pada x dan y, yang bernilai 0 atau
1. Bila bergeser 1 piksel ke kanan :
DeltaG1 = a (7)
Bila bergeser 1 piksel ke kanan dan 1 piksel ke atas.
DeltaG2 = a + b (8)
Jadi nilai dari variable penentu dapat dihitung dari nilai sebelumnya dengan cara menambah dengan (a) atau (a+b). Algoritma untuk menggambar garis lurus dari (x1, y1) sampai (x2, y2) dilakukan dengan langkah-langkah sebagai-berikut:
1.  Gambar piksel pertama (x1,y1). Hitung variabel penentu dengan persamaan (3).
2. Tentukan tanda variabel penentu. Jika variabel penentu bernilai positif,        increment x dan y dan tambahkan (a+b) pada vaiabel penentu, sebaliknya increment    x dan y dantambahkan (a) pada variabel penentu.
3. Plot piksel pada posisi (x, y).
4. Ulangi langkah mulai langkah kedua, sampai piksel terakhir (x2,y2).

LINGKARAN
Kurva lingkaran dinyatakan dinyatakan dalam persamaan :
(x-xc) 2 + (y-yc) 2 = r 2 (9)
dimana :
(xc,yc) : koordinat titik pusat lingkaran
r         :  jari-jari lingkaran
Untuk menggambarkan piksel-piksel dalam kurva lingkaran, dapat digunakan sumbu x dari x = (xc-r) sampai x = (xc+r) sebagai parameter dan sumbu y sebagai hasil dari persamaan (10)
y = yc +- sqrt(r 2 - (x-xc) 2            (10)
*Angka 2 kecil dibelakang maksudnya adalah kuadrat.
Algoritma ini memerlukan waktu operasi yang besar, karena mengandung operasi bilangan riel perkalian maupun eksponential, dan menghasilkan posisi koordinat piksel yang tidak merata, karena terjadinya gaps yang disebabkan adanya perubahan gradient. Untuk menghindari posisi koordinat piksel yang tidak merata, koordinat piksel (x,y) dinyatakan dengan menggunakan koordinat polar dalam persamaan (11)
x = xc + r cos q                  (11a)
y = yc + r sin q                   (11b)
Persamaan (11) diatas mengandung operasi bilangan riel perkalian untuk mendapatkan koordinat piksel (x,y), untuk setiap nilai x, dari x = (xc-r) sampai x = (xc+r), operasi inilah yang perlu dihindari, karena operasi ini memerlukan waktu operasi yang besar.

Algoritma Midpoint
Komputasi untuk membuat kurva lingkaran dimulai dengan mengidentifikasi bagian-bagian dari lingkaran yang dapat ditentukan dengan menggunakan sifat simetri, hal ini dilakukan dengan cara membagai lingkaran dengan masing-masing mempunyai sudut sebesar 45°, sehingga dalam sebuah lingkaran dibagi menjadi 8 bagian. Sebagai contoh, digambarkan bagian dari lingkaran dari sudut 90° sampai 45°. Seperti pada algoritma midpoint untuk garis lurus, maka pada setiap tahapan, terdapat 2 koordinat piksel yang harus dipilih yaitu (x+1, y) atau (x+1, y-1).

Gambar 2. Lingkaran

Langkah berikutnya, adalah menyatakan persamaan lingkaran dan fungsi untuk menentukan variabel penentu. Persamaan lingkaran dengan pusat (0,0) dinyatakan dalam persamaan (12).
f(x, y) = x*x + y+y - r*r = 0                              (12)

Fungsi f(x, y) persamaan (12) akan bernilai positif jika titik (x,y) diluar lingkaran, dan bernilai negatif jika titik (x,y) didalam lingkaran. Fungsi untuk variabel penentu dan incrementdinyyatakan dalam persamaan (13), (14), dan (15).
g(x, y) = (x + 1)*(x + 1) + (y - 1/2)*(y - 1/2) - r*r     (13)
DeltaG1 = 2x + 3                                                      (14)
DeltaG2 = 2x - 2y + 5                                               (15)
Berbeda dengan nilai dari increment pada algoritma garis lurus yang bernilai konstan, pada kurva lingkaran, increment tidak konstan. Terlihat bahwa komputasi increment memerlukan operasi perkalian, tetapi operasi perkalian dapat diubah dengan cara komputasi nilai increment secara increment pula, sehingga diperlukan 2 komputasi increment dalam setiap piksel yang diproses.  Secara umum, kurva polinomial orde n memerlukan n level increment. Pada titik awal (x1,y1), komputasi variable penentu mempunyai bagian bilangan riel, sehingga operasi bilangan integer  tidak dapatdigunakan secara langsung. Dalam praktek hal ini diselesaikan dengan cara menambahkan nilai 1/4 pada variable penentu. Hal ini tidak mempengaruhi perubahan tanda bilangan, karena operasi yang dilakukan adalah operasi bilangan integer, sehingga menghasilkan operasi yang lebih cepat.

IMPLEMENTASI PERANGKAT LUNAK
Untuk mendapatkan hasil kerja dari suatu algoritma, maka algoritma pembuatan grafik garis lurus dan kurva lingkaran perlu diimplementasikan kedalam bahasa pemrograman dan dilakukan pengukuran waktu komputasi. Pada penulisan ini algoritma pembuatan grafik diimplementasikan kedalam bahasa pemrograman C, dengan menggunakan compiler Turbo C++.

HASIL PENGUKURAN
Pengukuran kecepatan komputasi pada semua algoritma menggunakan basis dibawah
ini, yang selengkapnya dapat dilihat pada program1.cpp. Perulangan sebanyak 10 kali
dilakukan dengan tujuan untuk mendapatkan ketelitian dari satuan pengukuran terkecil yaitu sebesar 1/100 detik, satuan yang mampu diberikan oleh bahasa pemrograman C. Pengukuran dilakukan dengan berbagai ukuran panjang garis, untuk mengetahui pengaruh waktu komputasi perintah-perintah yang ada di dalam perulangan sepanjang grafik, maupun pengarus waktu komputasi perintah yang ada sebelumnya.

Panjang garis atau banyak piksel dalam garis lurus sangat berpengaruh terhadap perbandingan performance antara sebuah algoritma dengan algoritma yang lain, hal ini disebabkan adanya perbedaan waktu operasi yang berada didalam perulangan sepanjang pembuatan piksel, dan waktu operasi yang berada pada sebelumnya. Panjang jari-jari dalam lingkaran tidak berpengaruh terhadap perbandingan performance antara sebuah algoritma dengan algoritma yang lain, hal ini menunjukkan perbandingan waktu operasi yang berada didalam perulangan sepanjang pembuatan piksel, dan waktu operasi yang berada pada sebelumnya berimbang.

Anggota kelompok :

1.ALFA MARLIN (10108166)

2.BERNADETH GRESIANA (10108418)

3.NABIYURRAHMAH (11108395)

4.SHINTA AMBARWATY (11108820)

5.SITI ANDINI (11108842)

6.SRI WAHYUNI (11108866)

7.TITIK ERMAWATI (12108340)




Senin, 04 Oktober 2010

PERBANDINGAN 2 DIMENSI (2D) DAN 3 DIMENSI (3D) DALAM GRAFIK KOMPUTER

Grafik komputer bukan merupakan barang baru bagi dunia komputerisasi. Sejarah grafika telah dimulai sejak jaman dulu kala, bahkan Leonardo Da Vinci telah mampu menghasilkan lukisan 3D di jamannya. Grafik komputer ada yang berbentuk 2 dimensi, 3 dimensi, dan 4 dimensi.

Perbedaan ketiganya akan coba kami bahas disini.

2 Dimensi (2D)
Grafik komputer 2 dimensi yang lebih dikenal dengan 2D atau bidang adalah bentuk dari benda yang memiliki panjang dan lebar. Penggambarannya pada layar (monitor) dilakukan dengan berpatokan pada titik koordinat sumbu x (datar) dan sumbu y (tegak). Koordinat tersebut dihitung mulai dari sudut kiri atas layar. Semakin ke kanan, nilai koordinat x semakin bertambah. Semakin ke bawah, nilai koordinat y semakin bertambah. Besarnya nilai koordinat ini dihitung dalam satuan pixel.

Agar dapat tampil dengan sempurna, gambar yang akan ditampilkan dengan teknik ini harus memiliki nilai koordinat x dan y minimum 0 dan maksimum sebesar resolusi yang digunakan.

Penerapan 2 dimensi 

Animasi

Animasi komputer adalah seni menghasilkan gambar bergerak melalui penggunaan komputer dan merupakan sebagian bidang komputer grafik dan animasi. Animasi pertama kali diperkenalkan oleh Peter Roget pada tahun 1824. Animasi ini yang paling akrab dengan keseharian kita. Biasa juga disebut dengan film kartun. Kartun sendiri berasal dari kata Cartoon, yang artinya gambar yang lucu.
Film kartun yang termasuk dalam kategori 2D ini adalah
Looney Tunes            Doraemon            Brother Bear
Pink Panther                Lion King            Spirit,
Tom and Jerry            Mulan                ScoobyDoo

Game

Sekitar tahun 1970an ditemukan konsul game (console game) yang membuat game dengan grafik dua dimensi muncul ke permukaan.
Game 2 dimensi dapat dikenali berdasarkan ruangnya yaitu hanya ada sumbu x dan sumbu y (hanya 2 sisi). Penggambarannya bisa berdasarkan bitmap maupun vector. Untuk pembuatan animasinya seperti melompat, berlari, berjalan, kita harus membuat gambar satu persatu, yang nanti apabila digerakkan bergantian secara cepat akan seperti sebuah gambar yang bergerak, hal ini dinamakan frame.

Kerealisasian gerakan ditentukan dari gambar yang dibuat, jumlah gambar(frame) yang digunakan, serta hitungan gambar per detik (frame per second ( semakin tinggi hitungan gambar per detik maka semakin mulus gerakan yang akan dihasilkan)).

Beberapa game yang terkenal dengan grafik 2 dimensinya adalah:
Pong : game yang dibuat berdasarkan permainan tenis meja ini adalah game bergrafik dua dimensi yang pertama yang bisa dimainkan oleh dua orang, game ini terdiri dari 2 buah pemukul dan 1 bola virtual. Tujuan dari game ini adalah sama dengan tenis meja dimana para pemain harus memukul bola secara bergantian hingga salah satu tidak dapat memukul (mengenai) bola tersebut.






 Space invader: merupakan game arcade bergrafik dua dimensi pertama kali yang dibuat pada tahun 1978 oleh Tomoshiro Nishikado. Dimana tujuan game ini adalah menembak jatuh kapal musuh yang berupa pesawat alien di setiap levelnya. Sampai sekarang banyak yang mengadopsi gameplay dari permainan ini. Hal inilah yang membuktikan bahwa game akan menarik jika gameplay yang diciptakan menarik dibandingkan dengan grafik game itu sendiri.



Legend Of Zelda : ini adalah game RPG dua dimensi yang pertama kali dapat melakukan save data, sehingga user tidak perlu mengulang lagi permainan dari awal setiap mematikan console gamenya tapi dapat memulai dari tempat dimana ia menyimpan data game tersebut. Game ini dibuat oleh Shigeru Miyamoto, beliau juga menciptakan game arcade terkenal lainnya yaitu Donkey Kong dan Super Mario Bros.




3 Dimensi

Grafik komputer 3 dimensi yang dikenal dengan 3D atau ruang adalah bentuk dari benda yang memiliki panjang, lebar, dan tinggi. Grafik 3 Dimensi merupakan teknik penggambaran yg berpatokan pada titik koordinat sumbu x(datar), sumbu y(tegak), dan sumbu z(miring). Representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Tiga Dimensi(3D) biasanya digunakan dalam penanganan grafis. 3D secara umum merujuk pada kemampuan dari sebuah video card (link). Saat ini video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam video card itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang lebih realistis dalam memainkan game komputer.

Grafik komputer 3D juga merupakan representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Hasil ini kadang kala ditampilkan secara waktu nyata (real time) untuk keperluan simulasi. Secara umum prinsip yang dipakai adalah mirip dengan grafika komputer 2D, dalam hal: penggunaan algoritma, grafika vektor, model frame kawat (wire frame model), dan grafika rasternya.

Grafik komputer 3D merupakan suatu grafis yang menggunakan 3 titik perspektif dengan cara matematis dalam melihat suatu objek, dimana gambar tersebut dapat dilihat secara menyeluruh dan nyata. Untuk perangkat-perangkat lunak yang digunakan untuk grafik komputer 3D ini banyak bergantung pada aloritma-algoritma.
Grafika komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini lebih menekankan pada representasi matematis untuk objek 3 dimensi. Data matematis ini belum bisa dikatakan sebagai gambar grafis hingga saat ditampilkan secara visual pada layar komputer atau printer. Proses penampilan suatu model matematis ke bentuk citra 2 D biasanya dikenal dengan proses 3D rendering.

Penerapan 3 dimensi
 
Animasi


Animasi 3D visual adalah pengembangan dari animasi 2D. Dengan animasi 3D, karakter yang diperlihatkan semakin hidup dan nyata, mendekati wujud manusia aslinya. Perkembangan teknologi dan komputer membuat teknik pembuatan animasi 3D semakin berkembang dan maju pesat.
Semenjak Toy Story buatan Disney (Pixar Studio), maka berlomba-¬lombalah studio film dunia memproduksi film sejenis. Bermunculanlah, Bugs Life, AntZ, Dinosaurs, Final Fantasy, Toy Story 2, Monster Inc., hingga Finding Nemo, The Incredible, Shark Tale. Cars, Valian. Kesemuanya itu biasa juga disebut dengan animasi 3D atau CGI (Computer Generated Imagery).

Game
Sejak ditemukannya teknik cel-shading, model 3D bisa ditampilkan menjadi mirip gambar 2D. Akibatnya banyak game lebih memilih fitur ini daripada grafik 2D biasa. Jika teknik cel-shading tersebut diterapkan ke dalam sebuah prototipe game engine sebagai salah satu fiturnya, maka prototipe game engine yang dibuat bisa menangani 2 macam tipe grafik, yaitu 3D biasa dan cartoon-look 3D. Pembuatan prototipe engine ini bertujuan untuk memudahkan pembuatan game 3D yang dapat dijalankan pada komputer berbasis Windows. Pembuatan engine dilakukan dengan menggunakan program Microsoft Visual C++ .NET dan SDL 1.2.7 dengan OpenGL sebagai sistem grafisnya. Dari hasil pengujian diketahui bahwa prototipe engine ini berhasil melakukan fungsi-fungsi dasar yang diperlukan sebuah 3D game engine. Fungsi-fungsi itu antara lain adalah kemampuan manajemen memori sederhana, logging, profiling, penanganan input dari analog joystick, rendering dan animasi model 3D, loading custom game map, penanganan suara, penanganan kamera dan fitur cel-shading.

Contoh game berjenis 3D yang sekarang digemari orang adalah Line Age II, Avatar,Hal yang bisa dibuat di 3D :
  1.  Architecture Design : 3D sangat membantu dalam menuangkan ide-ide kreatif design dengan sangat cepat dan mudah karena dengan 3D Anda akan dapat melihat bentuk rancangan bangunan Anda dari segala sisi pandangan. Disamping itu 3D dapat memberikan texture maupun lighting menyerupai seperti kondisi aslinya kelak bangunan tersebut terbangun.
  2. Interior Design : Sama halnya seperti Arsitek, designer Interior pun juga akan sangat terbantu dengan teknologi 3D. Dengan 3D, setiap ruang yang dirancang akan dapat divisualkan mendekati ruang yang sebenarnya. Anda dapat menata furniture, elemen dekoratif interior lainnya seperti lukisan, foto, patung dan lainnya dengan sangat leluasa dan mudah. 
  3. Landscape Design : Dalam mewujudkan design landscape pun, baik Anda seorang Arsitek Landscape ataupun Visualizer, 3D akan mampu menvisualkan secara jelas dan detail sekalipun. Penataan kontur tanah, vegetasi, perkerasan, gazebo, kolam maupun elemen landscape yang lainnya, akan membuat pekerjaan design Anda menjadi mudah dan menyenangkan.
  4. Cartoon Design : Kalau dulu kartun (cartoon) dibuat dengan sketsa tangan lalu meningkat ke aplikasi software 2D, sekarang kartun menapaki era baru dengan teknologi 3D. Trend ini semakin meningkat, dikarenakan dengan 3D, cartoon akan semakin tampak hidup dan nyata, beratraksi menghibur penonton yang melihatnya. Aplikasi 3D saat ini, sudah semakin memudahkan para designer dan animator, bahkan yang pemula sekalipun untuk membuat kartun 3D, karena sudah banyak fitur-fitur penunjang pembuat kartun yang disediakan oleh setiap aplikasi 3D.
  5. Logo Design : Tidak hanya cartoon, design dan animasi logo pun saat ini sudah memasuki era 3D. Artinya, logo-logo saat ini sudah banyak yang ditampilkan dengan bentuk dan tampilan real 3D. Sehingga logo terlihat lebih hidup, menarik dan tampil lebih memikat. Aplikasinya dapat dijumpai dibanyak hal, seperti : dibidang broadcast/tv, advertising, perkantoran, industri, branding/merk, percetakan, dan sebagainya. Intinya setiap perusahaan (company) dan juga produk-produk sangat membutuhkan logo sebagai citra visual mereka dan 3D merupakan solusi tepat dalam menvisualkannya.
  6. Stage Design : Design panggung (stage), biasanya banyak diperuntukkan untuk event-event besar seperti : pernikahan (wedding), pameran, expo, seminar, workshop, symposium, workshop, pelatihan, peresmian (launching), dan lain sebagainya. Event-event tersebut sangat membutuhkan keberadaan panggung sebagai sarana utama maupun pendukungnya. Sehingga tentu membutuhkan sebuah design panggung yang bagus dan menarik yang akan menunjang bagi suksesnya sebuah event/acara yang digelar. Terlebih bila event/acara tersebut menghadirkan tokoh-tokoh penting semisal : pejabat negara, pejabat daerah, tamu asing (expat), selebriti, tokoh masyarakat ,dan sebagainya. Dengan demikian, visualisasi 3D menjadi sangat penting dan dibutuhkan dalam menampilkan output design stage yang optimal.
  7. Product Design : Product design, mencakup berbagai barang seperti : product industri, pecah belah, mainan, computer/it, alat komunikasi dan sebagainya, telah menjadikan 3D sebagai standar dalam menvisualkan design terbaru dari setiap produk yang akan dirilis dipasaran.
  8. Stand Design : Design stand biasanya berkorelasi dan berhubungan dekat dengan sebuah event, walaupun tidak semua event menampilkan stand. Untuk event-event besar yang juga menampilkan stand, umumnya akan membutuhkan 3D dalam menvisualkan bentuk dan design stand yang menarik dan tampil bagus nantinya
  9. Game Design : Saat ini hampir semua game sudah ditampilkan dalam bentuk 3D. Ini dimaksudkan agar game dapat tampil lebih atraktif, hidup dan memikat hati para gamer. Dengan 3D, para gamer akan mendapatkan sensasi bermain game yang luar biasa, yang berdampak pada semakin meningkatnya minat, animo maupun antusiasme dalam memainkan game.
  10. Furniture Design : Dibidang furniture design sudah banyak yang menggunakan teknologi 3D dalam merancang dan menampilkan bentuk dari suatu design furniture terbaru. Pembuatan design yang detail dan rumit sekalipun dapat diselesaikan dengan pendekatan aplikasi 3D. Begitu juga dengan penerapan material yang dapat mendekati material aslinya sehingga design akan tampil lebih real dan hidup.
Dari ulasan di atas, dapat disimpulkan bahwa perbandingan 2D dan 3D antara lain dalam hal :
  • Perbedaan dari animasi 2D dan 3D visual adalah dilihat dari sudut pandangnya. Animasi 2D menggunakan koordinat x dan y, sedangkan animasi 3D visual menggunakan koordinat x, y dan z yang memungkinkan kita dapat melihat sudut pandang objek secara lebih nyata.
Contoh gambar 3 dimensi :


Anggota kelompok :

1.ALFA MARLIN (10108166)

2.BERNADETH GRESIANA (10108418)

3.NABIYURRAHMAH

4.SHINTA AMBARWATY (11108820)

5.SITI ANDINI

6.SRI WAHYUNI (11108866)

7.TITIK ERMAWATI (12108340)