Rabu, 20 November 2013

TUGAS GRAFKOM < kubus > KELOMPOK




//PROGRAM UTAMA
#include <iostream>
#include <stdlib.h>
#ifdef __APPLE__
#include <OpenGL/OpenGL.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
#include "imageloader.h"
using namespace std;
const float BOX_SIZE = 7.0f; //Panjang tiap sisi kubus
float _angle = 1;            //Rotasi terhadap box
GLuint _textureId;           //ID OpenGL untuk tekstur
GLuint _textureId2;
GLuint _textureId3;
GLuint _textureId4;
GLuint _textureId5;
GLuint _textureId6;
void handleKeypress(unsigned char key, int x, int y) {
    switch (key) {
        case 27:             //Tekan Escape untuk EXIT
            exit(0);
    }
}
//Membuat gambar menjadi tekstur kemudian berikan ID pada tekstur
GLuint loadTexture(Image* image) {
    GLuint textureId;
    glGenTextures(1, &textureId);
    glBindTexture(GL_TEXTURE_2D, textureId);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height, 0, GL_RGB, GL_UNSIGNED_BYTE, image->pixels);
    return textureId;
}
void initRendering() {
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
    glEnable(GL_NORMALIZE);
    glEnable(GL_COLOR_MATERIAL);
   
    Image* image = loadBMP("julian3a.bmp");
    Image* image2 = loadBMP("mamaa.bmp");
    Image* image3 = loadBMP("yonatana.bmp");
    Image* image4 = loadBMP("juliana.bmp");
    Image* image5 = loadBMP("julian2a.bmp");
    Image* image6 = loadBMP("idoa.bmp");
    _textureId = loadTexture(image);
    _textureId2 = loadTexture(image2);
    _textureId3 = loadTexture(image3);
    _textureId4 = loadTexture(image4);
    _textureId5 = loadTexture(image5);
        _textureId6 = loadTexture(image6);
    delete image;
}
void handleResize(int w, int h) {
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(40.0, (float)w / (float)h, 20.0, 100.0);
}
void drawScene() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
   
    glTranslatef(0.0f, 0.0f, -30.0f);
   
    GLfloat ambientLight[] = {0.3f, 0.3f, 0.3f, 1.0f};
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight);
   
    GLfloat lightColor[] = {0.7f, 0.7f, 0.7f, 1.0f};
    GLfloat lightPos[] = {-2 * BOX_SIZE, BOX_SIZE, 4 * BOX_SIZE, 1.0f};
    glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor);
    glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
   
    glRotatef(-_angle, 30.0f, 40.0f, 20.0f);
   
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    //Sisi atas
    glTexCoord2f(0.0f, 0.0f);
    glNormal3f(0.0, 1.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
    glEnd();
   
    //glBegin(GL_QUADS);
   
 
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId2);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    //Sisi bawah
    glTexCoord2f(0.0f, 0.0f);
    glNormal3f(0.0, -1.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glEnd();
   
    //Sisi kiri
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId3);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glNormal3f(-1.0, 0.0f, 0.0f);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
    glEnd();
   
    //Sisi kanan
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId4);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glNormal3f(1.0, 0.0f, 0.0f);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glEnd();
   
    //Sisi depan
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId5);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glNormal3f(0.0, 0.0f, 1.0f);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, BOX_SIZE / 2);
    glEnd();
    //Sisi belakang
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId6);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_QUADS);
    glNormal3f(0.0, 0.0f, -1.0f);
    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(-BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(1.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, BOX_SIZE / 2, -BOX_SIZE / 2);
    glTexCoord2f(0.0f, 1.0f);
    glVertex3f(BOX_SIZE / 2, -BOX_SIZE / 2, -BOX_SIZE / 2);
   
    glEnd();
    glDisable(GL_TEXTURE_2D);
    glutSwapBuffers();
}
//Panggil setiap 25ms
void update(int value) {
    _angle += 1.0f;
    if (_angle > 360) {
        _angle -= 360;
    }
    glutPostRedisplay();
    glutTimerFunc(25, update, 0);
}
int main(int argc, char** argv) {
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(400, 400);
   
    glutCreateWindow("Julian||Eido");
    initRendering();
   
    glutDisplayFunc(drawScene);
    glutKeyboardFunc(handleKeypress);
    glutReshapeFunc(handleResize);
    glutTimerFunc(25, update, 0);
   
    glutMainLoop();
    return 0;
}


