GRAFIKA KOMPUTER
INTERAKSI
Disusun oleh :
#include <stdlib.h>
#include <glut.h>
void Triangles(){
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(2.0f, 0.5f, 1.0f);
glVertex2f(0.,0.);
glVertex2f(20.,40.);
glVertex2f(-20.,40.);
glColor3f(0.5f, 1.0f, 1.0f);
glVertex2f(0.,0.);
glVertex2f(-20.,-40.);
glVertex2f(20.,-40.);
glEnd();
glFlush();
}
void renderScene(){
glClear(GL_COLOR_BUFFER_BIT);
Triangles();
glFlush();
}
void myKeyboard(unsigned char key, int x, int y){
if(key=='k')glRotatef(50,0,0,1);
else if (key=='l')glRotatef(-50,0,0,1);
}
void update(int value){
glutPostRedisplay();
glutTimerFunc(60,update,0);
}
void main (int argc, char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(150,150);
glutInitWindowSize(450,450);
glutCreateWindow("Xaphyra Aura : Baling-baling putar
(k&l)");
gluOrtho2D(-50.,50.,-50.,50.);
glutDisplayFunc(renderScene);
glutKeyboardFunc(myKeyboard);
glutTimerFunc(60,update,0);
glutMainLoop();
}
Output
Posisi baling-baling jika tombol k ditekan Posisi baling-baling jika tombol l ditekan
2. Buatlah 2 benda (kotak dan segitiga) yang dapat dikendalikan secara individual
dengan memanfaatkan tombol untuk tangan kanan dan tombol kiri (‘a’,’s’,’d’,’w’
untuk kotak dan ‘tombol atas, bawah, kiri, kanan’ untuk segitiga) atau dengan
metode yang lain.
Source Code
#include <stdlib.h>
#include <glut.h>
int a,s,d,w;
void persegi(){
glBegin(GL_QUADS);
glColor3f(0.5f, 1.0f, 1.0f);
glVertex2d(0,0);
glVertex2d(45,50);
glVertex2d(0,100);
glVertex2d(-45,50);
glEnd();
}
void myKeyboard(unsigned char key, int x, int y){
if (key=='A'||key=='a'){
a-=50;
}
else if (key=='S'||key=='s'){
s-=50;
}
else if (key=='D'||key=='d'){
a +=50;
}
else if (key=='W'||key=='w'){
s+=50;
}
}
void segitiga(){
glBegin(GL_TRIANGLES);
glColor3f(0.0f, 0.5f, 1.0f);
glVertex2f(100.,10.);
glVertex2f(150.,-50.);
glVertex2f(50.,-50);
glEnd();
}
void mySpecialKeyboard(int key, int x, int y){
switch (key){
case GLUT_KEY_LEFT:
d -=50;
break;
case GLUT_KEY_RIGHT:
d+=50;
break;
case GLUT_KEY_UP:
w+=50;
break;
case GLUT_KEY_DOWN:
w-=50;
void renderScene(){
break;
}glClear(GL_COLOR_BUFFER_BIT);glPushMatrix();
} glTranslatef(a,s,0);
persegi();
glPopMatrix();
glPushMatrix();
glTranslatef(d,w,0);
segitiga();
Output
#include <stdlib.h>
#include <glut.h>
int x,y;
void drawQuad(){
glBegin(GL_TRIANGLES);
glVertex2f(0.,0.);
glVertex2f(20.,40.);
glVertex2f(-20.,40.);
glVertex2f(0.,0.);
glVertex2f(-20.,-40.);
glVertex2f(20.,-40.);
glEnd();
glFlush();
}
void myKeyboard(unsigned char key, int x, int y){
if (key =='p')glColor3f(0.0f, 1.0f, 0.0f);
else if (key == 'o')glColor4f(1.0f, 1.0f, 0.0f, 0.0f);
}
void update (int value){
glutPostRedisplay();
glutTimerFunc(10,update,0);
}
void display(){
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
drawQuad();
glPopMatrix();
glFlush();
}
void main (int argc, char **argv){
glutInitWindowPosition(150,150);
glutInitWindowSize(350,350);
glutCreateWindow("Xaphyra Aura : Baling-baling warna ");
gluOrtho2D(-50.,50.,-50.,50.);
glutDisplayFunc(display);
glutKeyboardFunc(myKeyboard);
glutTimerFunc(10,update,0);
glutMainLoop();
}
Output
Jika, ditekan huruf “p’ akan berwarna Jika, ditekan huruf “o’ akan berwarna
hijau kuning