Monday, 9 March 2015

Komputer Grafis 5

Transformasi Geometri (Rotasi)

Hai semua... Kembali pada komputer grafis untuk pertemuan 5. Pada pertemuan ini, masih dibahas mengenai transformasi geometri. Jika pada pertemuan 4 yang lalu telah dibahas transformasi geometri translasi dan scalling, maka dalam pertemuan 5 ini akan dibahas mengenai transformasi geometri rotasi. Mendengar kata “rotasi”, yang ada dalam pemikiran pada umumnya adalah berputar. Begitu pula pada komputer grafis. Rotasi di sini artinya objek yang telah kita gambarkan ketika dirotasi akan berputar. Tetapi berputar di sini maksudnya adalah seperti bumi mengelilingi matahari. Jadi, sebuah objek yang dilakukan transformasi rotasi, diproses terhadap titik (0,0) jadi dapat kita bayangkan sebelum kita membuat praktikumnya, bahwa objek nantinya akan berputar dengan titik pusat (0,0).

Berikut ini adalah rumusan untuk mencari hasil rotasi pada masing-masing titik koordinat (X dan Y).



Nilai X dan Y yang dikalikan dengan Sin dan Cos pada rumus di atas bukanlah X dan Y yang setelah dirotasi atau tidak mengambil nilai dari X dan Y sebelumnya. Tetapi diambil dari X dan Y pada titik awal yang sebelum dirotasi. Untuk lebih jelasnya, akan kita lihat contoh pada grafik di bawah ini:



Dari grafik di atas, dapat kita lihat bahwa yang berwarna biru adalah titik awal P(2,2), yang akan dirotasikan dengan sudut sebesar 30 derajat. Rotasi pasti akan berlawanan dengan jarum jam. Bisa didapatkan titik P’(1,3) yang berwarna merah adalah dengan perhitungan sebagai berikut:


Dari hasil perhitungan di atas, didapatlah titik P’(1,3) .

Penggunaannya dalam delphi adalah sebagai berikut ini:


Namun, jika dilihat cara penulisan di atas masih belum tepat, karena jika dalam pemrograman, untuk menghitung Y[i], digunakan X[i], maka X[i] yang digunakan adalah X[i] yang di atas Y[i], yaitu X[i] yag sudah dikalikan dengan Cos(sudut_degree), sedangkan tadi kita sudah membahasnya bahwa X dan Y yang digunakan adalah X dan Y dari titik semula. Kita dapat mengubah sedikit dari kode program di atas. Hanya menambahkan 1 baris saja pada kode program tersebut agar X[i] yang digunakan pada Y[i] bukanlah X[i] yang bar dihitung. Berikut adalah yang harus ditambahkan untuk membedakan X[i]:


Kita lihat dari kode program di atas, yang ditambahkan hanya sebuah variabel penampung yang menampung nilai dari X[i]. variabel simpan inilah yang menampung nilai X[i] awal. Untuk menghitung Y[i], digunakan variabel simpan agar yang dikalikan adalah nilai X[i] semula, buka nilai X[i] yang telah dihitung rotasinya. Dan satu lagi yang perlu diperhatikan adalah bahwa pada delphi, sudut yang diambil adalah masih dalam bentuk radian, sedangkan secara umum orang lebih familiar dengan derajat atau degree. Untuk itu, harus dihitung atau diubah dulu ke dalam satuan degree dengan mengalikan sudut radian dengan pi dan membaginya dengan 180. Dalam delphi sudah disediakan konstanta untuk nilai pi, jadi kita hanya perlu memanggil variable pi tanpa hars mendeklarasikan konstanta pi tersebut. Kode program di atas sudah ditulis juga cara mengubah radian ke degree. Untuk variabel sudut adalah yang masih dalam bentuk radian. Variabel sudut_degree adalah variabel untuk menampung hasil konversi dari radian ke degree, yaitu dengn cara: sudut*pi/180.

Saya rasa cukup untuk penjelasan yang menjadi dasar dari transformasi geometri rotasi pada pertemuan ini. Untuk lebih lengkapnya kita akan langsung membahas cara membuat objek bintang yang kita buat pada pertemuan sebelumnya bisa dirotasikan. Untuk awalnya sama dengan pembahasan pertemuan sebelumnya, yang ditambahkan hanya pembuatan kode program untuk rotasi. Tampilan user interface untuk pembahasan kali ini adalah sebagai berikut:


Tampilan di atas tidak jauh berbeda dengan tampilan yang dibuat pada pertemuan 4 yang lalu. Hanya ditambahkan 1 buah label Sudut, 1 buah edit box sudut, dan 1 buah button untuk rotasi.

Untuk melihat pembahasan mengenai pembuatan tampilan di atas dapat dilihat pada pertemuan 4 yang lalu. Pada pertemuan ini hanya akan dibahas mengenai pembuatan kode program untuk button rotasi, di mana button rotasi inilah yang digunakan untuk memutar objek berlawanan jarum jam.penulisan kode program untuk button rotasi adalah seperti berikut ini:


Dari gambar kode program di atas, dapat kita lihat perbedaan kedua for yang dituliskan.

Tampilan saat program dijalankan adalah sebagai berikut:


Dan tampilannya saat dirotasi dengan sudut sebesar 10° adalah sebagai berikut:


Saat button rotasi diklik 1 kali lagi:


Untuk perubahan selanjutnya dapat dipraktekan sendiri sampai posisi bintang kembali ke posisi semula.

Nah, sekian dulu ya untuk pembahasan komputer grafis kali ini mengenai rotasi. Nantikan lagi pembahasan-pembahasan selanjutnya ya.. 
Semoga bermanfaat.. ^.^

Thx untuk yang udah baca blog ini.. 

Monday, 2 March 2015

Komputer Grafis 4

Transformasi Geometri 2D (Translasi & Scalling)

Kembali dalam pembahasan komputer grafis. Pertemuan ini merupakan pertemuan yang keempat. Pada pertemuan keempat ini, akan dibahas mengenai Transformasi Geometris. Dalam transformasi geometris, ada 3 hal yang wajib kita tahu yaitu translasi (pergeseran), scalling (penskalaan), dan rotasi (perputaran). Pada pertemuan kali ini hanya akan dibahas mengenai translasi dan scalling. Untuk rotasi akan dibahas pada pertemuan selanjutnya. Untuk yang pertama kita akan membahas mengenai transformasi geometri untuk translasi (pergeseran).


Mendengar yang namanya transformasi, jika terdapat satu titik lau titik tersebut berpindah ke tempat lain, maka titik tersebut dikatakan “bergeser”. Transformasi pasti berpindah tempat. Begitu pula dengan translasi yang merupakan bagian dari transformasi geometri. Jadi karena bergeser maka berarti titik itu mengalami transformasi geometri. Pergeseran yang kita ketahui adalah searah dengan sumbu X dan serah dengan sumbu Y. lebih jelasnya dapat kita lihat pada gambar di bawah ini:


Kita lihat pada gambar di atas, titik semula adalah yang berwarna biru, P(2,2). Titik tersebut mengalami pergeseran yang ditandai dengan titik berwarna hijau, yaitu pergeseran terhadap sumbu X dan sumbu Y. Titik semula P(2,2) mengalami pergeseran terhadap sumbu X dan sumbu Y sehingga bergeser ke titik P’(5,4) yang berwarna merah. Jadi titik P mengalami pergeseran sumbu X sebanyak 3 dan sumbu Y sebanyak 2. Banyaknya pergeseran pada sumbu X itulah yang disebubt dengan TX, dan banyaknya pergeseran pada sumbu Y disebut TY. Dalam komputer grafis, pergeseran ini harus dihitung satu-satu yaitu sumbu X dan sumbu Y dihitung secara tersendiri. Sehingga diperoleh rumus untuk menghitung sumbu X setelah bergeser adalah X’=X+TX dan untuk sumbu Y adalah Y’=Y+TY. Pada contoh gambar di atas, maka:

X’=X+TX  =>  X’=2+3  =>  X’=5

Y’=Y+TY  =>  Y’=2+2  =>  Y’=4

Setelah melihat contoh pergeseran pada gambar di atas, maka diperoleh fenomena dari TX dan TY, yaitu:

Implementasi pergeseran dalam program delphi adalah sebagai berikut ini:

X’ dan X yang kita maksudkan jika pada program adalah variabel yang sama dengan prinsip X yang sekarang adalah X yang sebelumnya ditambah dengan TX. Jadi jika pada penjelasan teori dijelaskan X’=X+TX, seolah-olah X’ dan X adalah variabel yang berbeda, namun sebenarnya X’ dan X adalah variabel yang sama. Sama halnya dengan Y’ dann Y. Selanjutnya sebelum kita masuk ke pembahasan praktikum lab, kita akan membahas sedikit mengenai teori dari penskalaan atau Scalling.

Penskalaan/Scalling termasuk dalam transformasi geometris. Mengapa? Jawabannya adalah termasuk transformasi geometris karena ketika sebuah gambar atau garis diperbesar sebenarnya kedua atau lebih titiknya mengalami pergeseran koordinat yang membuat garis atau gambar tersebut lebih besar atau lebih kecil dari aslinya. Pada pergeseran, operand yang kita gunakan adalah penjumlahan, sedangkan dalam penskalaan operand matematika yang ita gunakan adalah kali. Hal itu biasa didengar saat kita ingin memperbesar atau memperkecil gambar.pertanyaannya adalah, “berapa kali?”. Lebih jelasnya coba kita lihat gambar di bawah ini:


Pada gambar di atas, titik-titik yang membentuk garis biru merupakan ukuran awal atau asli. Sedangkan yang berwarna merah adalah hasil dari perbesaran sebanyak 2 kali. Jika pada translasi digunakan TX dan TY, maka dalam scalling yang digunakan adalah SX dan SY. Dari gambar di atas, hasil perbesaran tidak tepat sejajar dengan garis biru/garis awalnya. Terlihat bahwa garis tersebut menngalami perpindahan titik juga. Oleh arena itulah, scalling/penskalaan juga termasuk dalam golongan transformasi geometri. Rumus yang diperoleh dari penskalaan adalah: untuk sumbu X’=X*SX dan  untuk sumbu Y adalah Y’=Y*SY. Sama halnya dengan translasi, pada scalling perpindahan setiap titik juga dihitung terpisah untuk sumbu X dan sumbu Y.

Jika pada translasi terdapat fenomena TX dan TY, pada Scalling juga terdapat fenomena, yaitu fenomena SX dan SY. Seperti apa fenomena tersebut, kita lihat di bawah ini:


Implementasi Scalling dalam delphi dapat ditullis seperti berikut:


X’ dan X yang kita maksudkan jika pada program adalah variabel yang sama dengan prinsip X yang sekarang adalah X yang sebelumnya dikali dengan SX. Jadi jika pada penjelasan teori dijelaskan X’=X*SX, seolah-olah X’ dan X adalah variabel yang berbeda, namun sebenarnya X’ dan X adalah variabel yang sama. Sama halnya dengan Y’ dan Y. penjelasan ini sama dengan penjelasan pada translasi.

Selanjutnya kita akan langsung membahas kegiatan yang dilakukan saat praktikum komputer grafis pada pertemuan 4 ini. Pada pertemuan ini masih sama dengan pada pertemuan 3. Jika pertemuan 3 kita membuat 3 buah bangun datar, yaitu segitiga, bintang lima, dan segi lima, maka pada pertemuan 4 ini kita hanya membuat satu buah bangun yaitu bintang lima. Tidak hanya itu, penjelasan di atas sudah dibahas sedikit mengenai teori translasi dan scalling. Pastinya dalam praktikum kali ini akan diterapkan bagaimana kita membuat bangun bintang lima tersebut bergeser dan bisa diperbesar atau diperkecil.

Yuk, langsung saja kita lihat pembahasan mengenai praktikum transformasi geometri 2D ini.

Step 01: Siapkan Lembar Kerja Pada Delphi

Buka program delphi dan simpan unit dengan nama Utama dan project dengan nama Prak04:

Step 02: Masukkan Objek Yang Dibutuhkan

Masukkan Objek-Objek seperti pada gambar berikut:

Buat 8 buah objek label dan Edit untuk X1, Y1, X2, Y2, TX, TY, SX, dan SY. Buat 5 buah objek button untuk button menggambar, hapus, keluar, translasi, dan scalling.

Step 03: Membuat Garis Bantu Pada Image1


Pada bagian Var, dideklarasikan tx, ty, sx, dan sy dengan tipe double untuk translasi dan scalling.

Step 04: Membuat Kode Program Untuk Menggambar Bintang Lima


Step 05: Membuat Kode Program Untuk Menghapus Gambar



Step 06: Membuat Kode Program Untuk Button Translasi


