Presentation is loading. Please wait.

Presentation is loading. Please wait.

Computer Graphics using OpenGL, 3 rd Edition F. S. Hill, Jr. and S. Kelley Chapter 3 Additional Drawing Tools PART I.

Similar presentations


Presentation on theme: "Computer Graphics using OpenGL, 3 rd Edition F. S. Hill, Jr. and S. Kelley Chapter 3 Additional Drawing Tools PART I."— Presentation transcript:

1 Computer Graphics using OpenGL, 3 rd Edition F. S. Hill, Jr. and S. Kelley Chapter 3 Additional Drawing Tools PART I

2

3

4

5

6

7

8

9

10

11 Moving it around

12

13

14

15

16

17 Preview

18 Preview (2)

19 World Windows and viewports

20

21 More on Coordinate Systems We have been using the coordinate system of the screen window (in pixels). The range is from 0 (left) to some value screenWidth – 1 in x, and from 0 (usually top) to some value screenHeight –1 in y. –We can use only positive values of x and y. –The values must have a large range (several hundred pixels) to get a reasonable size drawing.

22 Coordinate Systems (2) It may be much more natural to think in terms of x varying from, say, -1 to 1, and y varying from –100.0 to 20.0. We want to separate the coordinates we use in a program to describe the geometrical object from the coordinates we use to size and position the pictures of the objects on the display. Description is usually referred to as a modeling task, and displaying pictures as a viewing task.

23 Coordinate Systems (3) The space in which objects are described is called world coordinates (the numbers used for x and y are those in the world, where the objects are defined). World coordinates use the Cartesian xy- coordinate system used in mathematics, based on whatever units are convenient.

24 Coordinate Systems (4) We define a rectangular world window in these world coordinates. The world window specifies which part of the world should be drawn: whichever part lies inside the window should be drawn, and whichever part lies outside should be clipped away and not drawn. OpenGL does the clipping automatically.

25 Coordinate Systems (5) In addition, we define a rectangular viewport in the screen window on the display. A mapping (consisting of scalings [change size] and translations [move object]) between the world window and the viewport is established by OpenGL. The objects inside the world window appear automatically at proper sizes and locations inside the viewport (in screen coordinates, which are pixel coordinates on the display).

26 Coordinate Systems Example We want to graph Sinc(0) = 1 by definition. Interesting parts of the function are in -4.0 ≤ x ≤ 4.0.

27 Coordinate Systems Example (2) The program which graphs this function is given in Fig. 3.3. page 93-94 The function setWindow sets the world window size: void setWindow(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top) { glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(left, right, bottom, top);}

28 Coordinate Systems Example (3) The function setViewport sets the screen viewport size: void setViewport(GLint left, GLint right, GLint bottom, GLint top) { glViewport(left, bottom, right - left, top - bottom);} Calls: setWindow(-5.0, 5.0, -0.3, 1.0); setViewport(0, 640, 0, 480);

29 Windows and Viewports We use natural coordinates for what we are drawing (the world window). OpenGL converts our coordinates to screen coordinates when we set up a screen window and a viewport. The viewport may be smaller than the screen window. The default viewport is the entire screen window. The conversion requires scaling and shifting: mapping the world window to the screen window and the viewport.

30

31

32

33

34 Windows and Viewport

35 Mapping Windows Windows are described by their left, top, right, and bottom values, w.l, w.t, w.r, w.b. Viewports are described by the same values: v.l, v.t, v.r, v.b, but in screen window coordinates.

36 Mapping (2) We can map any aligned rectangle to any other aligned rectangle. –If the aspect ratios of the 2 rectangles are not the same, distortion will result.

37 Window-to-Viewport Mapping We want our mapping to be proportional: for example, if x is ¼ of the way between the left and right world window boundaries, then the screen x (s x ) should be ¼ of the way between the left and right viewport boundaries.

38 Window-to-Viewport Mapping (2) This requirement forces our mapping to be linear. –sx= Ax + C, sy = B y + D –We require (sx – V.l)/(V.r – V.l) = (x – W.l)/(W.r – W.l), giving sx = x*[(V.r-V.l)/(W.r-W.l)] + {V.l – W.l*[(V.r- V.l)/(W.r-W.l)]}, or A = (V.r-V.l)/(W.r-W.l), C = V.l – A*w.l

39 Window-to-Viewport Mapping (3) –We likewise require (sy – V.b)/(V.t – V.b) = (y – W.b)/(W.t – W.b), giving B = (V.t-V.b)/(W.t-W.b), D = V.b – B*W.b Summary: sx = A x + C, sy = B y + D, with

40

41

42

43

44

45

46


Download ppt "Computer Graphics using OpenGL, 3 rd Edition F. S. Hill, Jr. and S. Kelley Chapter 3 Additional Drawing Tools PART I."

Similar presentations


Ads by Google