15
Interaksi keyboard tetap sama yaitu: tombol d = untuk mendekatkan dan menjauhkan objek tombol x = untuk memutar objek terhadap sumbu x tombol y = untuk memutar objek terhadap sumbu y tombol z = untuk memutar objek terhadap sumbu z Berikut kode program selengkapnya #include "stdlib.h" #include "gl/glut.h" int w=600, h=600, z=0; int x1=0, y1=0, sudut=0, z1=0; float skalaX=1, skalaY=1, skalaZ=1; int cx, cy; void mouse(int tombol, int state, int x, int y){ cx = x-(w/2); cy = (h/2)-y; } void motion (int x, int y){ cx = x-(w/2); cy = (h/2)-y; }

Interaksi Keyboard Tetap Sama Yaitu

Embed Size (px)

DESCRIPTION

lp

Citation preview

Page 1: Interaksi Keyboard Tetap Sama Yaitu

Interaksi keyboard tetap sama yaitu:tombol d = untuk mendekatkan dan menjauhkan objektombol x = untuk memutar objek terhadap sumbu xtombol y = untuk memutar objek terhadap sumbu ytombol z = untuk memutar objek terhadap sumbu z

Berikut kode program selengkapnya

#include "stdlib.h"#include "gl/glut.h"

int w=600, h=600, z=0;int x1=0, y1=0, sudut=0, z1=0;float skalaX=1, skalaY=1, skalaZ=1;int cx, cy;

void mouse(int tombol, int state, int x, int y){ cx = x-(w/2); cy = (h/2)-y;}

void motion (int x, int y){ cx = x-(w/2); cy = (h/2)-y;}void myKeyboard(unsigned char key, int x, int y){ if (key =='a') z+=5; else if (key == 'd') z-=5; else if (key == 'q') skalaX+=0.5; else if (key == 'w') skalaX-=0.5;

Page 2: Interaksi Keyboard Tetap Sama Yaitu

else if (key == 'e') skalaY+=0.5; else if (key == 'r') skalaY-=0.5; else if (key == 't') skalaZ+=0.5; else if (key == 'u') skalaZ-=0.5; else if (key == 'x') { x1=1; y1=0; z1=0; sudut+=10; } else if (key == 'y') { y1=1; x1=0; z1=0; sudut+=-10; } else if (key == 'z') { y1=0; x1=0; z1=1; sudut+=-10; }}

void init(){ GLfloat LightPosition[] = {10.0f, 10.0f, 20.0f, 0.0f}; GLfloat LightAmbient[] = {0.0f, 1.0f, 0.0f, 1.0f}; GLfloat LightDiffuse[] = {0.7f, 0.7f, 0.7f, 1.0f}; GLfloat LightSpecular[] = {0.5f, 0.5f, 0.5f, 1.0f}; GLfloat Shine[] = { 80 };

glShadeModel(GL_SMOOTH); glClearColor(0.0f,0.0f,0.0f,0.5f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

glMaterialfv(GL_FRONT, GL_SPECULAR, LightSpecular); glMaterialfv(GL_FRONT, GL_SHININESS, Shine);

glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); return;

}

void pagar(){//pagarglPushMatrix();glEnable(GL_COLOR_MATERIAL);glTranslatef(3,-1,1);glColor3f(0,0,0);

glPushMatrix();glTranslatef(-1,0.2,0);glScalef(5.4,0.2,0.1);glutSolidCube(1);

Page 3: Interaksi Keyboard Tetap Sama Yaitu

glPopMatrix();

glPushMatrix();glTranslatef(-1,-0.2,0);glScalef(5.4,0.2,0.1);glutSolidCube(1);glPopMatrix();

glScalef(0.2,1,0.1);//glutSolidCube(1);glTranslatef(2,0,0);glutSolidCube(1);glTranslatef(2,0,0);glutSolidCube(1);glTranslatef(2,0,0);glutSolidCube(1);glTranslatef(2,0,0);//glutSolidCube(1);glTranslatef(2,0,0);//glutSolidCube(1);glTranslatef(2,0,0);//glutSolidCube(1);glTranslatef(2,0,0);//glutSolidCube(1);glTranslatef(-12,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);glTranslatef(-2,0,0);glutSolidCube(1);

glDisable(GL_COLOR_MATERIAL);glPopMatrix();

}

