tugas transformasi 2D dan 3D openGL c++

Belajar Grafika komputer

selamat datang di blog arsipbertuah . pada posting saya kali ini. saya akan berbagi koding c++ untuk membuat gambar 2D dan  3D.

Pengertian grafika komputer

grafik komputer adalah gambar yang dihasilkan oleh komputer, yang hasilnya sudah sering kita lihat seperti di majalah dan televisi. Disini dibahas bahwa tiap karakter yang dihasilkan diambil dari library dari bentuk karakter yang ada pada memori komputer. Gambar-gambar yang berada pada majalah atau televisi tersebut ada beberapa yang terlihat sangat natural, sehingga kita para pembaca akan sulit membedakan mereka buatan atau hasil dari fotografi asli. Selain itu grafik komputer juga digunakan untuk membuat design dari background ataupun objekobjek dalam game di komputer. Gambar-gambar yang ada pada game itu adalah gabungan antara kenyataan dan imajinasi dari programmer-nya. Dalam bidang lain, grafik komputer digunakan dalam dunia seni, entertainment, dan publikasi

Pengrtian tranformasi 2D

Transformasi dua dimensi adalah suatu model atau teknik memindahkan atau mengubah nilai posisi objek dalam sistem koordinat dua dimensi. pemindahan objek ini dapat diartikan sebagai pemindahan titik. 



Contoh Transformasi 2D mengambar baling-baling 

clip_image005 

source code

#include "stdlib.h"
#include "gl/glut.h"
#include "windows.h"
int y=0;
int x=0;
int z=0;
int z2=360;
int s=0;
void drawQuad1() {
glBegin (GL_POLYGON);
glColor3f(0,0,0);
glVertex2i(0,0);
glVertex2i(-50,-200);
glVertex2i(50,-200);
glVertex2i(0,0);
glVertex2i(-50,200);
glVertex2i(50,200);
glColor3f(1,0,0);
glVertex2i(0,0);
glVertex2i(-50,125);
glVertex2i(50,125);
glVertex2i(0,0);
glVertex2i(-50,-125);
glVertex2i(50,-125);
glEnd();
}
void renderScene(void){
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(1,1,1,1);
glRotatef(x,0,0,1);
drawQuad1();
glFlush();
}
void timer (int value){
if (z <= 360){
x = 1;
z +=1;
}
if (z > 360){
x = +1;
z2 +=1;
}
/*if (z2 < 0) {
x = 1;
z = 0;
z2 = 360;
}*/
glutPostRedisplay();
glutTimerFunc(1, timer, 0);
}
void Keyboard(GLubyte key, GLint x, GLint y){
if (key == 'f' || key=='F') {
glutFullScreen ();
}
{
int foo;
foo = x + y;
if ('q' == key || 'Q' == key ||27 ==key)
exit (0);
}
}
void main(int argc, char **argv){
glutInit(&argc, argv);
glutInitWindowPosition (100,100);
glutInitWindowSize (300,300);
glutCreateWindow ("TUGAS KIKI HERMANSYAH 123510665");
gluOrtho2D(-200.0,200.0,-200.0,200.0);
glutDisplayFunc(renderScene);
glutTimerFunc(5,timer,0);
glutMainLoop();
}


Pengertian Tranformasi 3D

Grafika komputer 3D adalah representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Hasil ini kadang kala ditampilkan secara waktu nyata (real time) untuk keperluan simulasi. Secara umum prinsip yang dipakai adalah mirip dengan grafika komputer 2D, dalam hal: penggunaan algoritma, grafika vektor, model frame kawat (wire frame model), dan grafika rasternya.
Grafika komputer 3D sering disebut sebagai model 3D. Namun, model 3D ini lebih menekankan pada representasi matematis untuk objek 3 dimensi. Data matematis ini belum bisa dikatakan sebagai gambar grafis hingga saat ditampilkan secara visual pada layar komputer atau printer. Proses penampilan suatu model matematis ke bentuk citra 2 D biasanya dikenal dengan proses 3D rendering

Contoh Transformasi 3D gambar lampion


clip_image007

fungsi tombol

a. tombol A untuk zoom (+) objek
b.tombol D untuk zoom ( - )objek
c.tombol X untuk rotasi sumbu x
d. tombol Y untuk rotasi sumbu y
e. tombol Z untuk rotasi sumbu y

source code lampion

#include <GL/glut.h>
#include <windows.h>
int w=800, h=600, z=0;
int x1=0, y1=0, z1=0, sudut=0;
void renderScene (void) {
static float alpha =0;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor (0, 0, 0, 0);
glLoadIdentity ();
glTranslatef (0, 0, z);
glRotatef (sudut, x1, y1, z1);
glRotatef (alpha,1,1,1);
glColor3f(1, 1, 0);
alpha = alpha +0.5;
//glutWireCube (3);//fungsi kubus
//glutSolidCube(3);//kubus penuh warna
glutWireSphere(2,90,90);//fungsi bola
//glutWireCone(2, 4, 25, 25);//fungsi kerucut
glColor3f(1,0,0);
glutWireTorus (4, 2, 90, 30);//fungsi donat
//glutWireTeapot (4);//fungsi ceret
//glutSolidIcosahedron ();//fungsi delima
//glutWireDodecahedron ();//fungsi bola
//glutWireTetrahedron();//fungsi piramida
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, 100.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
}
void Keyboard (GLubyte key, GLint x, GLint y) {
if (key == 'a' || key == 'A') z+=2;
if (key == 'd' || key == 'D') z-=2;
if (key == 'x' || key == 'X') {
x1=1;
y1=0;
z1=0;
sudut +=10;
}
if (key == 'y' || key == 'Y') {
x1=0;
y1=1;
z1=0;
sudut +=-10;
}
if (key == 'z'|| key == 'Z') {
x1=0;
y1=0;
z1=1;
sudut +=-10;
}
if ( key == 'f'|| key == 'F') {
glutFullScreen ();
}
{
int foo;
foo = x + y;
if ('q' == key || 'Q' == key || 27 == key)
exit (0);
}
}
void timer (int value) {
glutPostRedisplay ();
glutTimerFunc (1,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 ("3D");
gluOrtho2D (-w/2,w/2,-h/2,h/2);
glutDisplayFunc (renderScene);
glutReshapeFunc (resize);
glutKeyboardFunc (Keyboard);
glutTimerFunc (1,timer,0);
glutMainLoop ();
}

Komentar

Postingan populer dari blog ini

Cara Membuat Halaman Login Hotspot Berbeda pada 1 Mikrotik

UltraISO Premium Edition v9.5.3

Arti OSAKMJ