Top Banner
GRAFIKA KOMPUTER ~ M. Ali Fauzi
124
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

GRAFIKA KOMPUTER~ M. Ali Fauzi

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

Drawing

2D Graphics

Page 3: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

VIEWPORTTRANSFORMATION

Page 4: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Recall :Coordinate SystemglutReshapeFunc(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);

}

Page 5: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

World Coordinate System

Page 6: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

World Coordinate System

00 1 2-2 -1

1

2

-1

Page 7: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

World Coordinate System

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

Page 8: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

World Window

0 1 2-2 -1

1

2

-1

Page 9: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

World Window

0 1 2-2 -1

1

2

-1

Page 10: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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.

Page 11: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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);

}

Page 12: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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.

Page 13: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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);

}

Page 14: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

ViewportScreen

Screenwindow

InterfaceWindow

Viewport

Page 15: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Screen Coordinate System

~ Space in which the image is displayed

~ For example : 800x600 pixels

Page 16: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Interface Window

~ Visual representation of the screen coordinate system for windowed displays

glutInitWindowSize(320, 320); glutInitWindowPosition(50, 50);

Page 17: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Vewport

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

Page 18: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Viewport

Page 19: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Interface Window

~ Set the viewport to the entire screen / windowvoid 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);

}

Page 20: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Interface Window

~ Set the viewport to half of the screen / window

glutInitWindowSize(320, 320); glutInitWindowPosition(50, 50);

--------------------------------

glViewport(0,0,160,160);

Page 21: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

ViewportScreen

Screenwindow

InterfaceWindow

Viewport

Page 22: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Viewport

Page 23: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Viewport Transformation

~ The Process called viewport transformation

Page 24: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

THE ASPECT RATIOPROBLEM

Page 25: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

The distortionScreen

Screenwindow

InterfaceWindow

Viewport

Page 26: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

The distortionScreen

Screenwindow

InterfaceWindow

Viewport

Page 27: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Ratio

~ R = Aspect Ratio of World

Page 28: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Ratio

Page 29: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Keeping the RatioScreen

Screenwindow

InterfaceWindow

Viewport

Page 30: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Keeping the RatioScreen

Screenwindow

InterfaceWindow

Viewport

Page 31: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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

Page 32: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

The Startegy

~ DefaultglOrtho2D (-L, L, -L, L);

~ For example L=1, glOrtho2D (-1, 1, -1, 1);

Page 33: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

The Startegy

if (w <= h)glOrtho2D(-L, L, -L * h/w, L * h/w);

elseglOrtho2D(-L * w/h, L * w/h, -L, L);

if (w <= h)glOrtho2D(-1, 1, -1 * h/w, 1 * h/w);

elseglOrtho2D(-1 * w/h, 1 * w/h, -1, L);

Page 34: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

The Startegy

Page 35: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

The Startegy

~ 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 :

Page 36: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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);

} }

Page 37: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

