Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehIrwan Chandra Telah diubah "6 tahun yang lalu
1
BAB 4 Tools untuk Menggambar : Window dan viewport
& Evang’zzzz
2
Mengenal ViewPort dan World Coordinate
Gambar 4.1. World Window dan ViewPort
3
Gambar 4.2. Pemetaan dari World Coordinate ke 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.
4
untuk suatu konstanta A, B, C, dan D.
Sumbu sx terhadap x dan sumbu sy terhadap y, masing-masing dinyatakan dengan : sx = Ax + C sy = By + D untuk suatu konstanta A, B, C, dan D. Konstanta A dan B menskala sumbu x dan y, sedangkan C dan D menggeser obyek. Dengan menggunakan perbandingan skala A, B, C, dan D masing-masing dapat dinyatakan sebagai berikut : (4.1)
5
Perhatikan gambar di bawah ini
Contoh : Perhatikan gambar di bawah ini (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). (4.2)
6
Dengan menggunakan rumus 4.1 dan 4.2 diperoleh
Gambar 4.3. Contoh pemetaan Window dan Viewport Dengan menggunakan rumus 4.1 dan 4.2 diperoleh A= 180, C = 40, B = 240 dan D = 60 Sehingga pemetaan dari world ke viewport menggunakan persamaan berikut ini. sx= 180x + 40 sy= 240y + 60
7
Dalam OpenGL, pemetaan tersebut dinyatakan
dengan: glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 2.0, 0.0, 2.0); // mengatur window glViewport(40, 60, 360, 240); // mengatur viewport Kalau anda perhatikan pada contoh-contoh program materi 2, perintah-perintah ini adalah bagian dari fungsi init().
8
LATIHAN : Buatlah program untuk menampilkan konfigurasi hexagon (6-gon/segi enam) seperti gambar di bawah ini.
9
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); }
10
void ngon(int n, float cx, float cy, float radius, float rotAngel)
{ double angel, angelInc; int k; if(n<3) return; angel = rotAngel * /180; angelInc = 2 * /n; glVertex2f(radius * cos(angel)+cx, radius * sin(angel) +cy); for (k=0; k<n;k++) angel+=angelInc; }
11
void myDisplay(void){
glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_STRIP); ngon(6,250,250,150,90); glEnd(); glFlush();} void main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500,500); glutCreateWindow(" TUGAS"); glutDisplayFunc(myDisplay); myInit(); glutMainLoop(); }
12
TUGAS: Modifikasilah rumus n-gon diatas sehingga menjadi seperti di bawah ini
13
TUGAS
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.