// KELAS IMAGELOADER
#include <assert.h>
#include <fstream>
#include "imageloader.h"

using namespace std;

Image::Image(char* ps, int w, int h) : pixels(ps), width(w), height(h) {
  
}

Image::~Image() {
    delete[] pixels;
}

namespace {
    //Konversi 4 buah karakter ke integer, menggunakan bentuk little-endian
    int toInt(const char* bytes) {
        return (int)(((unsigned char)bytes[3] << 24) |
                     ((unsigned char)bytes[2] << 16) |
                     ((unsigned char)bytes[1] << 8) |
                     (unsigned char)bytes[0]);
    }
  
    //Konversi 2 buah karakter ke integer, menggunakan bentuk little-endian
    short toShort(const char* bytes) {
        return (short)(((unsigned char)bytes[1] << 8) |
                       (unsigned char)bytes[0]);
    }
  
    //Membaca 4 byte selanjutnya sebagai integer, menggunakan bentuk little-endian
    int readInt(ifstream &input) {
        char buffer[4];
        input.read(buffer, 4);
        return toInt(buffer);
    }
  
    short readShort(ifstream &input) {
        char buffer[2];
        input.read(buffer, 2);
        return toShort(buffer);
    }
  
    template<class T>
    class auto_array {
        private:
            T* array;
            mutable bool isReleased;
        public:
            explicit auto_array(T* array_ = NULL) :
                array(array_), isReleased(false) {
            }
          
            auto_array(const auto_array<T> &aarray) {
                array = aarray.array;
                isReleased = aarray.isReleased;
                aarray.isReleased = true;
            }
          
            ~auto_array() {
                if (!isReleased && array != NULL) {
                    delete[] array;
                }
            }
          
            T* get() const {
                return array;
            }
          
            T &operator*() const {
                return *array;
            }
          
            void operator=(const auto_array<T> &aarray) {
                if (!isReleased && array != NULL) {
                    delete[] array;
                }
                array = aarray.array;
                isReleased = aarray.isReleased;
                aarray.isReleased = true;
            }
          
            T* operator->() const {
                return array;
            }
          
            T* release() {
                isReleased = true;
                return array;
            }
          
            void reset(T* array_ = NULL) {
                if (!isReleased && array != NULL) {
                    delete[] array;
                }
                array = array_;
            }
          
            T* operator+(int i) {
                return array + i;
            }
          
            T &operator[](int i) {
                return array[i];
            }
    };
}

Image* loadBMP(const char* filename) {
    ifstream input;
    input.open(filename, ifstream::binary);
    assert(!input.fail() || !"File tidak ditemukan!!!");
    char buffer[2];
    input.read(buffer, 2);
    assert(buffer[0] == 'B' && buffer[1] == 'M' || !"Bukan file bitmap!!!");
    input.ignore(8);
    int dataOffset = readInt(input);
  
    int headerSize = readInt(input);
    int width;
    int height;
    switch(headerSize) {
        case 40:
            width = readInt(input);
            height = readInt(input);
            input.ignore(2);
            assert(readShort(input) == 24 || !"Gambar tidak 24 bits per pixel!");
            assert(readShort(input) == 0 || !"Gambar dikompres!");
            break;
        case 12:
            width = readShort(input);
            height = readShort(input);
            input.ignore(2);
            assert(readShort(input) == 24 || !"Gambar tidak 24 bits per pixel!");
            break;
        case 64:
            assert(!"Tidak dapat mengambil OS/2 V2 bitmaps");
            break;
        case 108:
            assert(!"Tidak dapat mengambil Windows V4 bitmaps");
            break;
        case 124:
            assert(!"Tidak dapat mengambil Windows V5 bitmaps");
            break;
        default:
            assert(!"Format bitmap ini tidak diketahui!");
    }
  
    //Membaca data
    int bytesPerRow = ((width * 3 + 3) / 4) * 4 - (width * 3 % 4);
    int size = bytesPerRow * height;
    auto_array<char> pixels(new char[size]);
    input.seekg(dataOffset, ios_base::beg);
    input.read(pixels.get(), size);
  
    //Mengambil data yang mempunyai format benar
    auto_array<char> pixels2(new char[width * height * 3]);
    for(int y = 0; y < height; y++) {
        for(int x = 0; x < width; x++) {
            for(int c = 0; c < 3; c++) {
                pixels2[3 * (width * y + x) + c] =
                    pixels[bytesPerRow * y + 3 * x + (2 - c)];
            }
        }
    }
  
    input.close();
    return new Image(pixels2.release(), width, height);
}

