Kamis, 07 April 2016

Grafika Komputer - Membuat Kombinasi Bangun

Grafika Komputer - Membuat Kombinasi Bangun


Haloooo udah lama gak update nih ^_^, nah kali ini saya akan membahas bagamana membuat kombinasi dari beberapa bangun yang tersusun, contohnya seperti yang ada dibawah.
yuuuk langsung saja, Yoshhhh.

Coding

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <glut.h>  \\enam libary tersebut harus ada karena sangat penting dalam program kali ini, terutama glut.h

void Primitif(){ \\prosedur untuk membuat garis.
    glClear(GL_COLOR_BUFFER_BIT); \\membersihkan layar.
    glBegin(GL_LINE_LOOP); \\memulai membuat garis.
       glVertex2f(-0.1,0);//kotak balok depan
       glVertex2f(0.2,0);
       glVertex2f(0.2,0.4);
       glVertex2f(-0.1,0.4);
       glEnd();
       glFlush();
      
       glBegin(GL_LINE_LOOP);\\kotak balok samping kanan
       glVertex2f(-0.1,0.4);
       glVertex2f(0.2,0.4);
       glVertex2f(0.4,0.6);
       glVertex2f(0.1,0.6);
       glEnd();
       glFlush();
      
       glBegin(GL_LINE_LOOP);\\kotak balok samping kiri
       glVertex2f(0.2,0.4);
       glVertex2f(0.4,0.6);
       glVertex2f(0.4,0.2);
       glVertex2f(0.2,0);
       glEnd();
       glFlush();
      
       glBegin(GL_LINE_LOOP);\\pyramid atas/limas depan
       glVertex2f(0.2,0.9);
       glVertex2f(0.2,0.4);
       glVertex2f(0.4,0.6);
       glEnd();
       glFlush();
      
       glBegin(GL_LINE_LOOP);\\pyramid atas/limas kanan
       glVertex2f(0.2,0.9);
       glVertex2f(0.2,0.4);
       glVertex2f(-0.1,0.4);
       glEnd();
       glFlush();

      
       glBegin(GL_LINE_LOOP);\\pyramid atas/limas kiri
       glVertex2f(0.2,0.9);
       glVertex2f(0.1,0.6);
       glVertex2f(-0.1,0.4);
       glEnd();
       glFlush();

       glBegin(GL_LINE_LOOP);\\membuat kotak persegi panjang bagian atas
       glVertex2f(-0.1,0);
       glVertex2f(0.1,0.2);
       glVertex2f(0.1,0.6);
       glVertex2f(-0.1,0.4);
       glEnd();
       glFlush();
      
       glBegin(GL_LINE_LOOP);\\membuat kotak persegi panjang bagian kanan
       glVertex2f(-0.7,0);
       glVertex2f(0.7,0);
       glVertex2f(0.9,0.2);
       glVertex2f(-0.4,0.2);
       glEnd();
       glFlush();

       glBegin(GL_LINE_LOOP);\\membuat kotak persegi panjang bagian tengah
       glVertex2f(-0.7,0);
       glVertex2f(0.7,0);
       glVertex2f(0.7,-0.2);
       glVertex2f(-0.7,-0.2);
       glEnd();
       glFlush();

       glBegin(GL_LINE_LOOP);\\membuat kotak persegi panjang samping kiri
       glVertex2f(0.9,0.2);
       glVertex2f(0.7,0);
       glVertex2f(0.7,-0.2);
       glVertex2f(0.9,0.);
       glEnd();
       glFlush();

       glEnable(GL_LINE_STIPPLE);\\membuat kotak persegi panjang bagian belakang patah2 
    glLineStipple (1, 0x00FF);
    glBegin(GL_LINE_LOOP);
    glVertex2f(0.9,0);
    glVertex2f(0.9,0.2);
    glVertex2f(-0.4,0.2);
       glVertex2f(-0.4,0);
    glEnd();
    glFlush();

    glEnable(GL_LINE_STIPPLE); \\membuat kotak persegi panjang samping kiri patah2 
    glLineStipple (1, 0x00FF);
    glBegin(GL_LINE_LOOP);
    glVertex2f(-0.7,0);
    glVertex2f(-0.7,-0.2);
    glVertex2f(-0.4,0);
       glVertex2f(-0.4,0.2);
    glEnd();
    glFlush();

}