/* 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);

} }

Page 38: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

2DTRANSFORMATION

Page 39: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Transformation

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

Page 40: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Why Needed?

To manipulate the initially created object and to display the modified object without having to redraw it

Page 41: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Transformation PipelineVertex Modelview

MatrixProjection

MatrixPerspective

DivisionViewport

Transformation

ObjectCoordinates

EyeCoordinates

ClipCoordinates

Normalizeddevice

Coordinates

WindowCoordinates

GL_MODELVIEW modeglTranslate()glRotate()glScale()glLoadMatrix()glMultMatrix()gluLookAt()

GL_PROJECTION modeglOrtho()gluOrtho2D()glFrustum()gluPerspective()

glViewport()

Page 42: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Types of Transformation

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

Page 43: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Types of Transformation

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

Page 44: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Types of Transformation

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

Page 45: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Transformation Matrix

Transformations in OpenGL using matrix concept

Page 46: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Modes

~ ModelView Matrix (GL_MODELVIEW)

These concern model-related operations such as translation, rotation, and scaling, as well as viewing transformations.

Page 47: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Modes

~ Projection Matrix (GL_PROJECTION)

Setup camera projection and cliiping-area

Page 48: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Transformation PipelineVertex Modelview

MatrixProjection

MatrixPerspective

DivisionViewport

Transformation

ObjectCoordinates

EyeCoordinates

ClipCoordinates

Normalizeddevice

Coordinates

WindowCoordinates

GL_MODELVIEW modeglTranslate()glRotate()glScale()glLoadMatrix()glMultMatrix()gluLookAt()

GL_PROJECTION modeglOrtho()gluOrtho2D()glFrustum()gluPerspective()

glViewport()

Page 49: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Why do we use matrix?

~ More convenient organization of data.~ More efficient processing~ Enable the combination of various concatenations

Page 50: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

THE MATRIX

Page 51: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix addition and subtraction

a

b

c

d a c

b d=

Page 52: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix addition and subtraction

1-3

56+

=

Page 53: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix addition and subtraction

1-3

56+

=63

Page 54: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix addition and subtraction

1-3

+ =

3 1-1 4

Page 55: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix addition and subtraction

1-3

+ =

3 1-1 4

Tak boleh

Page 56: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

a bc d

e fg h. =

a.e + b.g a.f + b.hc.e + d.g c.f + d.h

Page 57: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

a be fg h. = a.e + b.g a.f + b.h

Page 58: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

1 2 1 23 1. =

Page 59: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

1 2 1 23 1. = 6 6

Page 60: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

12

1 23 1. =

Page 61: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

12

1 23 1. = Tak boleh

Page 62: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Types

efe f

Row Vector Column Vector

Page 63: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

a bc d

ef. =

e fa bc d. =

e fa cb d. =

Page 64: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Multiplication

a bc d

ef. =

a.e + b.fc.e + d.f

e fa bc d. = a.e + c.f b.e + d.f

e fa cb d. = a.e + b.f c.e + d.f

Page 65: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Math

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

y

x

Page 66: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Matrix Math

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

DyCx

ByAx

y

x

DC

BA

Page 67: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

THETRANSFORMATION

Page 68: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Translation

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

Page 69: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Translation

The path is represented by a vector, called the translation or shift vector.

x’y’

xy

tx

ty

= +

New Position Current Position Translation Vector

P' = P + T

Page 70: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Translation

x’y’

xy

tx

ty

= +

(2, 2) tx= 6

ty=4

?

x’y’

22

64

= +

Page 71: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Translation

x’y’

xy

tx

ty

= +

(2, 2) tx= 6

ty=4

?

86

22

64

= +

Page 72: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Rotation

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

Page 73: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Rotation

P

P’

p'x = px cos – py sin

p'y = px sin + py cos

Page 74: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Rotation

The transformation using Rotation Matrix

New Position Rotation Matrix Current Position

P' = R . P

y

x

y

x

cossin

sincos

'

'

Page 75: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Rotation

The transformation using Rotation Matrix

New Position Rotation Matrix Current Position

P' = R . P

y

x

yx

yx

cossin

sincos

cossin

sincos

Page 76: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Rotation

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

Page 77: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Rotation

cossin

sincos

cossin

sincos

yx

yx

y

x

90cos190sin5

90sin190cos5

0115

1105

5

1

Page 78: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

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

Page 79: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

Scales are about the origin.

P

P’

p'x = sx • px

p'y = sy • py

Page 80: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

The transformation using Scale Matrix

New Position Scale Matrix Current Position

P' = S • P

y

x

Sy

Sx

y

x

0

0

'

'

Page 81: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

The transformation using Scale Matrix

New Position Scale Matrix Current Position

P' = S • P

y

x

Sy

Sx

ySy

xSx

0

0

.

.

Page 82: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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.

Page 83: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

P(2, 5), Sx = 0.5, Sy = 0.5Find P’ ?

p'x = sx • px

p'y = sy • py

P(2, 5)

P’

Page 84: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

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

Page 85: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

P(2, 5), Sx = 2, Sy = 2Find P’ ?

p'x = sx • px

p'y = sy • py

P(2, 5)

P’

Page 86: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

If the scale factors are not the same, Sx Sy differential scalingChange in size and shape

Page 87: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

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

Page 88: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

P(1, 3), Sx = 2, Sy = 5square rectangle

p'x = sx • px

p'y = sy • py

P(1, 2)

P’

Page 89: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

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

Page 90: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

What does scaling by 1 do?Sx=1 , Sy=1 Nothing changedWhat is that matrix called?

Page 91: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

What does scaling by 1 do?Sx=1 , Sy=1 Nothing changedWhat is that matrix called?Identity Matrix

y

x

y

x

10

01

Page 92: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

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

Page 93: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Scaling

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

Page 94: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

COMBINING TRANSFORMATIONS

Page 95: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Combining Transf

For example, we want to rotate/scale then we want to do translation

P' = M • P + A

Page 96: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Combining Transf

For example, we want to translate, then we want to rotate and sclae

P' = S • R • (A + P)

Page 97: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Combining Transf

P (Px,Py)=(4 , 6) : Translate(6 , -3) -> Rotation(60˚) -> Scaling

(0.5 , 2.0)P' = S • R • (A + P)

Page 98: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Combining Transf

3

10

3

6

6

4

'

'

Ty

Tx

Py

Px

y

x

2.10

4.2

3

10

5.087.0

87.05.0

60cos60sin

60sin60cos

'

'

Py

Px

y

x

3.20

2.1

2.10

4.2

20

05.0

0

0

'

'

Py

Px

Sy

Sx

y

x

Page 99: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Combining Transf

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

Page 100: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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)

Page 101: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Combining Transf

Let’s move our problem into one dimension higher

Page 102: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

HOMOGENOUS COORDINATES

Page 103: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

Let point (x, y) in 2D be represented by point (x, y, 1) in the new space.

y y

x

x

w

Page 104: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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.

Page 105: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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) ?.

Page 106: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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.

Page 107: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

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

Page 108: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

Point in column-vector:

Our point now has three coordinates. So our matrix is needs to be 3x3.

1

y

x

y

x

Page 109: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

Translation:

x’y’

xy

tx

ty

= +

1100

10

01

1

y

x

t

t

y

x

y

x

Page 110: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

Rotation:

y

x

y

x

cossin

sincos

'

'

1100

0cossin

0sincos

1

y

x

y

x

Page 111: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

Scaling:

1100

00

00

1

y

x

s

s

y

x

y

x

y

x

Sy

Sx

y

x

0

0

'

'

Page 112: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

P (Px,Py)=(4 , 6) : Translate(6 , -3) -> Rotation(60˚) -> Scaling

(0.5 , 2.0)

1

3.20

2.1

1

6

4

100

310

601

100

060cos60sin

060sin60cos

100

020

005.0

1

Qy

Qx

Page 113: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

We can represent any sequence of transformations as a single matrix

1

3.20

2.1

1

6

4

100

310

601

100

060cos60sin

060sin60cos

100

020

005.0

1

Qy

Qx

Page 114: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous Coord

Does the order of operations matter?

Page 115: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous CoordYes, the order does matter!

1. Translate2. Rotate

1. Rotate2. Translate

Page 116: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous CoordYes, the order does matter!A . B = B . A?

Page 117: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous CoordYes, the order does matter!A . B B . A

dhcfdgce

bhafbgae

hg

fe

dc

ba

hdgbhcga

fdebfcea

dc

ba

hg

fe

Page 118: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous CoordYes, the order does matter!(A.B).C = A.(B.C)?

Page 119: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Homogenous CoordYes, the order does matter!(A.B).C = A.(B.C)

ûëúù

êé

++++++++++++

=

úû

ùêë

é·ú

û

ùêë

é++++

=

dhlcfldgjcejdhkcfkdgiceibhlaflbgjaejbhkafkbgiaei

lkji

dhcfdgcebhafbgae

úû

ùêë

é·÷÷

ø

öççè

æúû

ùêë

é·ú

û

ùêë

é

lkji

hgfe

dcba

úû

ùêë

é++++++++++++

=

úû

ùêë

é++++

·úû

ùêë

é=

dhldgjcflcejdhkdgicfkceibhlbgjaflaejbhkbgiafkaei

hlgjhkgiflejfkei

dcba

÷÷ø

öççè

æúû

ùêë

é·ú

û

ùêë

é·ú

û

ùêë

é

lkji

hgfe

dcba

Page 120: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

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 origin3. Translate (pivot point is returned to original

position)

T(pivot) • R() • T(–pivot)

Page 121: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

T(pivot) • R() • T(–pivot)

1 0 -tx

0 1 -ty

0 0 1

cos -sin 0sin cos 0 0 0 1

1 0 tx

0 1 ty

0 0 1 . .

cos -sin -tx cos+ ty sin + tx

sin cos -tx sin - ty cos + ty

0 0 1

cos -sin -tx cos+ ty sin sin cos -tx sin - ty cos 0 0 1

1 0 tx

0 1 ty

0 0 1 .

Composite Transformation Matrix

Page 122: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Reflection: x-axis y-axis

100

010

001

100

010

001

Other Transf

Page 123: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

Reflection: origin line

x=y

100

010

001

100

001

010

Other Transf

Page 124: GRAFIKA KOMPUTER ~ M. Ali Fauzi. Drawing 2 D Graphics.

• Shearing-x

• Shearing-y

1100

010

01

1

)( Py

PxS

Qy

Qx

SxShear

1100

01

001

1

)( Py

Px

SQy

Qx

SyShear

Sebelum Sesudah

Sebelum Sesudah

Shearing