Bab 4 Tools untuk Menggambar : Window dan viewport
Mengenal ViewPort dan World Coordinate
Pemetaan dari World Coordinate ke ViewPort sx = terhadap x, sy = terhadap y, dinyatakan dgn: sx = Ax + C sy = By + D A dan B = menskala sumbu x dan y. C dan D = menggeser obyek.
Rumusnya:
Contoh pemetaan Window ke Viewport (w.l,w.r,w.t,w.b)= (0, 2.0, 0, 1.0) dan (v.l, v.r, v.t, v.b) = (40, 400, 60, 300).
A = vr - vl / wr - wl = 400 - 40 / 2 - 0 = 180 B = vt - vb / wt - wb = 60 - 300 / 0 -1 = -240 / -1 = 240 C = vl - A.wl = 40 - 180.0 = 40 D = vb - B.wb = 300 - 240.1 = 60 sx = 180x + 40 sy = 240 + 60
Dalam Open GL dinyatakan dengan : glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 2.0, 0.0, 2.0); // mengatur window glViewport(40, 60, 360, 240); // mengatur viewport
Hexagon Hexagon = segi 6 Pakai fungsi n-gon
Try This… #include <windows.h> #include <gl/gl.h> #include <gl/glut.h> #include <math.h> void myInit(void) { glClearColor(1.0, 1.0, 1.0, 0.0); glColor3f(0.0f, 0.0f, 0.0f); glMatrixMode(GL_PROJECTION); glPointSize(4.0); glLoadIdentity(); gluOrtho2D(0.0, 500.0, 0.0, 500.0); }
void ngon(int n, float cx, float cy, float radius, float rotAngel) { double angel, angelInc; int k; if(n<3) return; angel = rotAngel * 3.14159265/180; angelInc = 2 * 3.14159265/n; glVertex2f(radius * cos(angel)+cx, radius * sin(angel) +cy); for (k=0; k<n;k++) angel+=angelInc; }
void myDisplay(void){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_STRIP); ngon(6,250,250,150,60); glEnd(); glFlush(); } void main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500,500); glutCreateWindow(" Hexagon"); glutDisplayFunc(myDisplay); myInit(); glutMainLoop();
Latihan Modifikasi hexagon untuk membuat lingkaran:
Take Home
subject : GRAFKOMA nama file : TGS4_NIMLENGKAP subject : GRAFKOMA nama file : TGS4_NIMLENGKAP.txt paling lambat selasa minggu depan pukul 00.00 WIB ke email yg kemarin: w_majikanchikochoky@yahoo.co.id