Terlihat bahwa pada button translasi kita tidak usah menggambar bintang lagi, yang diperlukan hanya membuat perulangan dengan menjumlahkan X dan Y dari X dan Y yang semula sudah digambar bintangnya. Sebelumnya, paling awal kita panggil button hapus terlebih dahulu sehingga bintang yang semula kita gambar tidak muncul lagi. Namun, jika ingin menggambar lagi juga boleh saja, hasilnya akan sama saja. Penulisannya seperti di bawah ini:


Kita lihat, sama hasilnya hanya saja pada kode program kedua ini kita menggambar ulang dengan menambahkan langsung setiap array dari bintang dengan TX dan TY, lalu pada saat pengulangan kita mengulang sama seperti saat menggambar bintang. Kedua cara penulisan ini menghasilkan hasil yang sama. Hanya saja, sepertinya utuk cara yang pertama dirasaka lebih efektif dibandingkan cara kedua ini.


Selanjutnya kita akan membahas mengenai pembuatan kode program untuk Scalling. Penulisan pada scalling juga sama ada dua cara seperti translasi.

Step 07: Membuat Kode Program Untuk Button Scalling


Penulisan cara kedua adalah seperti berikut:


Step 08: Membuat Kode Program Untuk Keluar Dari Program


Step 09: Compile/Run Program Dan Hasilnya Saat Translasi


Berikut ini tampilan saat button Translasi diklik:


Step 10: Compile/Run Program Dan Hasilnya Saat Scalling


Pada gambar di atas, posisi bintang sengaja diletakkan di tengah dengan melakukan translasi terlebih dahulu agar pada gambar berikutnya ini lebih terlihat kalau bintang akan membesar dari ukuran semula. Berikut ini tampilan saat button Scalling diklik:


Demikian pembahasan komputer grafis 4 ini. Semoga bisa bermanfaat.. sampai bertemu lagi di pembahasan selanjutnya ya.. ^.^

Monday, 16 February 2015

Komputer Grafis 3

Kembali pada pembelajaran mata kuliah Komputer Grafis. Pembelajaran kali ini merupakan pertemuan ketiga dari mata kuliah Komputer Grafis. Pada pertemuan ketiga ini, dalam teori, mahasiswa mendapatkan pembelajaran sedikit mengenai struktur data yaitu struktur data untuk komputer grafis. Perlu diketahui, struktur data sangat diperlukan dalam dunia programming. Untuk itu, disarankan agar mahasiswa dapat menguasai yang namanya struktur data. Struktur data yang digunakan untuk komputer grafis ini tidak terlalu sulit sampai pada linked list dan sebagainya. Struktur data yang digunakan pada komputer grafis ini hanya struktur data sederhana. Sebagai contoh, pada pertemuan yang lalu kita pernah membuat bangun segitiga. Dalam bangun segitiga kita memerlukan 3 titik. Misalkan P1, P2, dan P3. Seperti gambar di bawah ini:


Dalam deklarasi delphi, 3 titik tersebut dapat dituliskan deklarasinya dengan cara:
Var
            P1x, P1y, P2x, P2y, P3x, P3y : integer;

Jika harus menuliskan proses penggambaran garis agar membentuk segitiga seperti gambar tersebut, untuk 3 titik kita masih bisa menggunakan cara seperti pada pertemuan yang lalu yaitu seperti berikut ini:

Image1.Canvas.MoveTo(P1x,P1y);
Image1.Canvas.LineTo(P2x,P2y);
Image1.Canvas.LineTo(P3x,P3y);
Image1.Canvas.LineTo(P1x,P1y);

Penulisan kode di atas adalah permisalan kita secara cepat menggambarkan ketiga titik menjadi segitiga. Yang ditulis di dalam kurung bukan titik yang sebenarnya melainkan hanya memberitahu alur kita menggambar. Untuk titik koordinatnya bisa dilihat pada pertemuan yang lalu. Kembali ke pembahasan semula, jika kita menggambar segitiga, kita masih bisa menggunakan model penulisan seperti di atas. Bagaimana jika yang ingin ita gambar adalah gambar bintang dengan 5 titik? Tentu masih bisa kita tuliskan 6 baris kode program seperti pada segitiga. Tetapi bagaimana jika titik yang harus digambarkan mulai terhitung dalam kategori yang banyak? Misalkan 26 titik, apakah menulis kode program satu-satu adalah cara efektif? Tentunya itu bukan hal yang efektif bagi programmer jaman sekarang ini.

