Jumat, 30 November 2012

Kubus 3 Dimensi di DevC++

Membuat Kubus 3D dan menempelkan objek foto pada bidang kubus tersebut.

Pertama, kita harus menggunakan imageLoader.cpp dan imageLoad.h.
Kemudian dalam file main.cpp kita akan membuat coding bagaimana kita membuat kubus dan  menempelkan objek foto pada setiap sisinya tersebut.
Coding nya seperti ini :
#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;
float _angle = 0; //Rotasi terhadap box
GLuint _textureId;
void handleKeypress(unsigned char key, int x, int y) {
switch (key) {
case 27:
exit(0);
}
}
//Membuat gambar menjadi 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(“antonl.bmp”);
_textureId = loadTexture(image);
delete image;
}
void handleResize(int w, int h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (float)w / (float)h, 1.0, 200.0);
}
void drawScene() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -20.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, 1.0f, 1.0f, 0.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);
//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);
//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);
//Sisi kiri
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);
//Sisi kanan
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
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);
//Sisi belakang
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(“antonl-ganteng”);
initRendering();
glutDisplayFunc(drawScene);
glutKeyboardFunc(handleKeypress);
glutReshapeFunc(handleResize);
glutTimerFunc(25, update, 0);
glutMainLoop();
return 0;
}
untuk lebih jelasnya, silahkan download projectnya disini gan!

Segitiga Bertingkat Di DevC++

Ini cara membuat segitiga bertingkat di DevC++.
Ouptupnya seperti ini :
saya menggunakan secara manual menggunakan coding ini,,
glBegin(GL_POLYGON);
glColor3f(1.f, 0.0f, 1.0f); 
        glVertex2i(320, 410);
        glVertex2i(290, 350);
        glVertex2i(350, 350);
    glEnd();   
tetapi posisinya di rubah,, setiap posisi segitiga berbeda-beda,, di ganti nilai x dan y nya..
untuk coding lengkapnya dapat di download disini gan!

Selasa, 16 Oktober 2012

Menghitung titik potong garis pada OpenGL


Untuk menentukan titik potong dua buah gagis pada C++ seperti yang terlihat pada gambar di atas.
kita mengguakan rumus matematika. yang di mana rumus tersebutlah yang nantinya akan di masukkan ke dalam program yang kita buat. Berikut ini adalah source code untuk menentukan titik potong garis, yang di mana source code ini dapat di masukkan kedalam fungsi display.

float    xa = 50,ya = 70,
         xb = 200,yb = 250,
         xc = 250,yc = 50,
         xd = 50,yd = 350,
         x,y,m1,m2,c1,c2;
         
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f, 0.0f, 1.0f);
glBegin(GL_LINES);
glVertex2f(xa, ya); 
glVertex2f(xb, yb);
glEnd();
glColor3f(0.0f, 1.0f, 0.0f);
glBegin(GL_LINES);
glVertex2f(xc, yc);
glVertex2f(xd, yd);
glEnd();

m1 = (yb-ya)/(xb-xa);
m2 = (yd-yc)/(xd-xc);
c1 = ya - (m1*xa);
c2 = yc - (m2*xc);
x=(c2-c1)/(m1-m2);
y=(m1*x)+c1;

glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();



Kamis, 04 Oktober 2012

Membuat Hexagon pada OpenGL

Berikut adalah gambar dari Hexagon obat nyamuk dengan menggunakan Dev C++ pada OpenGL.






Di sini saya menggunakan rumus secara manual. Adapun rumus yang di gunakan untuk membuat hexagon di atas yaitu:
glBegin(GL_LINE_STRIP);
    glColor3f(0.0f, 0.0f, 1.0f);
    glVertex2f(10.0, 0.0);
    glVertex2f(10 * cos(2*3.14159265 * 1/6), 10 * sin(2*3.14159265*1/6));
    glVertex2f(10 * cos(2*3.14159265 * 2/6), 10 * sin(2*3.14159265*2/6));
    glVertex2f(10 * cos(2*3.14159265 * 3/6), 10 * sin(2*3.14159265*3/6));
    glVertex2f(10 * cos(2*3.14159265 * 4/6), 10 * sin(2*3.14159265*4/6));
    glVertex2f(10 * cos(2*3.14159265 * 5/6), 10 * sin(2*3.14159265*5/6));
    glVertex2f(11 * cos(2*3.14159265 * 6/6), 11 * sin(2*3.14159265*6/6));
    glEnd();

 Yang dimana 10 merupakan jari-jarinya dan 6 merupakan jumlah sudutnya.
