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);
}
Rabu, 20 November 2013
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.
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
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.
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.
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
Langganan:
Postingan (Atom)