Minggu, 03 Februari 2013

REVIEW SISTEM BASIS DATA TUGAS 2



Sistem berasal dari bahasa Latin “Systema” dan bahasa Yunani “Sustema” yang artinya suatu kesatuan yang terdiri dari komponen-komponen atau elemen-elemen yang berkaitan antar satu dengan yang lainnya untuk mencapai suatu tujuan tertentu. Basis yaitu diartikan sebagai markas / gudang / tempat penyimpanan. Data yaitu sesuatu yang belum mempunyai arti dan membutuhkan adanya suatu pengolahan agar memberikan manfaat kepada penerima. Data dapat berupa angka, huruf, peristiwa, simbol, dan lain sebagainya.
Dari ketiga kata tersebut, dapat kita gabungkan menjadi satu pengertian. Dimana Sistem Basis Data adalah sebuah sistem yang terdiri dari kumpulan file-file yang saling berhubungan, yang di atur sedemikian rupa (diolah) oleh user(brainware) dengan menggunakan komponen-komponen pendukung (hardware & software) sehingga dapat memberikan informasi kepada pengguna apabila suatu saat ia membutuhkannya.
Agar  sistem  tsb dapat beroperasi dengan baik dan lancar, maka diperlukan komponen-komponen yang penting seperti Hardware, Sistem Operasi, Database, Aplikasi DBMS, Brainware,  dan software pendukung (optional).
Adapun tujuan dan manfaat dari Sistem Basis Data ini yaitu tujuannya tidak lain adalah untuk menemukan data yang dicari dengan cepat dan mudah. Sedangkan manfaatnya yaitu tingkat akses yang cepat, efisien, aman, dan bisa dipakai semua pihak yang memerlukan.
Di dalam Sistem Database terdapat 3 tingkatan yaitu :
1.       View (rendah yang paling tinggi) : yang berada di tingkat ini yaitu user digolongkan ke external, karna berada di luar ( tidak berhubungan langsung dengan database). Level ini tidak mengambarkan secara kesuruhan dari database, tapi hanya bagian yang di butuhkan oleh user.
2.       Konseptual : menerangkan bagaimana data di simpan. Menggambarkan keseluruhan dari database.
3.       Fisik (level yang paling rendah) : mengenai data, bagaimana data itu di simpan. Level ini lebih kompleks daripada view dan konseptual.
Terminologi Sistem Basis Data yang kita kenal yaitu Entitas/Entity, Field/Atribut/Kolom, Record/Tuple/Baris.
Entitas/Entity yaitu wujud / obyek berupa orang, tempat, peristiwa ataupun konsep yang direkam. Entitas  bisa di artikan sebagai judul dari sebuah tabel.  Karna  inilah yang membedakan entitas yang satu dengan yang lainnya. Misalnya di sebuah rumah sakit, kita bisa membuat entitas Dokter, entitas Pasien, entitas Perawat, entitas Kamar, dan lain-lain.
Atribut/Field/Kolom yaitu sebutan yang digunakan untuk menjelaskan Entitas. Atribut berupa kolom-kolom yang memiliki data yang sama atau sejenis. Kalau ada 3 elemen (nama data) yang ingin di masukkan, maka ada 3 entitas atau 3 kolom yang di gunakan. Misalnya :
kolom1 untuk No_id, kolom2 untuk Nama_Karyawan, kolom3 untuk Alamat.
Record/Tuple/Baris yaitu menjelaskan suatu entitas secara lengkap karna di dalam 1 baris, semua atribut masuk (Horizontal). 1 record/baris mewakili 1 data atau informasi. Contohnya :
672012208, Julianne Moore, Purisatya, Bengkalis, riau

