Está en la página 1de 53

Computación gráfica y aplicaciones

IC3001–1–Primer semestre 2021


Transformaciones geométricas bidimensionales

Francisco Moreno H.
francisco.moreno@uoh.cl

Universidad de O´Higgins, Facultad de Ingenierı́a

cbn2021. Reproducción permitida bajo los


términos de la licencia de documentación libre CC-BY-NC 3.0.
Transformaciones bidimensionales básicas – Traslación

I Traslación: El desplazamiento de un punto P a un punto P0 , se obtiene sumando un vector con las distancias de
traslación (o de desplazamiento) T, donde:
   0  
x 0 x tx
P= ,P = ,T =
y y0 ty
Transformaciones bidimensionales básicas – Traslación

I Traslación: El desplazamiento de un punto P a un punto P0 , se obtiene sumando un vector con las distancias de
traslación (o de desplazamiento) T, donde:
   0  
x 0 x tx
P= ,P = ,T =
y y0 ty

I La relación entre ellos está dada por: P0 = P + T.


Transformaciones bidimensionales básicas – Traslación

I Traslación: El desplazamiento de un punto P a un punto P0 , se obtiene sumando un vector con las distancias de
traslación (o de desplazamiento) T, donde:
   0  
x 0 x tx
P= ,P = ,T =
y y0 ty

I La relación entre ellos está dada por: P0 = P + T.


I Es decir: x 0 = x + tx , y 0 = y + ty
Transformaciones bidimensionales básicas – Traslación

I Traslación: El desplazamiento de un punto P a un punto P0 , se obtiene sumando un vector con las distancias de
traslación (o de desplazamiento) T, donde:
   0  
x 0 x tx
P= ,P = ,T =
y y0 ty

I La relación entre ellos está dada por: P0 = P + T.


I Es decir: x 0 = x + tx , y 0 = y + ty
I La traslación funciona de la misma forma para todos los puntos de una figura. De aquı́ que para cualquier figura definida
según puntos, su traslación corresponde a estos puntos, a los que se suma T.
Transformaciones bidimensionales básicas – Traslación

I Traslación: El desplazamiento de un punto P a un punto P0 , se obtiene sumando un vector con las distancias de
traslación (o de desplazamiento) T, donde:
   0  
x 0 x tx
P= ,P = ,T =
y y0 ty

I La relación entre ellos está dada por: P0 = P + T.


I Es decir: x 0 = x + tx , y 0 = y + ty
I La traslación funciona de la misma forma para todos los puntos de una figura. De aquı́ que para cualquier figura definida
según puntos, su traslación corresponde a estos puntos, a los que se suma T.

(Continúa...)
Transformaciones bidimensionales básicas – Traslación
(... Continuación)

I Se puede hacer la traslación de un polı́gono con la función (código en C++):

c l a s s wcPt2D {
public :
GLfloat x , y ;
};

v o i d t r a n s l a t e P o l y g o n ( wcPt2D ∗ v e r t s , G L i n t n V e r t s , G L f l o a t t x , G L f l o a t t y )
{
GLint k ;

f o r ( k = 0 ; k < n V e r t s ; k++) {
v e r t s [ k ] . x = v e r t s [ k ] . x + tx ;
v e r t s [ k ] . y = v e r t s [ k ] . y + ty ;
}
g l B e g i n (GL POLYGON ) ;
f o r ( k = 0 ; k < n V e r t s ; k++)
glVertex2f ( verts [ k ] . x , verts [ k ] . y );
glEnd ( ) ;
}
Transformaciones bidimensionales básicas – Traslación
(... Continuación)

I Se puede hacer la traslación de un polı́gono con la función (código en C++):

c l a s s wcPt2D {
public :
GLfloat x , y ;
};

v o i d t r a n s l a t e P o l y g o n ( wcPt2D ∗ v e r t s , G L i n t n V e r t s , G L f l o a t t x , G L f l o a t t y )
{
GLint k ;

f o r ( k = 0 ; k < n V e r t s ; k++) {
v e r t s [ k ] . x = v e r t s [ k ] . x + tx ;
v e r t s [ k ] . y = v e r t s [ k ] . y + ty ;
}
g l B e g i n (GL POLYGON ) ;
f o r ( k = 0 ; k < n V e r t s ; k++)
glVertex2f ( verts [ k ] . x , verts [ k ] . y );
glEnd ( ) ;
}