dan untuk membuat hexagon seperti gambar di atas, rumus ini terus di ulang dengan merubah nilai jari-jari dan warna dari tiap=tiap hexagon.




Sabtu, 29 September 2012

Membuat Rumah 2 Dimensi Menggunakan OpenGL

Berikut ini adalah printscreen hasil dari program membuat rumah 2 dimensi menggunakan OpenGL


Source Code-nya dapat di download Di sini

Kamis, 26 Juli 2012

Cerita Lucu Manado:

Tanta Ola Beli Kacamata
Tanta Ola so rasa stress, lantaran, dia kalu lia orang so sadiki babayang.
Lantaran dia pikir depe mata so rusak, dia pigi di toko kaca mata.
Pelayan : "Siang tante, ada yang boleh kita bantu?"
Tanta Ola : "Kita pe mata so rusak ini noh...cari akang kacamata yang pas dang?"
Pelayan : "Tante so pernah pake kacamata?"
Tanta Ola : "Ohh..blum...."
Pelayan : "Kalu bagitu torang priksa dulu tante pe mata. Mari tante, torang ke tampa priksa."
Pelayan : "Tante, ini huruf apa ?" (sambil tunjung tu huruf yang sadiki basar )
Tanta Ola : "Nyanda jelas noh..."
Pelayan : "Kalu huruf ini dang?" (Sambil tunjung tu huruf yang lebeh basar)
Tanta Ola : "Masih nyanda jelas noh..."
Pelayan : "Ini komaling tanta huruf yang paling besar yang ada disini. Sekarang tanta bilang, ini huruf apa?" (sambil tunjung huruf yang depe basar
rupa piring )
Tanta Ola : "Sama noh...masih nyanda jelas"
Pelayan : (sambil garo-garo kapala lantaran bingo) "Kiapa dari tadi nyanda jelas dang tanta?"
Tanta Ola : "Kita kwa nintau babaca, ngana kase tunjung huruf. Mana kita mo tau?"


Brapa Liter
Suatu waktu, Kale pigi pa Oom Petu pe warong. Pas sampe dimuka warong.
Kale : "Oom Petu, bli roko dang...?"
Oom Petu : (acuh sambil ba ator jualan)
Kale : (deng suara yang sadiki keras) "Oom Petu...bli roko dang ?"
Oom Petu : (masih tetap acuh)
Kale : (bataria keras skali) "Oom petu....! Bli roko dang...!"
Oom Petu : (deng nada marah) "Eh..Kale, baku hormat sadiki deng orang tua, ngana pe kira kita pongo ? Brapa liter minya so ngana mo bli ?"
Kale : ???


Ada Dua Proyek mo Pica
Istri seorang Sopir mikro kase tau pa depe laki :

Istri : "Napa torang pe tetangga so lebe hebat. Dorang so beli TV, kulkas deng sagala macam! Kong torang dang belum dapa apa-apa?"

Kong depe laki bilang : "Tunggu jo ada dua kita pe proyek somo pica…"

Istri : "Proyek apa dang itu? "

Depe laki jawab : "Kalu bukang ngana pe mata yang pica, ngana pe bibir yang pica..!!!"


Bae-bae Jang Kana
Ada ini opa deng depe cucu,depe nama Ungke.Ungke ini paling sanang skali barmain katapel.Pas bagitu,ini opa tu dia ada ba duduk-duduk di kursi di bawah pohon mangga sambil ba baca koran.

Kong dia da liat ungke da barmain deng depe katapel,ba tembak-tembak blek-blek(kaleng) yang so disusun.