Minggu, 27 Januari 2013

REVIEW SISTEM BASIS DATA TUGAS 1


Data berasal dari bahasa Latin, bentuk jamak dari kata Datum, yang artinya “sesuatu yang diberikan”. Data merupakan sesuatu yang masih mentah sehingga memerlukan adanya suatu pengolahan agar mempunyai arti bagi sang penerima. Data dapat berupa suara, gambar, video, simbol, angka, dan lain sebagainya. Sedangkan Informasi yaitu hasil dari pengolahan data. Informasi dapat memberikan wawasan atau ilmu kepada orang yang memerlukan informasi tersebut. Dengan bergitu, dapat di simpulkan bahwa informasi merupakan hasil pengolahan ataupun pemrosesan data dan dapat memberikan manfaat kepada penerima informasi tersebut.
Pada saat kita memerlukan suatu sistem untuk dapat mengolah dan menyimpan informasi yang  penting dan aman, makan kita memerlukan yang namanya Sistem Basis Data. Sistem Basis Data merupakan sistem yang menggunakan komputer untuk menyimpan, merekam, serta memelihara data operasional sebuah organisasi atau perusahaan sehingga mampu menyediakan informasi yang optimal dalam pengambilan keputusan.
Adapun komponen-komponen yang diperlukan dalam penyusunan data antara lain:
1.       Hardware (perangkat keras)
perangkat komputer sederhana, media penyimpanan dan komunikasi untuk sistem jaringan.
2.       Operating System
Perangkat lunak yang memfungsikan, mengendalikan seluruh sumber daya, dan melakukan operasi dasar dalam sebuah komputer.
3.       Database
Mewakili sistem tertentu untuk di kelola.
4.       DBMS (DataBase Management System)
digunakan untuk mengelola basis data. Terdiri dari kelas sederhana dan kelas kompleks.
contoh kelas sederhana : dBase, Foxbase, dll
contoh kelas kompleks : Borland-Interbase, Sybase, dll
5.       User
Merupakan pengguna Sistem Basis Data
6.       Optional Software
Perangkat lunak yang bersifat opsional dan merupakan pelengkap yang mendukung pemrosesan sistem tersebut.
Tujuan dari basis data yaitu agar kita dapat memperoleh data yang kita cari secara cepat dan mudah. Adapun manfaat dari sistem basis data yaitu:
-          -Kecepatan dan kemudahan : mengolah, menyimpan, dan menampilkan kembali data tersebut secara cepat dan mudah.
-          - Efisien ruang penyimpanan : data di simpan sebanyak mungkin dengan sejumlah kode yang berbeda-beda.
-          -Keakuratan : Pemanfatan pengkodean atau pembentukan relasi antar data dengan penerapan aturan atau batasan tipe data dapat diterapkan dalam Database yang berguna untuk menentukan ketidakakuratan pemasukan atau penyimpanan.
-          -Keamanan : sistem tersebut tidak bisa di buka oleh sembarang user agar terjaganya keamanan. Dengan begitu, kita dapat menentukan siapa saja yang boleh menggunakan database tersebut dan operasi-operasi apa saja yang boleh dilakukan.
-          -Terpeliharanya keselarasan data,  dipakai secara bersamaan, dan diterapkan standarisasinya.

Contoh penggunaan Aplikasi basis data :

  • Bank : Pengelolaan data nasabah, akunting, semua transaksi perbankan
  • Penjualan : Pengelolaan data customer, produk, penjualan
  • Pabrik : Pengelolaan data produksi, persediaan barang, pemesanan, agen
  • Kepegawaian: Pengelolaan data karyawan, gaji, pajak
  • Telekomunikasi : Pengelolaan data tagihan, jumlah pulsa
  • Sekolah : Pengelohan data guru, pelajar, inventaris, dll
  • Universitas : Pengelolaan pendaftaran, alumni
  • Bandara : Pengelolaan data reservasi, penjadwalan