I De este modo, se puede borrar el polı́gono original, por ejemplo, dibujándolo con el color de fondo, y dibujarlo en las
nuevas coordenadas. El método es extensible a otras figuras basdas en puntos.
Transformaciones bidimensionales básicas – Traslación
(... Continuación)

I Se puede hacer la traslación de un polı́gono con la función (código en C++):

c l a s s wcPt2D {
public :
GLfloat x , y ;
};

v o i d t r a n s l a t e P o l y g o n ( wcPt2D ∗ v e r t s , G L i n t n V e r t s , G L f l o a t t x , G L f l o a t t y )
{
GLint k ;

f o r ( k = 0 ; k < n V e r t s ; k++) {
v e r t s [ k ] . x = v e r t s [ k ] . x + tx ;
v e r t s [ k ] . y = v e r t s [ k ] . y + ty ;
}
g l B e g i n (GL POLYGON ) ;
f o r ( k = 0 ; k < n V e r t s ; k++)
glVertex2f ( verts [ k ] . x , verts [ k ] . y );
glEnd ( ) ;
}

I De este modo, se puede borrar el polı́gono original, por ejemplo, dibujándolo con el color de fondo, y dibujarlo en las
nuevas coordenadas. El método es extensible a otras figuras basdas en puntos.

(Continúa...)
Transformaciones bidimensionales básicas – Rotación

I Una rotación se produce en torno a un eje y un ángulo. En 2 dimensiones, un objeto sigue una ruta circular en torno a un
eje perpendicular al plano xy (paralelo al eje z).
Transformaciones bidimensionales básicas – Rotación

I Una rotación se produce en torno a un eje y un ángulo. En 2 dimensiones, un objeto sigue una ruta circular en torno a un
eje perpendicular al plano xy (paralelo al eje z).
I Los parámetros por lo tanto están dadas por el punto (xr , yr ), denominado punto de rotación o punto pivotal,
correspondiente al punto donde el eje de rotación intersecta al plano xy . El segundo parámetro es un ángulo θ.
Transformaciones bidimensionales básicas – Rotación

I Una rotación se produce en torno a un eje y un ángulo. En 2 dimensiones, un objeto sigue una ruta circular en torno a un
eje perpendicular al plano xy (paralelo al eje z).
I Los parámetros por lo tanto están dadas por el punto (xr , yr ), denominado punto de rotación o punto pivotal,
correspondiente al punto donde el eje de rotación intersecta al plano xy . El segundo parámetro es un ángulo θ.
I Dado un punto P = (x, y ), cuyas coordenadas polares están dadas por r y θ, donde: x = r cos φ, y = r sin φ. Su rotación
en torno al origen, en un ángulo θ, en sentido positivo (antihorario), corresponde a un punto P0 = (x 0 , y 0 ), dado por:
x0 = r cos(φ + θ) = r cos φ cos θ − r sin φ sin θ
y0 = r sin(φ + θ) = r cos φ sin θ − r sin φ cos θ
Transformaciones bidimensionales básicas – Rotación

I Una rotación se produce en torno a un eje y un ángulo. En 2 dimensiones, un objeto sigue una ruta circular en torno a un
eje perpendicular al plano xy (paralelo al eje z).
I Los parámetros por lo tanto están dadas por el punto (xr , yr ), denominado punto de rotación o punto pivotal,
correspondiente al punto donde el eje de rotación intersecta al plano xy . El segundo parámetro es un ángulo θ.
I Dado un punto P = (x, y ), cuyas coordenadas polares están dadas por r y θ, donde: x = r cos φ, y = r sin φ. Su rotación
en torno al origen, en un ángulo θ, en sentido positivo (antihorario), corresponde a un punto P0 = (x 0 , y 0 ), dado por:
x0 = r cos(φ + θ) = r cos φ cos θ − r sin φ sin θ
y0 = r sin(φ + θ) = r cos φ sin θ − r sin φ cos θ