int main(int argc, char** argv){
    printf("Nama : Mackands Leonardo Octano\nNIM : 1400018012");
       glutCreateWindow("POST-TEST 04 ^_^");
    glutDisplayFunc(Primitif);
    glutMainLoop();
   
    }


HASIL





Yup sekian pembahasan kali ini semoga program diatas dapat membatu bro & sis... ^_^;
Jyaa Sampai jumpa lagi ^_*;

Senin, 30 November 2015

Pertemuan Minggu [11] Structur Data [01 Desember 2015]

Pertemuan Kedelapan kali ini membahas tentang Persiapan Tugas Proyek & Presentasi.

Pada perkuliahan kali ini pak wahyu lebih fokus pada tugas proyek yang diberikan ke kami ketentuan yang diberikan sebagai berikut.

[Penilaian tahap 1 : Persiapan Bahan Media Pembelajaran] [Kelas A]
Silahkan berkumpul 3 tim dalam satu grup. Tim yang presentasi akan DINILAI oleh 2 tim yang lain. Untuk minggu ini, penilaian meliputi :
Tugas Proyek Struktur Data 2015
Struktur Media Pembelajaran
A. materi :
1. Pendahuluan : pentingnya dan motivasi (animasi atau video) - maksimal 15
2. Teori - maksimal 25
a. Definisi, teori penunjang
b. Tipe Data Abstrak (bila ada)
c. Kontruksi class
d. Code (dala C++)
3. Contoh-contoh - maksimal 15
B. Latihan - maksimal 25
C. Evaluasi - maksimal 20

dan kami disuruh presentasi ke 2 kelompok berbeda dan mengupload nilai dengan format seperti diatas...,
Ya.. sekian pembahsan minggu ke sebelas kali ini, Terima Kasih.

Rabu, 25 November 2015

Pertemuan Minggu [10] Structur Data [24 November 2015]

Pertemuan Kesepuluh kali ini membahas tentang Pohon Biner Setimbang.


Pohon Biner
Definisi:
Sebuah pohon biner adalah himpunan terbatas yang:
- mungkin kosong, atau
- terdiri dari sebuah simpul yang disebut akar
dan dua buah himpunan lain yang disjoint yang merupakan pohon biner, yang disebut
sebagai sub pohon kiri dan sub pohon kanan dari pohon biner tersebut
Perhatikanlah perbedaan pohon biner dengan pohon biasa : pohon biner mungkin kosong,
sedangkan pohon n-aire tidak mungkin kosong.
Pohon Seimbang (Balanced Tree)
Pohon seimbang:
• Pohon seimbang tingginya: perbedaan tinggi sub pohon kiri dengan sub pohon kanan
maksimum 1.
• Pohon seimbang banyaknya simpul: perbedaan banyaknya simpul sub pohon kiri
dengan sub pohon kanan maksimum 1.
Berikut ini adalah algoritma untuk pohon yang seimbang banyaknya simpulnya.

Contoh Pohon Setimbang :

Image result for pohon biner setimbang

Image result for pohon biner setimbang

Image result for pohon biner setimbang

Ya.. Sekian pembahasan minggu ke sepuluh saya kali ini.. Terima Kasih. :D

Rabu, 18 November 2015

Pertemuan Minggu [09] Structur Data [17 November 2015]

Pertemuan Kesembilan kali ini membahas tentang Pohon Biner.

Pohon Biner (Binary Tree) adalah sebuah pohon struktur data dimana setiap simpul memiliki paling banyak dua anak. Secara khusus anaknya dinamakan kiri dan kanan. Penggunaan secara umum pohon biner adalah Pohon Biner Terurut, yang kata lainnnya adalah heap biner.
Pohon (tree) adalah himpunan terbatas, tidak
kosong, dengan elemen dibedakan sebagai
berikut:
– Sebuah elemen yang dibedakan dari yang lain _
AKAR
– Elemen yang lain (jika ada) dibagi-bagi menjadi
beberapa sub himpunan yang disjoin dan masing-
masingmasing
sub himpunan itu adalah pohon _
SUBPOHON
Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hierarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan elemen khusus yang disebut root atau akar
Definisi tree : “Kumpulan elemen yang salah satu elemennya disebut dengan root (akar) dan sisa elemen yang lain disebut sebagai simpul (node/vertex) yang terpecah menjadi sejumlah himpunan yang tidak saling berhubungan satu sama lain, yang disebut subtree/cabang”.
Jenis-jenis Tree :
1.   Binnary Tree
   Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, maka tiap node dalam binary tree hanya boleh memiliki paling banyak dua child.