Struktur data yang digunakan untuk komputer grafis antara lain dapat menggunakan array ataupun record. Akan lebih mudah jika kita dapat menguasai penggunaan record. Jika kita hanya menggunakan array, maka untuk membuat dua buah bangun atau lebih kita harus mendeklarasikan array untuk setiap bangun. Untuk lebih jelasnya, di bawah ini merupakan contoh penulisan program tidak dengan array dan menggunakan deklarasi array untuk menuliskan program bangun datar bintang 5:


Penulisan kode program tanpa array:


Penulisan kode program tanpa menggunakan array untuk membuat bintang seperti pada gambar di atas kurang lebih seperti itu. Selanjutnya kita akan mencoba menggunakan array dan record aray.

Berikut ini contoh penulisan kode program untuk membuat bintang dengan array:


Seperti itulah penulisan kode program dengan array, namun jika kita lihat penulisan seperti di atas masih terlalu banyak membuang baris, masih bisa diatur penulisan kode programnya. Kita move titik pertaman penulisan ke titik yag ke 5, dengan begitu kita tidak perlu memberikan LineTo pada akhir kode program setelah looping for. Penulisannya seperti berikut ini:


Dengann penulisan seperti di atas, kita menghemat 1 baris dan lebih efektif lagi dibandingkan kode program sebelumnya. Jika dibandingkan dengan penulisan tanpa array, maka penulisan kode program dengan menggunakan struktur data array akan jauh lebih efektif. Perbedaan tersebut pasti akan dirasakan saat kita membuat program dengan menggunakan struktur data array dengan tanpa struktur data array. Jika masih membuat bintang 5 mungkin tidak menggunakan array atau record masih bisa, tetapi jika yang ingin kita buat terdiri atas 30an titik. Bagaimana cara kita menuliskan kode programnya? Masihkah kita mau menuliskan kode program yang berulang sama tetapi tanpa menggunakan pengulangan? Tentu jika ditulis satu-satu akan sangat membuang waktu.

Berikut ini akan dibahas sedikit lagi penulisan dengan menggunakan record.

Penulisan kode program dengan menggunakan record awalnya agak membingungkan, tapi cara ini sangat membantu kita ketika dalam satu program kita harus membuat beberapa bangun, jika membuat 2 bangun masih bisa menggunakan deklarasi array saja, namun jika bangun yang dibuat mencapai 5 buah bangun, maka akan lebih mudah bagi kita untuk menggunakan record alasannya karena untuk membuat 5 buah bangun kita hanya perlu mendeklarasikan variabel untuk masing-masing array dari 1 buah record yang telah dibuat. Sepertinya penjelasan ini sedikit membingungkan. Untuk itu, coba kita lihat terlebih dahulu contoh penulisan record untuk 1 bangun 2 Dimensi:


Dari gambar di atas, TBangun merupakan suatu record. Untuk menulis record, harus didahulukan penulisan Type. Record yang kita kenal pada delphi konsepnya sama dengan Struct yang ada pada bahasa pemrograman C++. Variabel X dan Y adalah field dari record TBangun. Sedangkan untuk variabel bintang yang ada dalam Var, merupakan variable array yang dibentuk dari record TBangun. Dan cara mengakses variabel serta atribut record/fieldnya seperti yang ada pada gambar di atas yaitu: bintang[“indeks ke berapa”].”NamaField” := “Nilai”. Itu adalah format penulisan untuk mengisi nilai dari variabel bintang dari record TBangun. Penulisan pada programnya tidak memerlukan tanda kutip.

Yang saya maksudkan di atas bahwa menggunakan record lebih mempermudah kita dalam membuat lebih dari satu bangun dalam satu program adalah kita hanya perlu mendeklarasikan satu type record, selanjutnya kita hanya perlu mendeklarasikan variabel array untuk tiap bangunnya. Jadi setiap array tidak dideklarasikan titiknya/fieldnya karena field itu yang menjadi titiknya sudah dideklarasikan sebagai record. Masih membingungkan? Mari kita lihat gambar di bawah ini:


Kita lihat pada gambar di atas, kode program deklarasi variabel segitiga sebagai array dari record TBangun. Itu yang saya maksudkan lebih mudah untuk membuat banyak model bangun datar dengan hanya mendeklarasikan satu type record. Banyak bangun yang bisa dibuat dengan field yang sama. Segitiga bisa langsung mengakses X dan Y yang ada pada record TBangun. Cara mengaksesnya sama dengan variabel bintang. Penulisannya seperti di bawah in:


Untuk lebihh memperjelas pemahaman kita semua, langsung saja mulai saya bahas latihan yang dibuat saat praktikum pada pertemuan 3 yaitu struktur data untuk komputer grafis dalam bangun 2 dimensi. Seperti biasa kita siapkan program delphi kita dan save Unit dengan nama Utama dan project dengan nama Prak03.

Step 1: Siapkan tampilan seperti berikut ini:


Pada pertemuan tiga ini sudah tidak dibahas lagi bagaimana cara membuat garis bantu pada image dan untuk membuat image tersebut seperti gambar di atas ada di mana. Untuk mengetahui letak objek image dan cara membuat garis bantu lebih detailya silahkan baca pada pertemuan dua yang lalu.

Step 2: Buat garis bantu untuk image seperti tampilan di bawah ini:


Kode Program:


Step 3: deklarasi record, variabel dan variabel array dari record


Step 4: menulis kode program untuk prosedur OnClick pada button segitiga


Pada kode program yang diberi tanda, jangan lupa untuk menjumlahkan titik x dengan variable garis bantu A dan untuk titik y yaitu variabel garis bantu B dikurangi titik y. Untuk apa? Untuk konversi dari cartesius ke delphi (pembahasan ada pada pertemuan 2 - Komputer Grafis 2).

Berikut ini adalah hasil tampilan button segitiga saat dicompile:


Dari gambar di atas, dapat kita lihat ketika tombol segitiga di klik seetlah user memasukkan angka pada X1, Y1, X2, dan Y2 maka gambar segitiga muncul.

Pada step berikutnya, kita akan membahas bagaimana membuat fungsi button bintang, membuat fungsi bintang ini kita tetap menggunakan type record yang sama, yang berbeda hanya pada deklarasi variabel arraynya. Setelah membahas button bintang ini mungkin kita sudah mulai bisa melikat bahwa penggunaan record lebih efektif daripada kita harus mengetikkan semua kode program satu-satu ataupun hanya dengan array. Langsung saja kita lihat ke step selanjutnya:

Step 5: menulis kode program untuk prosedur OnClick pada button bintang. Berikut scriptnya:


Dan berikut ini adalah merupakan hasil tampilan dari kode program tersebut untuk button bintang 5:


Setelah melihat kode program di atas dan hasil tampilannya saat di compile, mungkin sudah cukup terasa lebih efisien. Hanya perlu mendeklarasikan satu kali record selanjutnya jika ingin membuat berapa bangun pun sama. Hanya perlu mendeklarasikan variabel array untuk record yang nantinya digunakan untuk membuat bangun-bangun yang diinginkan.
Berikut ini adalah kode program dari bangun yang terakhir dibuat pada pertemuan ini yaitu bangun segi lima.

Step 6: menulis kode program untuk prosedur OnClick pada button segi lima. Berikut scriptnya:


Berikutnya adalah tampilan saat button segi lima di klik:


Tidak banyak penjelasan lagi untuk button segi lima ini karena sama dengan button segi tiga, maupun bintang 5. Berikutnya adalah membuat tombol hapus. Untuk menghapus pun sudah pernah dibahas pada pertemuan 2 yang lalu. Untuk itu dalam pertemuan 3 ini hanya diberikan kode programnya dan tampilannya saja.

Step 7 : menulis kode program untuk prosedur OnClick pada button Hapus. Berikut scriptnya:


Dapat kita lihat bahwa kode program ini sama dengan yang pernah kita bahas pada pertemuan 2 yang lalu. Untuk itu, jika ada yang belum terlalu jelas, dapat melihat kembali pembahasan pada pertemuan 2 yang lalu. Berikut ini adalah tampilan saat button hapus di klik:



Tampilan di atas menunjukkan bahwa gambar yang ada telah berhasil dihapus.

Sampai di sini pembahasan Komputer Grafis pertemuan 3. Ikuti terus pembahasan untuk pertemuan-pertemuan selanjutnya.

Semoga bisa bermanfaat.. ^.^