(Continúa...)
Transformaciones bidimensionales básicas – Rotación

(... Continuación)

I Sustituyendo y reordenando:
x0 = x cos θ − y sin θ
y0 = x sin θ + y cos θ
De aquı́ se tiene: P0 = R · P, con la matriz de rotación:
 
cos θ − sin θ
R=
sin θ cos θ
Nótese que los puntos se definen como vectores columna.
Transformaciones bidimensionales básicas – Rotación

(... Continuación)

I Sustituyendo y reordenando:
x0 = x cos θ − y sin θ
y0 = x sin θ + y cos θ
De aquı́ se tiene: P0 = R · P, con la matriz de rotación:
 
cos θ − sin θ
R=
sin θ cos θ
Nótese que los puntos se definen como vectores columna.
I Una fórmula general para obtener la rotacón de (x, y ) en un ángulo θ en torno a un punto (xr , yr ), en las coordenadas
(x 0 , y 0 ) está dada por:

x0 = xr + (x − xr ) cos θ − (y − yr ) sin θ
y0 = rr + (x + xr ) sin θ + (r − yr ) cos θ
Transformaciones bidimensionales básicas – Rotación

(... Continuación)

I Sustituyendo y reordenando:
x0 = x cos θ − y sin θ
y0 = x sin θ + y cos θ
De aquı́ se tiene: P0 = R · P, con la matriz de rotación:
 
cos θ − sin θ
R=
sin θ cos θ
Nótese que los puntos se definen como vectores columna.
I Una fórmula general para obtener la rotacón de (x, y ) en un ángulo θ en torno a un punto (xr , yr ), en las coordenadas
(x 0 , y 0 ) está dada por:

x0 = xr + (x − xr ) cos θ − (y − yr ) sin θ
y0 = rr + (x + xr ) sin θ + (r − yr ) cos θ
I Como ocurre con la traslación, la rotación de una figura definida por puntos, permite también definir la rotación de la
figura, con la rotación de los respectivos puntos.
Transformaciones bidimensionales básicas – Rotación

(... Continuación)

I Sustituyendo y reordenando:
x0 = x cos θ − y sin θ
y0 = x sin θ + y cos θ
De aquı́ se tiene: P0 = R · P, con la matriz de rotación:
 
cos θ − sin θ
R=
sin θ cos θ
Nótese que los puntos se definen como vectores columna.
I Una fórmula general para obtener la rotacón de (x, y ) en un ángulo θ en torno a un punto (xr , yr ), en las coordenadas
(x 0 , y 0 ) está dada por:

x0 = xr + (x − xr ) cos θ − (y − yr ) sin θ
y0 = rr + (x + xr ) sin θ + (r − yr ) cos θ
I Como ocurre con la traslación, la rotación de una figura definida por puntos, permite también definir la rotación de la
figura, con la rotación de los respectivos puntos.

(Continúa...)
Transformaciones bidimensionales básicas – Rotación

(... Continuación)

I Se puede hacer la traslación de un polı́gono con la función (código en C++):


c l a s s wcPt2D {
public :
GLfloat x , y ;
};

v o i d r o t a t e P o l y g o n ( wcPt2D ∗ v e r t s , G L i n t n V e r t s , wcPt2D p i v P t , G L d o u b l e t h e t a )
{
wcPt2D ∗ v e r t s R o t ;
GLint k ;
f o r ( k = 0 ; k < n V e r t s ; k++) {
vertsRot [ k ] . x = pivPt . x + ( v e r t s [ k ] . x − pivPt . x ) ∗ cos ( theta ) − ( v e r t s [ k ] . y − pivPt . y ) ∗ s i n ( theta ) ;
vertsRot [ k ] . y = pivPt . y + ( v e r t s [ k ] . x − pivPt . x ) ∗ s i n ( theta ) + ( v e r t s [ k ] . y − pivPt . y ) ∗ cos ( theta ) ;
}
g l B e g i n {GL POLYGON};
f o r ( k = 0 ; k < n V e r t s ; k++)
glVertex2f ( vertsRot [ k ] . x , vertsRot [ k ] . y );
glEnd ( ) ;
}
Transformaciones bidimensionales básicas – Rotación