Jenis jenis Binnary Tree



  • Full binnary tree

binnary tree ini tiap nodenya (kecuali leaf) memiliki 2 child dan tiap subtree harus mempunyai panjang path yang sama.
  • complete binnary tree

mirip dengan full binnary tree, tetapi tiap subtree boleh memiliki panjang path yang berbeda.
  • skewed binnary tree

binnary tree yang semua nodenya (kecuali leaf) hanya memiliki 1 child.
Implementasi Binary Tree*
Binary Tree dapat diimplemntasikan dalam Pascal dengan menggunakan double Linked List. Untuk nodenya, bisa dideklarasikan sbb :
Type Tree = ^node;
Node = record
Isi : TipeData;
Left,Right : Tree;
end;
Contoh ilustrasi Tree yang disusun dengan double linked list :



(Ket: LC=Left Child; RC=Right Child)
Operasi-operasi pada Binary Tree :
·         Create : Membentuk binary tree baru yang masih kosong.
·         Clear : Mengosongkan binary tree yang sudah ada.
·         Empty : Function untuk memeriksa apakah binary tree masih kosong.
·         Insert : Memasukkan sebuah node ke dalam tree. Ada tiga pilihan insert: sebagai root, left child, atau right child. Khusus insert sebagai root, tree harus dalam keadaan kosong.
·         Find : Mencari root, parent, left child, atau right child dari suatu node. (Tree tak boleh kosong)
·         Update : Mengubah isi dari node yang ditunjuk oleh pointer current. (Tree tidak boleh kosong)
·         Retrieve : Mengetahui isi dari node yang ditunjuk pointer current. (Tree tidak boleh kosong)
·         DeleteSub : Menghapus sebuah subtree (node beserta seluruh descendantnya) yang ditunjuk current. Tree tak boleh kosong. Setelah itu pointer current akan berpindah ke parent dari node yang dihapus.
·         Characteristic : Mengetahui karakteristik dari suatu tree, yakni : size, height, serta average lengthnya. Tree tidak boleh kosong. (Average Length = [jumlahNodeLvl1*1+jmlNodeLvl2*2+…+jmlNodeLvln*n]/Size)
·         Traverse : Mengunjungi seluruh node-node pada tree, masing-masing sekali. Hasilnya adalah urutan informasi secara linier yang tersimpan dalam tree. Adatiga cara traverse : Pre Order, In Order, dan Post Order.
Langkah-Langkahnya Traverse :
·         PreOrder : Cetak isi node yang dikunjungi, kunjungi Left Child, kunjungi Right Child.
·         InOrder : Kunjungi Left Child, Cetak isi node yang dikunjungi, kunjungi Right Child.
·         PostOrder : Kunjungi Left Child, Kunjungi Right Child, cetak isi node yang dikunjungi.
 2.  Binary search Tree
Adalah Binary Tree dengan sifat bahwa semua left child harus lebih kecil daripada right child dan parentnya. Juga semua right child harus lebih besar dari left child serta parentnya. Binary seach tree dibuat untuk mengatasi kelemahan pada binary tree biasa, yaitu kesulitan dalam searching / pencarian node tertentu dalam binary tree. Contoh binary search tree umum :



Pada dasarnya operasi dalam binary search tree sama dengan Binary tree biasa, kecuali pada operasi insert, update, dan delete.
1. Insert : Pada Binary Search Tree, insert dilakukan setelah ditemukan lokasi yang tepat. (Lokasi tidak ditentukan oleh user sendiri).



2. Update : Seperti pada Binary Tree biasa, namun disini uapte akan berpengaruh pada posisi node tersebut selanjutnya. Bila setelah diupdate mengakibatkan tree tersebut bukan Binary Search Tree lagi, maka harus dilakukan perubahan pada tree dengan melakukan perubahan pada tree dengan melakukan rotasi supaya tetap menjadi Binary Search Tree.
3. Delete : Seperti halnya update, delete dalam Binary Search Tree juga turut mempengaruhi struktur dari tree tersebut.

(Keadaan awal merupakan lanjutan gambar sebelumnya)

Ya.. Sekian pembahasan pertemuan ke sembilan saya kali ini... terima kasih :D