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
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
fungsi tombol
a. tombol A untuk zoom (+) objekb.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 (); }
thank you code 3d lampionnya, minta penjelasannya dong, boleh ngak?
ReplyDeletePenjelasannya sudah ada pada komen codingnya gan...
Deleteijin sharing blog Opengl, moga2 blog ini bisa bermanfaat, ada 100 artikel lebih tentang pemrograman grafik dan game, juga dilengkapi dengan source code yang bisa di download
ReplyDeletewww.heriadyblog.blogspot.co.id
Trims