(... Continuación)

I Se puede hacer la traslación de un polı́gono con la función (código en C++):


c l a s s wcPt2D {
public :
GLfloat x , y ;
};

v o i d r o t a t e P o l y g o n ( wcPt2D ∗ v e r t s , G L i n t n V e r t s , wcPt2D p i v P t , G L d o u b l e t h e t a )
{
wcPt2D ∗ v e r t s R o t ;
GLint k ;
f o r ( k = 0 ; k < n V e r t s ; k++) {
vertsRot [ k ] . x = pivPt . x + ( v e r t s [ k ] . x − pivPt . x ) ∗ cos ( theta ) − ( v e r t s [ k ] . y − pivPt . y ) ∗ s i n ( theta ) ;
vertsRot [ k ] . y = pivPt . y + ( v e r t s [ k ] . x − pivPt . x ) ∗ s i n ( theta ) + ( v e r t s [ k ] . y − pivPt . y ) ∗ cos ( theta ) ;
}
g l B e g i n {GL POLYGON};
f o r ( k = 0 ; k < n V e r t s ; k++)
glVertex2f ( vertsRot [ k ] . x , vertsRot [ k ] . y );
glEnd ( ) ;
}

I De este modo, se puede borrar el polı́gono original, por ejemplo, dibujándolo con el color de fondo, y dibujarlo en las
nuevas coordenadas. El método es extensible para rotar otras figuras basdas en puntos.
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
I Producen un escalado uniforme si son iguales.
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
I Producen un escalado uniforme si son iguales.
I Encogen la figura si son (positivos) menores que 1.
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
I Producen un escalado uniforme si son iguales.
I Encogen la figura si son (positivos) menores que 1.
I Los valores negativos reflejan la figura en torno al respectivo eje ortogonal.
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
I Producen un escalado uniforme si son iguales.
I Encogen la figura si son (positivos) menores que 1.
I Los valores negativos reflejan la figura en torno al respectivo eje ortogonal.
I Se puede definir un punto al que no afecte un escalado. Éste punto (xf , yf ) se denomina punto fijo. Por definición, este
punto fijo satisface: x 0 − xf = (x − xf )sx , y 0 − yf = (y − yf )sy .
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
I Producen un escalado uniforme si son iguales.
I Encogen la figura si son (positivos) menores que 1.
I Los valores negativos reflejan la figura en torno al respectivo eje ortogonal.
I Se puede definir un punto al que no afecte un escalado. Éste punto (xf , yf ) se denomina punto fijo. Por definición, este
punto fijo satisface: x 0 − xf = (x − xf )sx , y 0 − yf = (y − yf )sy .
I Reordenando:
x 0 = x · sx + xf (1 − sx )
y 0 = y · sy + yf (1 − sy )
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
0 = ·
y 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
I Producen un escalado uniforme si son iguales.
I Encogen la figura si son (positivos) menores que 1.
I Los valores negativos reflejan la figura en torno al respectivo eje ortogonal.
I Se puede definir un punto al que no afecte un escalado. Éste punto (xf , yf ) se denomina punto fijo. Por definición, este
punto fijo satisface: x 0 − xf = (x − xf )sx , y 0 − yf = (y − yf )sy .
I Reordenando:
x 0 = x · sx + xf (1 − sx )
y 0 = y · sy + yf (1 − sy )
I Los términos aditivos son constantes: xf (1 − sx ) y yf (1 − sy ).
Transformaciones bidimensionales básicas – Escalado