void renderScene(void){ GLfloat LightPosition[] = {10.0f, 10.0f, 20.0f, 0.0f}; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearColor(1,1,1,1); LightPosition[0] = cx; LightPosition[1] = cy;

Page 4: Interaksi Keyboard Tetap Sama Yaitu

glLightfv(GL_LIGHT0, GL_POSITION, LightPosition);

glLoadIdentity(); glTranslatef(0,0,z); glRotatef(sudut,x1,y1,z1); glScalef(skalaX, skalaY, skalaZ); //tembok glPushMatrix(); glEnable(GL_COLOR_MATERIAL); glColor3f(0,0,0.5); glRotatef(50,0,1,0); glutSolidCube(3); glDisable(GL_COLOR_MATERIAL);

//pagarglPushMatrix();glTranslatef(-2,0,1.5);pagar();glPopMatrix();

glPushMatrix();glTranslatef(-2,0,-3.5);pagar();glPopMatrix();

glPushMatrix();glRotatef(-90,0,1,0);glTranslatef(-2,0,1.5);pagar();glPopMatrix();

glPushMatrix();glRotatef(-90,0,1,0);glTranslatef(-2,0,-3.5);

pagar();glPopMatrix();

//pintuglPushMatrix();glEnable(GL_COLOR_MATERIAL);glColor3f(0.5,0.8,0);glTranslatef(-0.6,-1,1.46);glScalef(7,10,1);glutSolidCube(0.1);glDisable(GL_COLOR_MATERIAL);glPopMatrix();

//jendelaglPushMatrix();glEnable(GL_COLOR_MATERIAL);glColor3f(0.5,0.8,0);glTranslatef(0.5,0.1,1.46);glScalef(3,3,1);glutSolidCube(0.1);glDisable(GL_COLOR_MATERIAL);

Page 5: Interaksi Keyboard Tetap Sama Yaitu

glPopMatrix();

glPushMatrix();glEnable(GL_COLOR_MATERIAL);glColor3f(0.5,0.8,0);glTranslatef(0.9,0.1,1.46);glScalef(3,3,1);glutSolidCube(0.1);glDisable(GL_COLOR_MATERIAL);glPopMatrix();

glPushMatrix();glEnable(GL_COLOR_MATERIAL);glColor3f(0.5,0.8,0);glTranslatef(0.9,-0.3,1.46);glScalef(3,3,1);glutSolidCube(0.1);glDisable(GL_COLOR_MATERIAL);glPopMatrix();

glPushMatrix();glEnable(GL_COLOR_MATERIAL);glColor3f(0.5,0.8,0);glTranslatef(0.5,-0.3,1.46);glScalef(3,3,1);glutSolidCube(0.1);glDisable(GL_COLOR_MATERIAL);glPopMatrix();

glPopMatrix();

//atap glPushMatrix(); glEnable(GL_COLOR_MATERIAL); glColor3f(0.8,0,0); glRotatef(5,0,1,0); glTranslatef(0,1.5,0); glScalef(3,1.3,3); glutSolidOctahedron(); glDisable(GL_COLOR_MATERIAL); glPopMatrix();

glutSwapBuffers();}

void resize(int w1, int h1){ glViewport(0,0,w1,h1); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0,(float) w1/(float) h1, 1.0,300.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity();}

void timer(int value){

Page 6: Interaksi Keyboard Tetap Sama Yaitu

glutPostRedisplay(); glutTimerFunc(50,timer,0);}

