Presentation is loading. Please wait.

Presentation is loading. Please wait.

GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Similar presentations


Presentation on theme: "GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics."— Presentation transcript:

1 GRAFIKA KOMPUTER ~ M. Ali Fauzi

2 Drawing 2 D Graphics

3 VIEWPORT TRANSFORMATION

4 Recall :Coordinate System glutReshapeFunc(reshape); void reshape(int w, int h) { glViewport(0,0,(GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); }

5 World Coordinate System

6 00 1 2 -2 1 2

7 World Coordinate System ~ The representation of an object is measured in some physical or abstract units. ~ Space in which the object geometry is defined.

8 World Window 0 1 2 -2 1 2

9 World Window 0 1 2 -2 1 2

10 World Window ~ Rectangle defining the part of the world we wish to display. ~ Area that can be seen (what is captured by the camera), measured in OpenGL coordinates.

11 World Window ~ Known as clipping-area void reshape(int w, int h) { glViewport(0,0,(GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); }

12 The Default The default OpenGL 2D clipping-area is an orthographic view with x and y in the range of -1.0 and 1.0, i.e., a 2x2 square with centered at the origin.

13 World Window ~ Reset to the default void reshape(int w, int h) { glViewport(0,0,(GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); }

14 Viewport Screen window Interface Window Viewport

15 Screen Coordinate System ~ Space in which the image is displayed ~ For example : 800 x 600 pixels

16 Interface Window ~ Visual representation of the screen coordinate system for windowed displays glutInitWindowSize(320, 320); glutInitWindowPosition(50, 50);

17 Vewport ~ A rectangle on the interface window defining where the image will appear, ~ The default is the entire screen or interface window.

18 Viewport

19 Interface Window ~ Set the viewport to the entire screen / window void reshape(int w, int h) { glViewport(0,0,(GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1.0, 1.0, -1.0, 1.0); }

20 Interface Window ~ Set the viewport to half of the screen / window glutInitWindowSize(320, 320); glutInitWindowPosition(50, 50); -------------------------------- glViewport(0,0,160,160);

21 Viewport Screen window Interface Window Viewport

22

23 Viewport Transformation ~ The Process called viewport transformation

24 THE ASPECT RATIO PROBLEM

25 The distortion Screen window Interface Window Viewport

26 The distortion Screen window Interface Window Viewport

27 Ratio ~ R = Aspect Ratio of World

28 Ratio

29 Keeping the Ratio Screen window Interface Window Viewport

30 Keeping the Ratio Screen window Interface Window Viewport

31 The Startegy ~ To avoid distortion, we must change the size of the world window accordingly. ~ For that, we assume that the initial world window is a square with side length L

32 The Startegy ~ Default glOrtho2D (-L, L, -L, L); ~ For example L=1, glOrtho2D (-1, 1, -1, 1);

33 The Startegy if (w <= h) glOrtho2D(-L, L, -L * h/w, L * h/w); else glOrtho2D(-L * w/h, L * w/h, -L, L); if (w <= h) glOrtho2D(-1, 1, -1 * h/w, 1 * h/w); else glOrtho2D(-1 * w/h, 1 * w/h, -1, L);

34 The Startegy

35 ~ A possible solution is to change the world window whenever the viewport of the interface window were changed. ~ So, the callback Glvoid reshape(GLsizei w, GLsizei h) must include the following code :

36 void reshape(GLsizei width, GLsizei height) { if (height == 0) height = 1; GLfloat aspect = (GLfloat)width/(GLfloat)height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (width >= height) { gluOrtho2D(-1.0 * aspect, 1.0 * aspect, -1.0, 1.0); } else { gluOrtho2D(-1.0, 1.0, -1.0 / aspect, 1.0 / aspect); }

37 /* Handler for window re-size event. Called back when the window first appears and whenever the window is re-sized with its new width and height */ void reshape(GLsizei width, GLsizei height) { // GLsizei for non-negative integer // Compute aspect ratio of the new window if (height == 0) height = 1; // To prevent divide by 0 GLfloat aspect = (GLfloat)width / (GLfloat)height; // Set the viewport to cover the new window glViewport(0, 0, width, height); // Set the aspect ratio of the clipping area to match the viewport glMatrixMode(GL_PROJECTION); glLoadIdentity(); // Reset the projection matrix if (width >= height) { // aspect >= 1, set the height from -1 to 1, with larger width gluOrtho2D(-1.0 * aspect, 1.0 * aspect, -1.0, 1.0); } else { // aspect < 1, set the width to -1 to 1, with larger height gluOrtho2D(-1.0, 1.0, -1.0 / aspect, 1.0 / aspect); }

38 2 D TRANSFORMATION

39 Transformation Is The geometrical changes of an object from a current state to modified state.

40 Why Needed? To manipulate the initially created object and to display the modified object without having to redraw it

41 Transformation Pipeline Vertex Modelview Matrix Modelview Matrix Projection Matrix Projection Matrix Perspective Division Perspective Division Viewport Transformation Viewport Transformation Object Coordinates Object Coordinates Eye Coordinates Eye Coordinates Clip Coordinates Clip Coordinates Normalized device Coordinates Normalized device Coordinates Window Coordinates Window Coordinates GL_MODELVIEW mode glTranslate() glRotate() glScale() glLoadMatrix() glMultMatrix() gluLookAt() GL_PROJECTION mode glOrtho() gluOrtho2D() glFrustum() gluPerspective() glViewport()

42 Types of Transformation ~ Modeling. In 3D graphics, handles moving objects around the scene. ~ Viewing. In 3D graphics, specifies the location of the camera.

43 Types of Transformation ~ Projection. Defines the viewing volume and clipping planes from eye coordinate to clip coordinates.

44 Types of Transformation ~ Viewport. Maps the projection of the scene into the rendering window. ~ Modelview. Combination of the viewing and modeling transformations.

45 Transformation Matrix Transformations in OpenGL using matrix concept

46 Matrix Modes ~ ModelView Matrix (GL_MODELVIEW) These concern model-related operations such as translation, rotation, and scaling, as well as viewing transformations.

47 Matrix Modes ~ Projection Matrix (GL_PROJECTION) Setup camera projection and cliiping-area

48 Transformation Pipeline Vertex Modelview Matrix Modelview Matrix Projection Matrix Projection Matrix Perspective Division Perspective Division Viewport Transformation Viewport Transformation Object Coordinates Object Coordinates Eye Coordinates Eye Coordinates Clip Coordinates Clip Coordinates Normalized device Coordinates Normalized device Coordinates Window Coordinates Window Coordinates GL_MODELVIEW mode glTranslate() glRotate() glScale() glLoadMatrix() glMultMatrix() gluLookAt() GL_PROJECTION mode glOrtho() gluOrtho2D() glFrustum() gluPerspective() glViewport()

49 Why do we use matrix? ~ More convenient organization of data. ~ More efficient processing ~ Enable the combination of various concatenations

50 THE MATRIX

51 Matrix addition and subtraction a b c d  a  c b  d =

52 Matrix addition and subtraction 1 -3 5 6 + =

53 Matrix addition and subtraction 1 -3 5 6 + = 6 3

54 Matrix addition and subtraction 1 -3 + = 3 1 -1 4

55 Matrix addition and subtraction 1 -3 + = 3 1 -1 4 Tak boleh

56 Matrix Multiplication abcdabcd efghefgh. = a.e + b.g a.f + b.h c.e + d.g c.f + d.h

57 Matrix Multiplication abab efghefgh. = a.e + b.g a.f + b.h

58 Matrix Multiplication 1212 12311231. =

59 1212 12311231. = 6

60 1212 12311231. =

61 1212 12311231. = Tak boleh

62 Matrix Types efef efef Row VectorColumn Vector

63 Matrix Multiplication abcdabcd efef. = efef abcdabcd. = efef acbdacbd. =

64 abcdabcd efef. = a.e + b.f c.e + d.f efef abcdabcd. = a.e + c.f b.e + d.f efef acbdacbd. = a.e + b.f c.e + d.f

65 Matrix Math We’ll use the column-vector representation for a point.

66 Matrix Math Which implies that we use pre- multiplication of the transformation – it appears before the point to be transformed in the equation.

67 THE TRANSFORMATION

68 Translation A translation moves all points in an object along the same straight-line path to new positions.

69 Translation The path is represented by a vector, called the translation or shift vector. x’ y’ xyxy txtytxty = + New Position Current Position Translation Vector P' = P + T

70 Translation x’ y’ xyxy txtytxty = + (2, 2) t x = 6 t y =4 ? x’ y’ 2222 6464 = +

71 Translation x’ y’ xyxy txtytxty = + (2, 2) t x = 6 t y =4 ? 8686 2222 6464 = +

72 Rotation A rotation repositions all points in an object along a circular path in the plane centered at the pivot point.

73 Rotation  P P’ p ' x = p x cos  – p y sin  p ' x = p x cos  – p y sin  p ' y = p x sin  + p y cos  p ' y = p x sin  + p y cos 

74 Rotation The transformation using Rotation Matrix New Position Rotation Matrix Current Position P' = R. P

75 Rotation The transformation using Rotation Matrix New Position Rotation Matrix Current Position P' = R. P

76 Rotation Find the transformed point, P’, caused by rotating P= ( 5, 1 ) about the origin through an angle of 90 .

77 Rotation

78 Scaling Scaling changes the size of an object and involves two scale factors, Sx and Sy for the x- and y- coordinates respectively.

79 Scaling Scales are about the origin. P P’ p' x = s x p x p' y = s y p y

80 Scaling The transformation using Scale Matrix New Position Scale Matrix Current Position P' = S P

81 Scaling The transformation using Scale Matrix New Position Scale Matrix Current Position P' = S P

82 Scaling If the scale factors are in between 0 and 1  the points will be moved closer to the origin  the object will be smaller.

83 Scaling P(2, 5), Sx = 0.5, Sy = 0.5 Find P’ ? p' x = s x p x p' y = s y p y P(2, 5) P’

84 Scaling If the scale factors are larger than 1  the points will be moved away from the origin  the object will be larger.

85 Scaling P(2, 5), Sx = 2, Sy = 2 Find P’ ? p' x = s x p x p' y = s y p y P(2, 5) P’

86 Scaling If the scale factors are not the same, Sx  Sy  differential scaling Change in size and shape

87 Scaling If the scale factors are the same, Sx = Sy  uniform scaling

88 Scaling P(1, 3), Sx = 2, Sy = 5 square  rectangle p' x = s x p x p' y = s y p y P(1, 2) P’

89 Scaling What does scaling by 1 do? Sx=1, Sy=1

90 Scaling What does scaling by 1 do? Sx=1, Sy=1  Nothing changed What is that matrix called?

91 Scaling What does scaling by 1 do? Sx=1, Sy=1  Nothing changed What is that matrix called? Identity Matrix

92 Scaling What does scaling by a negative value do? Sx=-2, Sy=-2

93 Scaling What does scaling by a negative value do? Sx=-2, Sy=-2  Moved to Different Quadran

94 COMBINING TRANSFORMATIONS

95 Combining Transf For example, we want to rotate/scale then we want to do translation P' = M P + A

96 Combining Transf For example, we want to translate, then we want to rotate and sclae P' = S R (A + P)

97 Combining Transf P (Px,Py)=( 4, 6 ) : Translate( 6, -3 ) - > Rotation( 60˚ ) -> Scaling ( 0.5, 2.0 ) P' = S R (A + P)

98 Combining Transf

99 To combine multiple transformations, we must explicitly compute each transformed point. P' = S R (A + P)

100 Combining Transf It’d be nicer if we could use the same matrix operation all the time. But we’d have to combine multiplication and addition into a single operation. P' = S R (A + P)

101 Combining Transf Let’s move our problem into one dimension higher

102 HOMOGENOUS COORDINATES

103 Homogenous Coord Let point (x, y) in 2D be represented by point (x, y, 1) in the new space. yy x x w 

104 Homogenous Coord ~ Scaling our new point by any value a puts us somewhere along a particular line: (ax, ay, a). ~ A point in 2D can be represented in many ways in the new space. ~ (2, 4) ----------- > (2, 4, 1) or (8, 16, 4) or (6, 12, 3) or (2, 4, 1) or etc.

105 Homogenous Coord We can always map back to the original 2D point by dividing by the last coordinate (15, 6, 3)  (5, 2). (60, 40, 10)  ?.

106 Homogenous Coord The fact that all the points along each line can be mapped back to the same point in 2D gives this coordinate system its name – homogeneous coordinates.

107 Homogenous Coord With homogeneous coordinates, we can combine multiplication and addition into a single operation.

108 Homogenous Coord Point in column-vector: Our point now has three coordinates. So our matrix is needs to be 3x3.

109 Homogenous Coord Translation: x’ y’ xyxy txtytxty = +

110 Homogenous Coord Rotation:

111 Homogenous Coord Scaling:

112 Homogenous Coord P (Px,Py)=( 4, 6 ) : Translate( 6, -3 ) - > Rotation( 60˚ ) -> Scaling ( 0.5, 2.0 )

113 Homogenous Coord We can represent any sequence of transformations as a single matrix

114 Homogenous Coord Does the order of operations matter?

115 Homogenous Coord Yes, the order does matter! 1.Translate 2.Rotate 1.Rotate 2.Translate

116 Homogenous Coord Yes, the order does matter! A. B = B. A?

117 Homogenous Coord Yes, the order does matter! A. B  B. A

118 Homogenous Coord Yes, the order does matter! (A.B).C = A.(B.C)?

119 Homogenous Coord Yes, the order does matter! (A.B).C = A.(B.C)                          dhlcfldgjcejdhkcfkdgicei bhlaflbgjaejbhkafkbgiaei lk ji dhcfdgce bhafbgae                             lk ji hg fe dc ba                          dhldgjcflcejdhkdgicfkcei bhlbgjaflaejbhkbgiafkaei hlgjhkgi flejfkei dc ba                             lk ji hg fe dc ba

120 Composite Transformation Matrix Arrange the transformation matrices in order from right to left. General Pivot- Point Rotation Operation :- 1.Translate (pivot point is moved to origin) 2.Rotate about origin 3.Translate (pivot point is returned to original position ) T(pivot) R(  ) T(–pivot)

121 1 0 -t x 0 1 -t y 0 0 1 cos  -sin  0 sin  cos  0 0 0 1 1 0 t x 0 1 t y 0 0 1.. cos  -sin  -t x cos  + t y sin  + t x sin  cos  -t x sin  - t y cos  + t y 0 0 1 cos  -sin  -t x cos  + t y sin  sin  cos  -t x sin  - t y cos  0 0 1 1 0 t x 0 1 t y 0 0 1. Composite Transformation Matrix

122 Reflection: x-axisy-axis Other Transf

123 Reflection: origin line x=y Other Transf

124 Shearing-x Shearing-y SebelumSesudah SebelumSesudah Shearing


Download ppt "GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics."

Similar presentations


Ads by Google