I El escalado consiste en la multiplicación de los puntos que definen un objeto, por factores de escala. De este modo, cada
dimensión tiene asociado un factor (constante). Un punto (x, y ) se transforma en (x 0 , y 0 ), donde x 0 = x · sx , y 0 = y · sy ,.
Matricialmente:  0    
x sx 0 x
= ·
y0 0 sy y
es decir: P0 = S · P
I Los valores de la diagonal de S:
I No modifican la figura si son 1.
I Producen un escalado uniforme si son iguales.
I Encogen la figura si son (positivos) menores que 1.
I Los valores negativos reflejan la figura en torno al respectivo eje ortogonal.
I Se puede definir un punto al que no afecte un escalado. Éste punto (xf , yf ) se denomina punto fijo. Por definición, este
punto fijo satisface: x 0 − xf = (x − xf )sx , y 0 − yf = (y − yf )sy .
I Reordenando:
x 0 = x · sx + xf (1 − sx )
y 0 = y · sy + yf (1 − sy )
I Los términos aditivos son constantes: xf (1 − sx ) y yf (1 − sy ).

(Continúa...)
Transformaciones bidimensionales básicas – Escalado

(... Continuación)

I Se puede hacer el escalado de un polı́gono con la función (código en C++):


c l a s s wcPt2D {
public :
GLfloat x , y ;
};
v o i d s c a l e P o l y g o n ( wcPt2D ∗ v e r t s , G L i n t n V e r t s , wcPt2D f i x e d P t ,
G L f l o a t sx , G L f l o a t s y )
{
wcPt2D v e r t s N e w ;
GLint k ;
f o r ( k = 0 ; k < n V e r t s ; k++) {
vertsNew [ k ] . x = v e r t s [ k ] . x ∗ sx + f i x e d P t . x ∗ (1 − sx ) ;
vertsNew [ k ] . y = v e r t s [ k ] . y ∗ sy + f i x e d P t . y ∗ (1 − sy ) ;
}
g l B e g i n {GL POLYGON};
f o r ( k = 0 ; k < n V e r t s ; k++)
g l V e r t e x 2 f ( vertsNew [ k ] . x , vertsNew [ k ] . y ) ;
glEnd ( ) ;
}
Transformaciones bidimensionales básicas – Escalado

(... Continuación)

I Se puede hacer el escalado de un polı́gono con la función (código en C++):


c l a s s wcPt2D {
public :
GLfloat x , y ;
};
v o i d s c a l e P o l y g o n ( wcPt2D ∗ v e r t s , G L i n t n V e r t s , wcPt2D f i x e d P t ,
G L f l o a t sx , G L f l o a t s y )
{
wcPt2D v e r t s N e w ;
GLint k ;
f o r ( k = 0 ; k < n V e r t s ; k++) {
vertsNew [ k ] . x = v e r t s [ k ] . x ∗ sx + f i x e d P t . x ∗ (1 − sx ) ;
vertsNew [ k ] . y = v e r t s [ k ] . y ∗ sy + f i x e d P t . y ∗ (1 − sy ) ;
}
g l B e g i n {GL POLYGON};
f o r ( k = 0 ; k < n V e r t s ; k++)
g l V e r t e x 2 f ( vertsNew [ k ] . x , vertsNew [ k ] . y ) ;
glEnd ( ) ;
}

