0% found this document useful (0 votes)
42 views

2D Transformations and Homogeneous Coordinates: DR Nicolas Holzschuch

1) The document introduces 2D transformations like translation, scaling, and rotation and describes how to represent them using homogeneous coordinates and matrix notation. 2) Homogeneous coordinates allow all transformations to be represented as matrix multiplications, providing a consistent notation. 3) Transformations are used in computer graphics for tasks like converting between model and screen coordinates and handling mouse clicks in a window system.

Uploaded by

Nirmalya Seth
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views

2D Transformations and Homogeneous Coordinates: DR Nicolas Holzschuch

1) The document introduces 2D transformations like translation, scaling, and rotation and describes how to represent them using homogeneous coordinates and matrix notation. 2) Homogeneous coordinates allow all transformations to be represented as matrix multiplications, providing a consistent notation. 3) Transformations are used in computer graphics for tasks like converting between model and screen coordinates and handling mouse clicks in a window system.

Uploaded by

Nirmalya Seth
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 25

2D transformations and

homogeneous coordinates
Dr Nicolas Holzschuch
University of Cape Town
e-mail: [email protected]

Modified by Longin Jan Latecki
[email protected]

Map of the lecture
Transformations in 2D:
vector/matrix notation
example: translation, scaling, rotation
Homogeneous coordinates:
consistent notation
several other good points (later)
Composition of transformations
Transformations for the window system
Transformations in 2D
In the application model:
a 2D description of an object (vertices)
a transformation to apply
Each vertex is modified:
x = f(x,y)
y = g(x,y)
Express the modification
Translations
Each vertex is modified:
x = x+t
x

y = y+t
y
Before
After
Translations: vector notation
Use vector for the notation:
makes things simpler
A point is a vector:

A translation is merely a vector sum:
P = P + T
x
y



(

(
Scaling in 2D
Coordinates multiplied by the scaling
factor:
x = s
x
x
y = s
y
y
Before
After
Scaling in 2D, matrix notation
Scaling is a matrix multiplication:
P = SP
'
x
'
y



(

(
=
s
x
0
0 s
y



(

(
x
y



(

(
Rotating in 2D
New coordinates depend on both x and y
x = cosu x - sinu y
y = sinu x + cosu y
Before
After
u
Rotating in 2D, matrix notation
A rotation is a matrix multiplication:
P=RP
'
x
'
y



(

(
=
cosu sinu
sinu cosu



(

(
x
y



(

(
2D transformations, summary
Vector-matrix notation simplifies writing:
translation is a vector sum
rotation and scaling are matrix-vector
multiplication
I would like a consistent notation:
that expresses all three identically
that expresses combination of these also
identically
How to do this?
Homogeneous coordinates
Introduced in mathematics:
for projections and drawings
used in artillery, architecture
used to be classified material (in the 1850s)
Add a third coordinate, w
A 2D point is a 3 coordinates vector:
x
y
w





(

(
(
(
Homogeneous coordinates (2)
Two points are equal if and only if:
x/w = x/w and y/w= y/w
w=0: points at infinity
useful for projections and curve drawing
Homogenize = divide by w.
Homogenized points:
x
y
1





(

(
(
(
Translations with homogeneous
' x
' y
' w





(

(
(
(
=
1 0 t
x
0 1 t
y
0 0 1





(

(
(
(
x
y
w





(

(
(
(
' x
' y
' w





=
=
=
x + wt
x
y + wt
y
w
' x
'
w
' y
'
w
=
=
x
w
+t
x
y
w
+t
y



Scaling with homogeneous
' x
' y
' w





(

(
(
(
=
s
x
0 0
0 s
y
0
0 0 1





(

(
(
(
x
y
w





(

(
(
(
' x
' y
' w





=
=
=
s
x
x
s
y
y
w
' x
'
w
' y
'
w
=
=
s
x
x
w
s
y
y
w



Rotation with homogeneous
' x
' y
' w





(

(
(
(
=
cosu sinu 0
sinu cosu 0
0 0 1





(

(
(
(
x
y
w





(

(
(
(
' x
' y
' w





=
=
=
cosux sinuy
sin ux + cosuy
w
' x
'
w
' y
'
w
=
=
cosu
x
w
sinu
y
w
sinu
x
w
+ cosu
y
w



Composition of transformations
To compose transformations, multiply
the matrices:
composition of a rotation and a translation:
M = RT
all transformations can be expressed as
matrices
even transformations that are not
translations, rotations and scaling
Rotation around a point Q
Rotation about a point Q:
translate Q to origin (T
Q
),
rotate about origin (R
O
)
translate back to Q (- T
Q
).
P=(-T
Q
)R
O
T
Q
P
Beware!
Matrix multiplication is not commutative
The order of the transformations is vital
Rotation followed by translation is very different
from translation followed by rotation
careful with the order of the matrices!
Small commutativity:
rotation commute with rotation, translation with
translation
From World to Window
Inside the application:
application model
coordinates related to the model
possibly floating point
On the screen:
pixel coordinates
integer
restricted viewport: umin/umax, vmin/vmax
From Model to Viewport
xmin xmax
ymin
ymax
From Model to Viewport
Model is (xmin,ymin)-(xmax,ymax)
Viewport is (umin,vmin)-(umax,vmax)
Translate by (-xmin,-ymin)
Scale by
Translate by (umin,vmin)

M = TST
umax-umin
xmax-xmin
vmax-vmin
ymax-ymin
,
( )
From Model to Viewport
u
v
' w





(

(
(
(
= M
x
y
w





(

(
(
(
Model Coordinates
Pixel Coordinates
Mouse position: inverse problem
Mouse click: coordinates in pixels
We want the equivalent in World Coord
because the user has selected an object
to draw something
for interaction
How can we convert from window
coordinates to model coordinates?
Simply inverse the matrix:


Mouse click: inverse problem
M
1
=( ' T ST)
1
x
y
w





(

(
(
(
= M
1
u
v
' w





(

(
(
(
Pixels coordinates
Model Coordinates
2D transformations: conclusion
Simple, consistent matrix notation
using homogeneous coordinates
all transformations expressed as matrices
Used by the window system:
for conversion from model to window
for conversion from window to model
Used by the application:
for modeling transformations

You might also like