Opa : "Ungke,bae-bae ne jang sampe kanal pa opa depe batu."
Ungke : "Nyanda katu' opa." (sambil dia main trus)

Kong depe beberapa menit berikut......

opa : "Ungke..."
ungke : "Kiapa so opa?"
opa : "Bae-bae jang sampe kanal tu katapel pa opa ne."
ungke : "Nyanda katu' opa.nya' mungkin kana pa opa." (sambil dia main trus)

Kong depe beberapa menit berikut lei......

opa : "Ungke..."
ungke : "Kiapa so opa ini dang?"
opa : "Bae-bae jang sampe kanal tu katapel pa opa ne.klo ngana tembak tu blek kong depe batu pantul pa opa ngana dapa memang..."
ungke :(dia langsung ba pikir,butul juga e yang opa bilang soalnya dari tadi dia main tu katapel nda ada yang pernah kanal di tu blek) "Kalo bagitu opa....kita tembak jo pa opa supaya depe batu ta pantul kong bisa kanal di kaleng..."
opa : ?$%#@&*


Kita Nda Lia No
Di suatu malam yang sunyi dan senyap ada tu tiga orang pokpok (setan yang biasanya makan bayi atau oroknya) da bacarita mo cari tau sapa da lebe jago.

Pokpok1 : "Eh,coba torang tiga baku uji sapa dang yang lebe jago."
Pokpok2 & Pokpok3 : "Boleh,ngana pe kira torang mo tako"

Kong sudah dorang tiga mulai baku suten(suit) sapa yang te dapa bagian pertama.Nah,ini pokpok1 dapa bagian pertama for kase tunjung tu jago.

Dia langsung tarbang secepat kilat,nda lama baru 2 menit dang dia so bale ulang sambil dari depe mulut da kaluar-kaluar darah segar,kong dia bilang pa depe tamang laeng,

Pokpok1 : "Ngoni da lia itu desa di sana?"
Pokpok2 & Pokpok 3 : "Iyo..."
Pokpok1 : "Samua rata,kita so kase abis!" (Sambil ta tawa puas)

Pokpok2 nda mo kalah,kong dia langsung tarbang lei secepat kilat,nda lama barang 3 menit dia so bale sambil dari depe mulut,deng depe tangan badarah-darah segar.Trus dia langsung pamer pa depe tamang-tamang.

Pokpok2 : "Ngoni da lia tu kota di seberang itu?"
Pokpok1 & Pokpok3 : "Iyo....."
Pokpok2 : "Samua rata,kita so makang dorang samua!" (Sambil ta tawa puas)

Pokpok3 lei nda mo kalah, kong dial langsung tarbang macam tu kilat.Mar nda lama 1 menit kemudian dia so bale tapi depe mata,idong,mulut,deng depe baju kaluar darah segar.

Dua Pokpok laeng pe dalam hati "pe mai dia lebe jago dari torang dua e".Kong ini pokpok3 tanya pa depe tamang-tamang

Pokpok3 : "Ngoni dua lia tu tiang listrik di perempatan sebelah?"
Pokpok1 & Pokpok2 : "Lia...."
Pokpok3 : "Pe mai kita nya liat"

Senin, 27 Februari 2012

Puisi Nama


Rintihanku….
Ingin rasanya aku bertahan
Namun hati ini tak sanggup menahannya
Andaikan mereka tau kepedihan ini. . .

Yang begitu menyiksa batinku . .
Untuk apa aku terus bertahan. .??
Luapan emosi ini tak bias ku pendam lagi
Impianku talah sirna
Apa yang harus ku lakukan..??
Nafasku seakan-akan terasa sesak
Akibat tekanan batin yang ku terima. . .

Erangan batinku tak henti-hentinya bergejolak
Putus asa . . .
Perasaan yang saat ini kurasakan
Apakah salah dan dosaku..??
Nyatakan kebesaran-Mu Tuhan
Gejolak hati ini kuserahkan pada-Mu. . .

                                                By : Aryi Adriyan R