I De este modo, como anteriormente se puede borrar el polı́gono original, por ejemplo, dibujándolo con el color de fondo, y
dibujarlo en las nuevas coordenadas. El método también es extensible para escalar otras figuras basdas en puntos.
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
I Es posible obtener nuevas coordenadas para traslación, rotación y escalado mediante la ecuación matricial:
P0 = M1 · P + M2 , donde Py P0 son vectores columna y las matrices de 2 × 2, M1 y M2 contienen respectivamente los
elementos multiplicativos (escalado y rotación) y aditivos (traslación).
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
I Es posible obtener nuevas coordenadas para traslación, rotación y escalado mediante la ecuación matricial:
P0 = M1 · P + M2 , donde Py P0 son vectores columna y las matrices de 2 × 2, M1 y M2 contienen respectivamente los
elementos multiplicativos (escalado y rotación) y aditivos (traslación).
I Si no hay rotación ni escalado, M1 es la matriz identidad y si no hay traslación, M2 es la matriz 0.
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
I Es posible obtener nuevas coordenadas para traslación, rotación y escalado mediante la ecuación matricial:
P0 = M1 · P + M2 , donde Py P0 son vectores columna y las matrices de 2 × 2, M1 y M2 contienen respectivamente los
elementos multiplicativos (escalado y rotación) y aditivos (traslación).
I Si no hay rotación ni escalado, M1 es la matriz identidad y si no hay traslación, M2 es la matriz 0.
Coordenadas homogéneas
I Estas transformaciones bidimensionales se pueden expresar en matrices de 3 × 3, reservando la tercera columna para los
términos asociados a la traslación.
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
I Es posible obtener nuevas coordenadas para traslación, rotación y escalado mediante la ecuación matricial:
P0 = M1 · P + M2 , donde Py P0 son vectores columna y las matrices de 2 × 2, M1 y M2 contienen respectivamente los
elementos multiplicativos (escalado y rotación) y aditivos (traslación).
I Si no hay rotación ni escalado, M1 es la matriz identidad y si no hay traslación, M2 es la matriz 0.
Coordenadas homogéneas
I Estas transformaciones bidimensionales se pueden expresar en matrices de 3 × 3, reservando la tercera columna para los
términos asociados a la traslación.
I Para esto, cada punto coordenado (x, y ) se representa en sus respectivas coordenadas homogéneas: (xh , yh , h), donde su
parámetro homogéneo, h 6= 0, es un valor que satisface:
xh yh
x = ,y =
h h
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
I Es posible obtener nuevas coordenadas para traslación, rotación y escalado mediante la ecuación matricial:
P0 = M1 · P + M2 , donde Py P0 son vectores columna y las matrices de 2 × 2, M1 y M2 contienen respectivamente los
elementos multiplicativos (escalado y rotación) y aditivos (traslación).
I Si no hay rotación ni escalado, M1 es la matriz identidad y si no hay traslación, M2 es la matriz 0.
Coordenadas homogéneas
I Estas transformaciones bidimensionales se pueden expresar en matrices de 3 × 3, reservando la tercera columna para los
términos asociados a la traslación.
I Para esto, cada punto coordenado (x, y ) se representa en sus respectivas coordenadas homogéneas: (xh , yh , h), donde su
parámetro homogéneo, h 6= 0, es un valor que satisface:
xh yh
x = ,y =
h h
I De aquı́ se tiene entonces, que un punto del plano cartesiano, (x, y ) se puede representar como (hx, hy , h), tal que h 6= 0.
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
I Es posible obtener nuevas coordenadas para traslación, rotación y escalado mediante la ecuación matricial:
P0 = M1 · P + M2 , donde Py P0 son vectores columna y las matrices de 2 × 2, M1 y M2 contienen respectivamente los
elementos multiplicativos (escalado y rotación) y aditivos (traslación).
I Si no hay rotación ni escalado, M1 es la matriz identidad y si no hay traslación, M2 es la matriz 0.
Coordenadas homogéneas
I Estas transformaciones bidimensionales se pueden expresar en matrices de 3 × 3, reservando la tercera columna para los
términos asociados a la traslación.
I Para esto, cada punto coordenado (x, y ) se representa en sus respectivas coordenadas homogéneas: (xh , yh , h), donde su
parámetro homogéneo, h 6= 0, es un valor que satisface:
xh yh
x = ,y =
h h
I De aquı́ se tiene entonces, que un punto del plano cartesiano, (x, y ) se puede representar como (hx, hy , h), tal que h 6= 0.
I En particular, se puede tomar h = 1. Esto asigna a (x, y ), las coordenadas homogéneas (x, y , 1).
Representación matricial y coordenadas homogéneas

I En la práctica las trasnformaciones vistas, se aplican normalmente en forma reiterada y suelen componerse entre sı́. Esto
se facilita y sistematiza considerablemente con su representación matricial.
I Es posible obtener nuevas coordenadas para traslación, rotación y escalado mediante la ecuación matricial:
P0 = M1 · P + M2 , donde Py P0 son vectores columna y las matrices de 2 × 2, M1 y M2 contienen respectivamente los
elementos multiplicativos (escalado y rotación) y aditivos (traslación).
I Si no hay rotación ni escalado, M1 es la matriz identidad y si no hay traslación, M2 es la matriz 0.
Coordenadas homogéneas
I Estas transformaciones bidimensionales se pueden expresar en matrices de 3 × 3, reservando la tercera columna para los
términos asociados a la traslación.
I Para esto, cada punto coordenado (x, y ) se representa en sus respectivas coordenadas homogéneas: (xh , yh , h), donde su
parámetro homogéneo, h 6= 0, es un valor que satisface:
xh yh
x = ,y =
h h
I De aquı́ se tiene entonces, que un punto del plano cartesiano, (x, y ) se puede representar como (hx, hy , h), tal que h 6= 0.
I En particular, se puede tomar h = 1. Esto asigna a (x, y ), las coordenadas homogéneas (x, y , 1).

