bab 4 tools untuk menggambar : window dan viewport

Post on 23-Jan-2016

67 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

BAB 4 Tools untuk Menggambar : Window dan viewport. ^@^ & Evang’zzzz. Mengenal ViewPort dan World Coordinate. Gambar 4.1. World Window dan ViewPort. Gambar 4.2. Pemetaan dari World Coordinate ke ViewPort. - PowerPoint PPT Presentation

TRANSCRIPT

BAB 4BAB 4Tools untuk Tools untuk

Menggambar : Window Menggambar : Window dan viewportdan viewport

^@^ & Evang’zzzz^@^ & Evang’zzzz

Mengenal ViewPort dan Mengenal ViewPort dan World CoordinateWorld Coordinate

Gambar 4.1. World Window dan ViewPort

World coordinate dinyatakan dengan w, dan batas kiri (left), kanan (right), atas (top), dan bawah (bottom) masing-masing dinyatakan dengan w.l, w.r, w.t, w.b.

Koordinat viewport dinyatakan dengan v, dan batas kiri (left), kanan (right), atas (top), dan bawah (bottom) masing-masing dinyatakan dengan v.l, v.r, v.t, v.b.

Gambar 4.2. Pemetaan dari World Coordinate ke ViewPort

Sumbu sx terhadap x dan sumbu sy terhadap y, Sumbu sx terhadap x dan sumbu sy terhadap y, masing-masing dinyatakan dengan :masing-masing dinyatakan dengan :

sx = Ax + Csx = Ax + C

sy = By + Dsy = By + D

untuk suatu konstanta A, B, C, dan D.untuk suatu konstanta A, B, C, dan D.

Konstanta A dan B menskala sumbu x dan y,Konstanta A dan B menskala sumbu x dan y,

sedangkan C dan D menggeser obyek.sedangkan C dan D menggeser obyek.

Dengan menggunakan perbandingan skala A, B,Dengan menggunakan perbandingan skala A, B,

C, dan D masing-masing dapat dinyatakanC, dan D masing-masing dapat dinyatakan

sebagai berikut :sebagai berikut :

(4.1)

Contoh :Contoh :

Perhatikan gambar di bawah iniPerhatikan gambar di bawah ini

(w.l,w.r,w.t,w.b)= (0,2.0, 0, 1.0) dan (v.l, v.r,(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).v.t, v.b) = (40, 400, 60, 300).

(4.2)

Dengan menggunakan rumus 4.1 dan 4.2 diperolehA= 180, C = 40, B = 240 dan D = 60Sehingga pemetaan dari world ke viewport menggunakan persamaan berikut ini.sx= 180x + 40sy= 240y + 60

Gambar 4.3. Contoh pemetaan Window dan Viewport

Dalam OpenGL, pemetaan tersebut dinyatakanDalam OpenGL, pemetaan tersebut dinyatakandengan:dengan:

glMatrixMode(GL_PROJECTION);glMatrixMode(GL_PROJECTION);glLoadIdentity();glLoadIdentity();gluOrtho2D(0.0, 2.0, 0.0, 2.0); gluOrtho2D(0.0, 2.0, 0.0, 2.0);

// mengatur window// mengatur windowglViewport(40, 60, 360, 240);glViewport(40, 60, 360, 240);

// mengatur viewport// mengatur viewport

Kalau anda perhatikan pada contoh-contoh programKalau anda perhatikan pada contoh-contoh programmateri 2, perintah-perintah ini adalah bagian darimateri 2, perintah-perintah ini adalah bagian darifungsi init().fungsi init().

LATIHAN :LATIHAN :

Buatlah Buatlah program untuk program untuk menampilkan menampilkan konfigurasi konfigurasi hexagon (6-hexagon (6-gon/segi enam) gon/segi enam) seperti gambar seperti gambar di bawah ini.di bawah ini.

TRY TRY THIS…THIS…#include <windows.h>#include <windows.h>

#include <gl/gl.h>#include <gl/gl.h>#include <gl/glut.h>#include <gl/glut.h>#include <math.h>#include <math.h>

void myInit(void)void myInit(void){{

glClearColor(1.0, 1.0, 1.0, 0.0);glClearColor(1.0, 1.0, 1.0, 0.0);glColor3f(0.0f, 0.0f, 0.0f);glColor3f(0.0f, 0.0f, 0.0f);glMatrixMode(GL_PROJECTION);glMatrixMode(GL_PROJECTION);glPointSize(4.0);glPointSize(4.0);glLoadIdentity();glLoadIdentity();gluOrtho2D(0.0, 500.0, 0.0, 500.0);gluOrtho2D(0.0, 500.0, 0.0, 500.0);

}}

void ngon(int n, float cx, float cy, float radius, float rotAngel)void ngon(int n, float cx, float cy, float radius, float rotAngel){{

double angel, angelInc;double angel, angelInc;

int k;int k;if(n<3) return;if(n<3) return;angel = rotAngel * 3.14159265/180;angel = rotAngel * 3.14159265/180;angelInc = 2 * 3.14159265/n;angelInc = 2 * 3.14159265/n;glVertex2f(radius * cos(angel)+cx, radius * sin(angel) +cy);glVertex2f(radius * cos(angel)+cx, radius * sin(angel) +cy);for (k=0; k<n;k++)for (k=0; k<n;k++){{

angel+=angelInc;angel+=angelInc;glVertex2f(radius * cos(angel)+cx, radius * sin(angel) +cy);glVertex2f(radius * cos(angel)+cx, radius * sin(angel) +cy);

}}}}

void myDisplay(void){void myDisplay(void){glClear(GL_COLOR_BUFFER_BIT);glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_LINE_STRIP);glBegin(GL_LINE_STRIP);ngon(6,250,250,150,90);ngon(6,250,250,150,90);glEnd();glEnd();glFlush();}glFlush();}

void main(int argc, char** argv){void main(int argc, char** argv){glutInit(&argc, argv);glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(500,500);glutInitWindowSize(500,500);glutCreateWindow(" TUGAS");glutCreateWindow(" TUGAS");glutDisplayFunc(myDisplay);glutDisplayFunc(myDisplay);myInit();myInit();glutMainLoop();glutMainLoop();

}}

TUGAS:TUGAS: Modifikasilah rumus n-gon diatas sehingga Modifikasilah rumus n-gon diatas sehingga

menjadi seperti di bawah inimenjadi seperti di bawah ini

TUGASTUGAS

top related