void main (int argc, char **argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(w,h); glutCreateWindow("Rumah"); //gluOrtho2D(-w/2,w/2,-h/2,h/2); glutDisplayFunc(renderScene); glutReshapeFunc(resize); glutKeyboardFunc(myKeyboard); glutMouseFunc(mouse); glutMotionFunc(motion); glutTimerFunc(1,timer,0); init(); glutMainLoop();}

Page 7: Interaksi Keyboard Tetap Sama Yaitu

INTERAKSI KEYBOARD

Keyboard adalah alat input yang berfungsi untuk berfungsi mengetikkan huruf, angka, karakter khusus dan memasukkan perintah atau instruksi ke dalam software atau system operasi yang dijalankan komputer, serta sebagai media bagi user (pengguna) untuk melakukan perintah – perintah lainya yang diperluka, seperti menyimpan file dan membuka file.

      Struktur tombol pada keyboard

Secara umum, struktur tombol pada keyboard terbagi atas 4, yaitu:

Tombol Ketik (typing keys)

Tombol ketik adalah salah satu bagian dari keyboard yang berisi huruf dan angka serta tanda

baca. Secara umum, ada 2 jenis susunan huruf pada keyboard, yaitu tipe QWERTY dan

DVORAK. Namun, yang terbanyak digunakan sampai saat ini adalah susunan QWERTY.

Numeric Keypad

Numeric keypad merupakan bagian khusus dari keyboard yang berisi angka dan sangat berfungsi

untuk memasukkan data berupa angka dan operasi perhitungan. Struktur angkanya disusun

menyerupai kalkulator dan alat hitung lainnya.

Tombol Fungsi (Function Keys)

Tahun 1986, IBM menambahkan beberapa tombol fungsi pada keyboard standard. Tombol ini

dapat dipergunakan sebagai perintah khusus yang disertakan pada sistem operasi maupun

aplikasi.

Tombol kontrol (Control keys)

Tombol ini menyediakan kontrol terhadap kursor dan layar. Tombol yang termasuk dalam

kategori ini adalah 4 tombol bersimbol panah di antara tombol ketik dan numeric keypad, home,

end, insert, delete, page up, page down, control (ctrl), alternate (alt) dan escape (esc)

  Pemetaan (Mapping)

Page 8: Interaksi Keyboard Tetap Sama Yaitu

Karena saluran cache lebih sedikit dibandingkan dengan blok memori utama, diperlukan

algoritma untuk pemetaan blok-blok memori utama ke dalam saluran cache. Selain itu

diperlukan alat untuk menentukan blok memori utama mana yang sedang memakai saluran

cache. Pemilihan fungsi pemetaan akan menentukan bentuk organisasi cache. Dapat digunakan

tiga jenis teknik, yaitu sebagai berikut :

a.             Pemetaan Langsung (Direct Mapping)

Pemetaan ini memetakan masing-masing blok memori utama hanya ke satu saluran cache

saja. Jika suatu  blok ada di cache, maka tempatnya sudah tertentu. Keuntungan dari direct

mapping adalah sederhana dan murah. Sedangkan kerugian dari direct mapping adalah suatu

blok memiliki lokasi yang tetap (Jika program mengakses 2 block yang di map ke line yang sama

secara berulang-ulang, maka cache-miss sangat tinggi).

b.       Pemetaan Asosiatif  (Associative Mapping)

Pemetaan ini mengatasi kekurangan pemetaan langsung dengan cara mengizinkan setiap

blok memori utama untuk dimuatkan ke sembarang saluran cache. Dengan pemetaan asosiatif,

terdapat fleksibilitas penggantian blok ketika blok baru dibaca ke dalam cache. Kekurangan

pemetaan asosiatif yang utama adalah kompleksitas rangkaian yang diperlukan untuk menguji

tag seluruh saluran cache secara paralel, sehingga pencarian data di cache menjadi lama

c.      Pemetaan Asosiatif Set (Set Associative Mapping)

Pada pemetaan ini, cache dibagi dalam sejumlah sets. Setiap set berisi sejumlah line.

Pemetaan asosiatif set memanfaatkan kelebihan-kelebihan pendekatan pemetaan langsung dan

pemetaan asosiatif.

  Jenis-jenis Keyboard : 

         Keyboard QWERTY 

         Keyboard Alphabetic 

         Keyboard Dvorak 

         Keyboard Chord 

1.      Keyboard QWERTY

Keyboard yang biasanya dipakai adalah jenis Qwerty, yang bentuknya ini mirip seperti tuts pada

mesin tik. Keyboard QWERTY memiliki empat bagian yaitu :

a.       Typewriter key

b.      Numeric key

Page 9: Interaksi Keyboard Tetap Sama Yaitu

c.       Funtion key

d.      Special function key

Tata Letak ini sama dengan keyboard yang biasa digunakan yang terdiri dari 4 bagian yaitu:

         Tombol fungsi (function key) 

         Tombol alphanumerik (alphanumerik key) 

         Tombol kontrol (control key) 

         Tombol numerik (numerik keypad). 

Untuk menghasilkan bilangan dalam jumlah yang besar, orang lebih suka menggunakan

tombol numerik (numerik keyped) yang tata letak tombol-tombolnya dapat dijangkau dengan

sebuah tangan. Selain itu, fungsinya untuk mengetikkan angka apabila tombol Num Lock di

aktifkan. Apabila tombol Num Lock tidak diaktifkan, fungsinya berubah menjadi tombol-tombol

untuk menggerakkan kursor.

2.      KEYBOARD ALPHABETIC

Tombol-tombol pada papan ketik dengan tata letak alphabetik disusun persis seperti pada

tata letak QWERTY maupun Dvorak. Susunan hurufnya berurutan seperti pada urutan alphabet.

Biasanya banyak ditemui pada mainan anak-anak, sehingga anak-anak dapat diajar mengenal

hurup alphabet. Keyboard Alphabetic, digunakan utk negara-negara yg menggunakan alphabetic

berbeda dgn alphabetic yg ada. Misal : Arab, Cina, Rusia. Tombol-tombol disusun menurut

abjad. Tidak punya kelebihan dibanding tata letak lainnya, karena itu tidak banyak dipakai.

3.      KEYBOARD DVORAK

Menggunakan susunan papan ketik yang sama, tetapi susunan hurufnya disusun sehingga

tangan kanan dibebani oleh banyak pekerjaan dibanding dengan tangan kiri.

Dirancang agar 70 persen dari ketukan jatuh pada home row, sehingga jari-jemari yang harus

mencapai huruf-huruf yang tidak berada pada posisi home row mempunyai kerja yang lebih

ringan. Mengurangi kelelahan karena adanya faktor ergonomik yang ditambahkan pada tata letak

ini.

4.      KEYBOARD CHORD

Keyboard Chord, digunakan utk mencatat ucapan. Untuk menghasilkan suatu kata dgn

menekan tombol atau kombinasi tombol. Misal; tombol ‘D’ kombinasi dari ‘T’ & ‘+’.

Page 10: Interaksi Keyboard Tetap Sama Yaitu

1.      glutKeyboardFunc

Ada dua fungsi gaya untuk keyboard mengendalikan dalam OpenGL. Yang pertama

adalah "void keyboard (tombol unsigned char, int x, int y)", dan saya menyebutnya sebagai

normal Keyboard fungsi, yang terikat untuk "glutKeyboardFunc ()". Alasan mengapa saya

menyebutnya fungsi keyboard normal adalah bahwa hal itu dirancang untuk tabel ascii dan dapat

digunakan dengan mudah membandingkan parameter "kunci" dengan char tunggal. Sebagai

contoh, kita dapat menggunakan "jika (key == 'a' | | key == 'A')" untuk mengontrol cabang. Atau

kita bisa membandingkan "kunci" dengan interger dari 0 sampai 255, yang mewakili sesuai char

di tabel ascii. Berikut adalah tabel ascii.

glutKeyboardFunc menetapkan callback keyboard untuk jendela aktif. Ketika diketik

pengguna ke jendela, setiap tekan tombol menghasilkan karakter ASCII akan menghasilkan

callback keyboard. Parameter callback utama adalah karakter ASCII yang dihasilkan. Keadaan

tombol pengubah seperti Shift tidak dapat ditentukan secara langsung, efek mereka hanya akan

berada di data ASCII dikembalikan. X dan parameter callback y menunjukkan lokasi mouse pada

koordinat relatif jendela ketika tombol ditekan. Ketika jendela baru dibuat, tidak ada callback

keyboard awalnya terdaftar, dan stroke kunci ASCII di jendela diabaikan. Melewati NULL untuk

glutKeyboardFunc Menonaktifkan generasi callback keyboard. Selama callback keyboard,

glutGetModifiers dapat dipanggil untuk menentukan keadaan tombol pengubah ketika keystroke

menghasilkan callback terjadi.

-                      Pemakaian :

void glutKeyboardFunc(void (*func)(unsigned char key,int x,

int y));

func

Fungsi callback baru masuk.

2.      glutSpecialFunc ()

glutSpecialFunc menetapkan callback keyboard khusus untuk jendela saat ini. The

callback keyboard khusus dipicu ketika keyboard fungsi atau tombol arah yang ditekan.

Parameter callback kunci adalah * GLUT_KEY_ konstan untuk tombol khusus ditekan. X dan

parameter callback y mengindikasikan mouse di koordinat relatif jendela ketika tombol ditekan.

Ketika jendela baru dibuat, tidak ada callback khusus awalnya terdaftar dan stroke kunci khusus

Page 11: Interaksi Keyboard Tetap Sama Yaitu

di jendela diabaikan. Melewati NULL untuk glutSpecialFunc Menonaktifkan generasi callback

khusus. Selama callback khusus, glutGetModifiers dapat dipanggil untuk menentukan keadaan

tombol pengubah ketika keystroke menghasilkan callback terjadi.  Implementasi harus

melakukan yang terbaik untuk menyediakan cara untuk menghasilkan semua GLUT_KEY_ *

tombol khusus.

 Nilai-nilai yang tersedia GLUT_KEY_ * adalah:

GLUT_KEY_F1 F1 fungsi tombol.

GLUT_KEY_F2 F2 tombol fungsi.

GLUT_KEY_F3 F3 fungsi tombol.

GLUT_KEY_F4 F4 fungsi tombol.

GLUT_KEY_F5 F5 tombol fungsi.

GLUT_KEY_F6 F6 tombol fungsi.

GLUT_KEY_F7 F7 tombol fungsi.

GLUT_KEY_F8 F8 fungsi kunci.

GLUT_KEY_F9 F9 tombol fungsi.

GLUT_KEY_F10 F10 tombol fungsi.

GLUT_KEY_F11 F11 tombol fungsi.

GLUT_KEY_F12 F12 tombol fungsi.

GLUT_KEY_LEFT Kiri kunci terarah.

GLUT_KEY_UP Naik terarah.

GLUT_KEY_RIGHT kunci directional kanan.

GLUT_KEY_DOWN Turun terarah.

GLUT_KEY_PAGE UP Halaman up kunci terarah.

GLUT_KEY_PAGE BAWAH Halaman bawah tombol arah.

GLUT_KEY_HOME Tombol Awal terarah.

GLUT_KEY_END tombol End terarah.

GLUT_KEY_INSERT kunci directional Inset.

pemakaian

void glutSpecialFunc (void (* func) (int key, int x, int y));

func

Fungsi callback baru masuk.

Page 12: Interaksi Keyboard Tetap Sama Yaitu