(Continúa...)
Representación matricial y coordenadas homogéneas

(... Continuación)
Matriz de traslación bidimensional
I Mediante coordenadas homogéneas es posible expresar una traslación bidimensional como producto matricial:

 0    
x 1 0 tx x
y 0  = 0 1 t y  · y 
1 0 0 1 1
Representación matricial y coordenadas homogéneas

(... Continuación)
Matriz de traslación bidimensional
I Mediante coordenadas homogéneas es posible expresar una traslación bidimensional como producto matricial:

 0    
x 1 0 tx x
y 0  = 0 1 t y  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = T(tx , ty ) · P, donde T(tx , ty ), denota a la respectiva matriz de traslación de 3 × 3.
Representación matricial y coordenadas homogéneas

(... Continuación)
Matriz de traslación bidimensional
I Mediante coordenadas homogéneas es posible expresar una traslación bidimensional como producto matricial:

 0    
x 1 0 tx x
y 0  = 0 1 t y  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = T(tx , ty ) · P, donde T(tx , ty ), denota a la respectiva matriz de traslación de 3 × 3.

Matriz de rotación bidimensional


I Análogamente, una rotación bidimensional respecto al origen, en un ángulo θ se puede expresar como:

 0    
x cos θ − sin θ 0 x
y 0  =  sin θ cos θ 0  · y 
1 0 0 1 1
Representación matricial y coordenadas homogéneas

(... Continuación)
Matriz de traslación bidimensional
I Mediante coordenadas homogéneas es posible expresar una traslación bidimensional como producto matricial:

 0    
x 1 0 tx x
y 0  = 0 1 t y  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = T(tx , ty ) · P, donde T(tx , ty ), denota a la respectiva matriz de traslación de 3 × 3.

Matriz de rotación bidimensional


I Análogamente, una rotación bidimensional respecto al origen, en un ángulo θ se puede expresar como:

 0    
x cos θ − sin θ 0 x
y 0  =  sin θ cos θ 0  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = R(θ) · P, donde R(θ), denota a la respectiva matriz de rotación de 3 × 3. Nótese que una rotación en torno a un pivote requiere
más de una transformación.
Representación matricial y coordenadas homogéneas

(... Continuación)
Matriz de traslación bidimensional
I Mediante coordenadas homogéneas es posible expresar una traslación bidimensional como producto matricial:

 0    
x 1 0 tx x
y 0  = 0 1 t y  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = T(tx , ty ) · P, donde T(tx , ty ), denota a la respectiva matriz de traslación de 3 × 3.

Matriz de rotación bidimensional


I Análogamente, una rotación bidimensional respecto al origen, en un ángulo θ se puede expresar como:

 0    
x cos θ − sin θ 0 x
y 0  =  sin θ cos θ 0  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = R(θ) · P, donde R(θ), denota a la respectiva matriz de rotación de 3 × 3. Nótese que una rotación en torno a un pivote requiere
más de una transformación.
Matriz de escalado bidimensional
I Un escalado bidimensional (respecto al origen) se puede expresar como:

 0    
x sx 0 0 x
y 0  =  0 sy 0 · y 
1 0 0 1 1
Representación matricial y coordenadas homogéneas

(... Continuación)
Matriz de traslación bidimensional
I Mediante coordenadas homogéneas es posible expresar una traslación bidimensional como producto matricial:

 0    
x 1 0 tx x
y 0  = 0 1 t y  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = T(tx , ty ) · P, donde T(tx , ty ), denota a la respectiva matriz de traslación de 3 × 3.

Matriz de rotación bidimensional


I Análogamente, una rotación bidimensional respecto al origen, en un ángulo θ se puede expresar como:

 0    
x cos θ − sin θ 0 x
y 0  =  sin θ cos θ 0  · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = R(θ) · P, donde R(θ), denota a la respectiva matriz de rotación de 3 × 3. Nótese que una rotación en torno a un pivote requiere
más de una transformación.
Matriz de escalado bidimensional
I Un escalado bidimensional (respecto al origen) se puede expresar como:

 0    
x sx 0 0 x
y 0  =  0 sy 0 · y 
1 0 0 1 1

I Los que se puede abreviar como: P0 = S(sx , sy ) · P, donde S(sx , sy ), denota a la respectiva matriz que produce un escalamiento con los parámetros sx y sy . Como
ocurre con la rotación, esta definición requiere una composición de funciones.
Transformaciones inversas

I Cada transformación de las analizadas hasta aquı́, tiene por inversa aquella que produce la figura original, sobre la figura
transformada.
Transformaciones inversas

I Cada transformación de las analizadas hasta aquı́, tiene por inversa aquella que produce la figura original, sobre la figura
transformada.
I En el caso de traslación (asociada a T), se define una traslación inversa, asociada a T−1 . Dada una traslación que
desplaza en (tx , ty ), su inversa lo hará en (−tx , −ty ). La matriz asociada es:
 
1 0 −tx
−1 
T 0 1 −ty 
0 0 1
Transformaciones inversas

I Cada transformación de las analizadas hasta aquı́, tiene por inversa aquella que produce la figura original, sobre la figura
transformada.
I En el caso de traslación (asociada a T), se define una traslación inversa, asociada a T−1 . Dada una traslación que
desplaza en (tx , ty ), su inversa lo hará en (−tx , −ty ). La matriz asociada es:
 
1 0 −tx
−1 
T 0 1 −ty 
0 0 1
I Para revertir una rotación en un ángulo θ, asociada a la matriz R, se rota en el ángulo −θ, lo que se logra
premultiplicando por la matriz:  
cos θ sin θ 0
−1 
R − sin θ cos θ 0
0 0 1
Transformaciones inversas

I Cada transformación de las analizadas hasta aquı́, tiene por inversa aquella que produce la figura original, sobre la figura
transformada.
I En el caso de traslación (asociada a T), se define una traslación inversa, asociada a T−1 . Dada una traslación que
desplaza en (tx , ty ), su inversa lo hará en (−tx , −ty ). La matriz asociada es:
 
1 0 −tx
−1 
T 0 1 −ty 
0 0 1
I Para revertir una rotación en un ángulo θ, asociada a la matriz R, se rota en el ángulo −θ, lo que se logra
premultiplicando por la matriz:  
cos θ sin θ 0
−1 
R − sin θ cos θ 0
0 0 1
I Para revertir un escalado, asoicado a una matriz S, se divide por los respectivos factores de escala. Esto se logra
multiplicando por la matriz S−1 , dada por:
1
0 0

sx
−1  1
S 0 sy 0
0 0 1
Actividades

I Implemente las funciones revisadas en OpenGL, en python.


Actividades

I Implemente las funciones revisadas en OpenGL, en python.


I Modifique las funciones para trasladar, rotar y escalar segmentos de recta, definidos por dos
puntos.
Actividades

I Implemente las funciones revisadas en OpenGL, en python.


I Modifique las funciones para trasladar, rotar y escalar segmentos de recta, definidos por dos
puntos.
I Modifique el código de python que dibuja un segmento de recta, para dibujar un triángulo,
mediante tres segmentos de recta.
Actividades

I Implemente las funciones revisadas en OpenGL, en python.


I Modifique las funciones para trasladar, rotar y escalar segmentos de recta, definidos por dos
puntos.
I Modifique el código de python que dibuja un segmento de recta, para dibujar un triángulo,
mediante tres segmentos de recta.
I Pruebe las funciones de traslación, rotación y escalado, con el triángulo obtenido previamente.

También podría gustarte