Está en la página 1de 11

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

CB 09
TRANSFORMACIONES PLANAS CON MATLAB: SEMEJANZA DE FIGURAS
A TRAVS DE TRANSFORMACIONES EN EL PLANO COMPLEJO Y
MEDIANTE ANLISIS MATRICIAL
Nstor THOME
Departamento de Matemtica Aplicada - Instituto de Matemtica Multidisciplinar
Universidad Politcnica de Valencia - Espaa
njthome@mat.upv.es
Nvel Educativo: Educacin Polimodal (Nivel Medio), Educacin Superior, Postgrado.
Palabras Clave: Transformaciones, semejanzas, plano complejo, matrices, MATLAB.

RESUMEN
Los movimientos en el plano pueden utilizarse como aplicaciones geomtricas de otros temas.
En este trabajo se plantean dos enfoques que se pueden dar, bsicamente, sobre la semejanza
de figuras planas, tema que en s mismo puede analizarse segn su carcter geomtrico. Uno
de estos enfoques se desarrolla mediante un anlisis a travs del plano complejo y el otro
considerando la teora del anlisis matricial. Tablas comparativas presentan la relacin entre
ambos enfoques. Por otra parte, el programa MATLAB opera por defecto con nmeros
complejos y permite realizar operaciones con vectores y matrices, adems de representaciones
grficas de alta calidad. De esta manera, se utiliza dicho programa para proponer a los
profesores una prctica que puede ser realizada por los alumnos una vez que todos los
conocimientos hayan sido impartidos. En dicha prctica, que se realizar mediante la
utilizacin de las TICs, se unifican conocimientos, se fijan conceptos y se integran distintos
temas que el alumno generalmente aprende en etapas diferentes de su formacin. Todo esto se
lleva a cabo de una manera grfica, sencilla y se puede desarrollar con una gran dosis de
intuicin lo que, en general, capta la atencin del alumno y aumenta su motivacin al tratarse
de aplicaciones directas de la teora.

INTRODUCCIN
Los temas de transformaciones en el plano y semejanza de figuras planas se han estudiado en
el Bachillerato desde un punto de vista puramente geomtrico. Por otra parte, tambin se han
estudiado los nmeros complejos tan slo desde el punto de vista binmico, ver Ministerio de
Cultura y Educacin (1997). Ms tarde, los nmeros complejos se vuelven a ver en alguna
asignatura de primer curso de la universidad, completando aqu el tema de modo que se aade
la forma polar y las operaciones que esta representacin permite realizar. Adems, en alguna
asignatura de lgebra Lineal de primer ao de la universidad se estudia el tema de
transformaciones lineales. Por otra parte, en las carreras donde se abordan cursos de Anlisis
Matemtico superior el tema de nmeros complejos vuelve a aparecer, ahora como
introduccin a un curso de Funciones de Variable Compleja.
En otro orden de cosas, la utilizacin del ordenador en el aula es un tema recurrente en
numerosos congresos, revistas especializadas y diferentes foros en los que se trata el tema
enseanza-aprendizaje de la Matemtica a travs de las TICs. MATLAB, es un paquete
informtico que muchos profesores utilizan en la elaboracin e imparticin de sus clases dado
365

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

que, entre otras cosas, presta facilidades a la hora de realizar grficas de gran calidad adems
de su potencia cientfica, flexibilidad, interactividad, transparencia, etc. Para una introduccin
a MATLAB puede consultarse el libro de Pratap (2006).
En este artculo se hace una aplicacin mediante la utilizacin de MATLAB versin 7.1 en la
que se muestra cmo las semejanzas de figuras planas, los nmeros complejos y la teora de
matrices pueden unificarse en un mismo entorno de manera que el alumno consiga una visin
integrada y globalizada de estos temas. De hecho, se incluyen tablas comparativas que
presentan la relacin entre ambos enfoques. La prctica consiste en que el alumno desarrolle
los ficheros.m por s mismo tras haber tratado el tema con suficiente detalle, o bien indicando
los pasos a seguir mediante una gua que se le entregue. Otra modalidad puede ser que el
profesor muestre el contenido de las funciones.m al alumno y las ejecute en MATLAB de
modo que se vea el resultado que se puede obtener con los conocimientos adquiridos. Esta
ltima modalidad se puede realizar si el alumno no tiene suficientes conocimientos
informticos. Al anlisis de las semejanzas de figuras planas se agregan los casos de
proyecciones y simetras.
Anlisis de los diferentes enfoques

Un tratamiento puramente geomtrico de los movimientos en el plano mediante las


definiciones de traslacin, rotacin, homotecia y semejanza y la forma de determinarlas a
partir de regla y transportador es el primer contacto que generalmente un alumno tiene con
este tema. Esta es la forma clsica en que se presenta el mismo y no ahondaremos en ella por
ser la ms conocida.
En este trabajo se analizar otro enfoque. Para ello, consideremos en el plano eucldeo un
origen O y unos ejes rectangulares Ox y Oy. Sean e1 y e2 los vectores de la base ortonormal
correspondiente. Entonces, es conocido que entre el cuerpo de los nmeros complejos
(considerado como espacio vectorial real de dimensin 2 y base 1,i ) y el espacio vectorial
de los vectores libres del plano E2 existe un isomorfismo definido por la aplicacin
:
E2
tal que ( x iy ) xe1 ye2 . Se llama afijo del nmero complejo z x iy al vector de origen
O y extremo el punto P de coordenadas ( x, y ) , con lo cual la imagen de z por la biyeccin

anterior es el vector v OP , siendo P el afijo de z , ver por ejemplo Arves (1999). Por tanto
se usarn indistintamente los trminos: nmero complejo, vector o punto del plano.
Por otra parte, las transformaciones elementales en el plano eucldeo pueden ser analizadas a
travs del significado geomtrico de las operaciones en el cuerpo complejo. Se observa que
estas operaciones se pueden definir como:
Traslacin segn la direccin z0 : w z z0 .
Rotacin de centro el origen y ngulo
(antihorario): w
arg( z0 ) .
Homotecia de centro el origen y razn k: w kz con k
Semejanza de centro el origen, razn k y ngulo
k | z0 | y
arg( z0 ) .

z0 z con | z0 | 1 y

.
(antohorario): w

z0 z con

Para su representacin grfica en el plano complejo es posible notar que en una traslacin los
puntos z del plano se trasladan | z0 | unidades en el sentido del nmero complejo z0 (pensado
como vector). En una rotacin, los puntos z del plano giran alrededor del origen un ngulo
arg( z0 ) en sentido antihorario. Por otra parte, como | z0 | 1 , las rotaciones evidentemente no
366

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

cambian el mdulo del nmero complejo transformado. Adems, si k 1 , las figuras


transformadas por las homotecias se dilatan y si 0 k 1 , se contraen, ambas en la direccin
del vector z . En el caso de las semejanzas se realiza una homotecia de centro el origen y
razn | z0 | seguida de un giro de centro el origen y ngulo arg( z0 ) en sentido antihorario. La
Tabla 1 resume las operaciones anteriores donde c:=cos( ) y s:=sen( ) .
Transformacin
T
R
H
S

2
2
( x, y) ( x ', y ')
( x, y) ( x ', y ')
( x, y) ( x ', y ')
( x, y) ( x ', y ')

( x, y) (a, b)
( xc ys, xs yc)
k ( x, y)
k ( xc ys, xs yc)

z w z (a bi )

z w ei z
z w kz

z w kei z

Tabla 1. Transformaciones del plano en s mismo: traslacin (T), rotacin (R), homotecia (H) y semejanza (S)

Ms concretamente, puede observarse que la multiplicacin de un nmero complejo arbitrario


(no nulo) por el nmero complejo de mdulo k y argumento , es decir por el nmero
complejo kei , donde ei : cos( ) isen( ) , consiste en hacer un giro (de centro el origen y
ngulo
en sentido antihorario) seguido de una homotecia (de centro el origen y razn k ).
Las aplicaciones anteriores permiten definir la transformacin f :
dada por
z w z1 z z2 con z1 , z2 fijos. Esta transformacin se puede considerar como la
composicin de una traslacin de vector z2 , seguida de un giro (alrededor del origen) de
ngulo arg( z1 ) en sentido antihorario y una homotecia de (centro el origen y) razn | z1 | .
En MATLAB, por ejemplo para representar grficamente el nmero complejo z 1 3i ,
puede escribirse:
Representacin de z = 1 + 3 i

Representacin de z = 1 + 3 i

4
3.8

2.5

3.6
3.4

3.2

Eje imaginario

z=1+3i;
subplot(1,2,1)
plot(z,'*')
xlabel('Eje real')
ylabel('Eje imaginario')
title('Representacin de z = 1 + 3 i')
subplot(1,2,2)
axis; hold
compass(z)
xlabel('Eje real')
ylabel('Eje imaginario')
title('Representacin grfica de z = 1 + 3 i')

Eje imaginario

>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

3
2.8

1.5

2.6
2.4

0.5

2.2
2

0.5

1
Eje real

1.5

0.5

1.5

Eje real

Figura 1. Dos representaciones del nmero z

1 3i

Por otra parte, la siguiente lista de comandos permite manipulaciones algebraicas con
nmeros complejos: real(z), imag(z), conj(z), abs(z), angle(z), con las que se puede calcular su
parte real, parte imaginaria, conjugado, mdulo y argumento, respectivamente. Se recuerda
que MATLAB opera por defecto con nmeros complejos.
A continuacin se proponen programas en MATLAB que permitirn al profesor mostrar al
alumno diferentes ejemplos construidos de manera sencilla. Primero se introduce en
MATLAB el polgono sobre el que se harn las transformaciones mediante los nmeros
complejos correspondientes y se realiza su representacin grfica como puede apreciarse en la
Figura 2. Esto puede realizarse como sigue:

367

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010


Polgono a transformar

axis
z=[1+i, -1+3i, -2-2i, -i, 2-4i];
hold
plot([z,z(1)],'r')
axis equal
grid
xlabel('Eje real')
ylabel('Eje imaginario')
title('Polgono a transformar')

Eje imaginario

>>
>>
>>
>>
>>
>>
>>
>>
>>

-1

-2

-3

-4

-4

-3

-2

-1

0
Eje real

Figura 2. Polgono original sobre el que se aplicarn las


transformaciones

En el primero de los programas es necesario indicar como parmetros de entrada los nmeros
complejos que sirven como coordenadas del polgono (regular o no) que se va a trasladar, y
tambin el nmero complejo que sirve como vector de direccin segn el cual se realizar la
traslacin. El resultado de trasladar la Figura 2 original segn el vector z0 4 2i puede
apreciarse en la Figura 3.
Traslacin segn vector z = 4+2i
0

function traslacion(z, z0)

Eje imaginario

4
w = z+z0;
plot([z,z(1)],'r')
3
axis equal
2
hold on
plot([w,w(1)],':b')
1
compass(z0,'k')
0
xlabel('Eje real')
ylabel('Eje imaginario')
-1
title(['Traslacin segn vector z_0 = ',
-2
num2str(z0)])
grid on
-3
hold off
-4

end

-3

>> traslacion(z, 4+2i)

-2

-1

2
Eje real

Figura 3. Traslacin segn vector z

2i

La segunda funcin de MATLAB permitir realizar giros. Se llama giros.m y requiere como
parmetro de entrada el ngulo (en radianes) adems de los nmeros complejos que
determinan el polgono al que le realizar la rotacin. El resultado de ejecutarla se aprecia en
la Figura 4.
function giros(z, alpha)

Giro alrededor del origen de ngulo

>> giros(z, pi/2)

1
Eje imaginario

w = (cos(alpha)+i*sin(alpha))*z;
plot([z,z(1)],'r')
hold on
axis equal
plot([w,w(1)],':b')
grid
xlabel('Eje real')
ylabel('Eje imaginario')
title(['Giro alrededor del origen de
ngulo \alpha = ',
num2str(alpha) ' radianes'])
hold off
end

= 1.5708 radianes

-1

-2

-3

-4

-3

-2

-1

0
1
Eje real

Figura 4. Rotacin alrededor del origen (antihorario) un ngulo


de

radianes
2

368

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

En caso de ser necesario se puede introducir el ngulo en grados sexagesimales, hacer la


conversin a radianes dentro del programa (antes de calcular el transformado w ) y realizar la
correspondiente modificacin en el ttulo de la grfica.
La tercera funcin permite realizar homotecias. Se llama homotecia.m y requiere como
parmetros de entrada el valor de la razn adems de los nmeros complejos que determinan
el polgono a transformar. El resultado se muestra en la Figura 5.
function homotecia(z, k)
w = k*z;
plot([z,z(1)],'r')
hold on
axis equal
plot([w,w(1)],':b')
grid
xlabel('Eje real')
ylabel('Eje imaginario')
title(['Homotecia de razn k = ',
num2str(k)])
hold off

Homotecia de razn k = 3
8
6
4

Eje imaginario

-4
-6
-8
-10

end
>> homotecia(z, 3)

0
-2

-12

-10

-5

0
Eje real

10

Figura 5. La imagen original es la de trazo lleno y la transformada


la de lnea de puntos

Por ltimo, el siguiente fichero de MATLAB permite realizar semejanzas segn los elementos
indicados: ngulo y razn, adems de los nmeros complejos que determinan el polgono del
que se calcular su semejante. En la Figura 6 puede apreciarse el resultado de ejecutar esta
funcin.
function semejanza(z, alpha, k)

end
>> semejanza(z, pi/2, 3)

6
4

Eje imaginario

w = k*(cos(alpha)+i*sin(alpha))*z;
plot([z,z(1)],'r')
axis equal
hold on
plot([w,w(1)],':b')
grid
axis equal
xlabel('Eje real')
ylabel('Eje imaginario')
title(['Semejanza de razn k = ',
num2str(k) ' y ngulo ',
num2str(alpha) ' radianes'])
hold off

Semejanza de razn k = 3 y ngulo 1.5708 radianes


8

2
0
-2
-4
-6
-8
-8

-6

-4

-2

2
Eje real

Figura 6. Semejanza de razn k

10

3 y ngulo

12

radianes
2

Es un ejercicio sencillo, a partir de los ficheros anteriores, realizar uno nuevo llamado
semejanza_mas_traslacion.m de modo que permita realizar una semejanza segn los elementos
indicados seguida de una traslacin.
Una aplicacin de todos los conceptos anteriores se encuentra en la grfica de la Figura 8 en
la que se aprecia una noria. Es posible animarla de manera que se la vea girando, gente
trasladndose hacia ella y cambiando su tamao dependiendo de la perspectiva. La forma de
construir la noria es la siguiente. Para comenzar se pueden construir por separado diferentes
369

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

funciones: una de ellas con una cesta, otra con un nio, otra con el camino, etc. Luego se
genera otra una con la estructura general y se realiza su animacin mediante bucles. El cdigo
de todas estas funciones no se incluye a continuacin sino que se detalla en el Anexo por
cuestiones didcticas.
Otro enfoque de las transformaciones anteriormente tratadas es mediante un anlisis matricial
como puede verse en Leon (1994). Adems, MATLAB est especialmente diseado para
operar con matrices.
Transformacin
Traslacin

2x1 2x1
x
x'

y
y'

x
y

z w z (a bi )

a
b

Rotacin

x
x'

y
y'

Homotecia

x
x'

y
y'

x
y

x
x'

y
y'

cos( ) -sen( )
sen( ) cos( )

Semejanza

cos( ) -sen( )
sen( ) cos( )

z w ei z

x
y

z w kz

z w kei z

x
y

Tabla 2. Transformaciones del plano en s mismo: aspectos matricial y complejo

La Tabla 2 resume las operaciones anteriormente definidas y establece una comparativa con
las introducidas en el caso de su tratamiento segn la teora de matrices.
Finalmente, siguiendo este punto de vista, se disea una funcin en MATLAB combinando
los conceptos algebraicos y geomtricos descritos anteriormente para resolver, directamente,
el problema de semejanza con traslacin que contiene como casos particulares al de rotacin y
homotecias (adems del de traslacin, como es evidente). Al introducir en la lnea de
comandos de MATLAB lo siguiente:
>> x=[1 -1 -2 0 2];
>> y=[1 3 -2 -1 -4];
>> semejanza_con_matrices(x, y, pi/2, 3, 2, 4)

se obtiene la Figura 7 utilizando la funcin:


function semejanza_con_matrices(x, y, alpha, k, x0, y0)
Polgono a transformar y polgono transformado
10

Ordenadas

u0 = [x0*ones(1,length(x));
y0*ones(1,length(y))];
u = k*[cos(alpha), -sin(alpha);
sin(alpha), cos(alpha)] *
[x; y] + u0;
plot([x,x(1)],[y,y(1)],'r')
hold on
plot([u(1,:),u(1,1)],[u(2,:),u(2,1)])
compass(x0+i*y0,'k')
xlabel('Abscisas')
ylabel('Ordenadas')
title('Polgono a transformar y
polgono transformado')
grid
axis equal
hold off
end

-5
-6

-4

-2

4
Abscisas

10

12

14

Figura 7. Polgono original y su semejante

370

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

Otras transformaciones: Proyecciones y simetras


Otras dos aplicaciones geomtricas de los nmeros complejos y del anlisis matricial son la
proyeccin ortogonal y las simetras. Pueden definirse como se indica en la Tabla 3.
Transformacin

2x1 2x1
x
x'

y
y'

x
0

z w Re( z )

1
( z z)
2

Proyeccin sobre eje Y

x
x'

y
y'

0
y

z w Im( z )

1
( z z)
2i

Simetra con respecto al origen

x
x'

y
y'

x
y

zw

Simetra con respecto al eje X

x
x'

y
y'

x
y

zw

Simetra con respecto al eje Y

x
x'

y
y'

x
y

zw

Proyeccin sobre eje X

z
z

Tabla 3. Definiciones de proyecciones ortogonales y simetras

Observar que si en las homotecias se permiten valores de k 0 , las simetras con respecto al
origen se consiguen tomando k
1 . Tambin se puede notar que hacer una simetra con
respecto al eje Y puede pensarse como una simetra respecto al eje X seguida de otra con
respecto al origen.
Notar que tambin es posible generalizar las transformaciones anteriores en el sentido que en
lugar de realizarlas en torno al origen, se las realice en torno a otro punto. Por ejemplo, una
rotacin con centro en el punto (a, b) y ngulo
radianes (antihorario) puede realizarse
mediante:
z w ( a bi ) ei ( z ( a bi ))
Una homotecia con centro en (a, b) y razn k puede realizarse mediante:

z w (a bi ) k ( z (a bi ))
La proyeccin de un nmero complejo z sobre la recta que pasa por los puntos P0
P1 ( x1 , y1 ) puede realizarse mediante:

zw

z0 ei Re(e

( x0 , y0 ) y

( z z0 ))

siendo z0 x0 iy0 y
el ngulo que determina el eje X (positivo) con el vector O , P1 P0 .
En efecto, una traslacin de los puntos P0 , P1 y z permite escribir P0 ' P0 P0 O y
P1 ' P1 P0 igual que z ' z z0 y w ' w z 0 . Definiendo
como el ngulo que forma el

eje X con el vector P '0 P '1 se tiene que una rotacin de ngulo
permite escribir:

P0 '' e i P0 ' , P1 '' e i P1 ' , z '' e i z ' y w '' e i w ' . Estas transformaciones han llevado el
problema al indicado en la tabla con lo que w'' Re( z '') . Deshaciendo los cambios se tiene
e i ( w z0 ) e i w ' w '' Re( z '') Re(e i z ') Re(e i ( z z0 )) . Luego, se obtiene el
transformado w

z0 ei Re(e i ( z z0 )) , como se ha indicado.


371

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

Finalmente, la simetra de un nmero complejo z con respecto de la recta que pasa por los
puntos ( x0 , y0 ) y ( x1 , y1 ) puede realizarse mediante:
zw

z0 e2i ( z z0 )

y se puede deducir realizando transformaciones similares a las anteriores. En este caso:


e i ( w z0 ) e i w ' w '' z '' e i z ' e i ( z z0 ) ei ( z z0 ) .
Tambin la homotecia puede presentarse de manera ms general definida mediante
zw

k1 Re( z ) ik2 Im( z )

con k1 , k2

0,

de forma que permita escalar el dibujo de manera diferente en cada una de las dos direcciones.
Es evidente que para estos tipos de transformaciones se pueden realizar programas semejantes
a los anteriores.

CONCLUSIONES
Las semejanzas en el plano que un alumno ha estudiado pueden ser reinterpretadas a partir
de conceptos adquiridos con posterioridad. De esta manera se puede realizar una
integracin de los conocimientos y una mayor solidez en cuanto a la base que el alumno,
el ayudante de ctedra o incluso el profesor pueden disponer a la hora de relacionar
conocimientos entre s. Estas situaciones pueden aparecer cuando en un curso de lgebra
Lineal se habla de matrices y aplicaciones lineales o bien cuando en un curso de Variable
Compleja se haga la presentacin de las operaciones bsicas con nmeros complejos y la
representacin grfica de las mismas. De hecho la funcin compleja lineal

f ( z) az b, a, b , a 0
se puede describir como la composicin de una rotacin de ngulo Arg (a) alrededor del
origen, una homotecia de razn || a || y una traslacin en la direccin del nmero complejo
b . Notar que si bien se habla de funcin lineal cuando se la estudia en un curso de
Variable Compleja, ver por ejemplo Zill (2003), cuando se la define en un curso de
lgebra Lineal se dice que es lineal slo cuando b 0 , ver por ejemplo Leon (1994). El
programa MATLAB le da al profesor herramientas para mostrar al alumno de manera
rpida y sencilla algunas situaciones grficas a partir de funciones elementales generadas
mediante ficheros.m y con las que l pueda generar sus propias grficas con posterioridad.
REFERENCIAS
MINISTERIO DE CULTURA Y EDUCACIN. (1997). Provincia de La Pampa.
Materiales curriculares. Tercer Ciclo EGB. Matemtica, Argentina.
ARVES, J. LVAREZ, R., MARCELLN, F. 1999. lgebra Lineal y Aplicaciones
(Sntesis).
LEON, S. J. 1994. Linear Algebra with Applications (Prentice Hall).
ZILL, D. G., SHANAHAN, P. D. 2003. A first course in complex analysis with applications
(John and Bartlett).
PRATAP, R. 2006. Getting Started with MATLAB7 (Oxford University Press).
372

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

Anexo

A continuacin se detalla el cdigo de las funciones utilizadas en MATLAB para el clculo de


los elementos y de la animacin de la noria introducida anteriormente como un ejemplo de
utilizacin de los conceptos presentados. La Figura 8 muestra el resultado obtenido.
% Funcion 'cesta': genera el dibujo de una cesta de la noria
function cesta (origen, escala, rotacion, color)
CESTA = [-1/2-i/2, 0+0*i, 1/2-i/2, -1/2-i/2,
-1/2-3*i/2, 1/2-3*i/2, 1/2-i/2];
rot = cos(rotacion) + sin(rotacion) * i;
CESTA = (escala * CESTA) * rot + origen;
plot(CESTA, color)
end
% Funcion 'estructura': genera el dibujo de la estructura circular de la
noria con todos sus elementos interiores
function estructura (origen, escala, radio, num_vertices, rotacion, color)
E = 1/2; % Escala de las cestas
t = 0:(2*pi)/num_vertices:2*pi;
vertices = escala * radio * (cos(t) + sin(t) * i);
vertices = vertices * (cos(rotacion) + sin(rotacion) * i);
vertices_trasladados = origen + vertices;
plot(vertices_trasladados, color)
interior = 3/4 * vertices;
interior_trasladado = origen + interior;
plot(interior_trasladado, color)
for k=1:num_vertices
plot([origen, vertices_trasladados(k)],color)
cesta(vertices_trasladados(k), escala * E,
(rotacion/pi/16) * (angle(vertices(k))), 'k')
end
end
% Funcion 'noria': genera el dibujo de la noria con todos sus elementos
function noria (origen, escala, num_cestas, radio, step)
T = 1.25 * [0+0*i, radio/2-radio*i,
-radio/2-radio*i, 0+0*i];
% Base de la noria
estructura(origen, escala, radio, num_cestas, step, 'm');
plot((origen + escala*T), 'b')
end
% Funcion 'cabeza': genera el dibujo de la cabeza del ninyo
function cabeza (origen, radio)
num_vertices = 20;
t = 0:(2*pi)/num_vertices:2*pi;
vertices = radio * (cos(t) + sin(t) * i);
vertices_trasladados = origen + vertices;
plot(vertices_trasladados, 'b')
end

373

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

% Funcion 'ninyo': genera el dibujo de un ninyo que camina


function ninyo (origen, escala)
Z = [-1/2-i/2, 0+0*i, 1/2-i/2, 0+0*i, 0+i,
-1/3+i/2, 0+i, 1/3+i/2, 0+i, 0+5*i/4];
Z = (escala * Z);
Z = Z + origen;
plot(Z, 'b')
cabeza(origen + escala *(0+6/4*i), (1/4)*escala)
end
% Funcion 'camino': genera el dibujo del camino y de un ninyo que camina
function camino (origen, destino, ancho, escala, step)
PROF = 1/3; % Profundidad del camino
derecha_camino_origen = origen + ancho*escala;
derecha_camino_destino = destino + PROF*ancho*escala;
centro_camino_origen = origen + (derecha_camino_origen - origen)/2;
centro_camino_destino = destino + (derecha_camino_destino - destino)/2;
vector_camino = centro_camino_destino - centro_camino_origen;
plot([origen, destino], 'g')
plot([derecha_camino_origen, derecha_camino_destino], 'g')
ninyo(centro_camino_origen + vector_camino*step,
escala*(1-step*2*PROF)*1/2);
end
% Funcion 'escena': define las dimensiones de cada elemento y genera la
animacion de todo el conjunto
function escena
MAX_TIME_ESCENA_SEG = 20;
PAUSE_ESCENA = 0.15;

% Segundos de duracin de la escena


% Segundos de pausa de la animacin

NUM_CESTAS = 20;
RADIO = 5;
O = 5+6*i;
E = 1/3;

%
%
%
%

Numero de cestas de la noria


Radio de la noria
Origen de la noria
Escala de la noria

C1
D1
A1
E1
V1

=
=
=
=
=

0+0*i;
4+3.5*i;
2;
1;
1/64;

%
%
%
%
%

Origen del camino 1


Destino del camino 1
Ancho del camino 1
Escala del camino 1
Velocidad en camino 1

C2
D2
A2
E2
V2

=
=
=
=
=

8+1*i;
6+3*i;
2;
1/2;
1/80;

%
%
%
%
%

Origen del camino 2


Destino del camino 2
Ancho del camino 2
Escala del camino 2
Velocidad en camino 2

camino1_step = 0;
camino2_step = 0;
noria_step = 0;
axis equal
axis tight

374

III REPEM Memorias

Santa Rosa, La Pampa, Argentina, Agosto 2010

for k=0:PAUSE_ESCENA:MAX_TIME_ESCENA_SEG
cla
camino(C1, D1, A1, E1, camino1_step);
camino1_step = camino1_step + V1;
if (camino1_step > 1) camino1_step = 0; end
camino(C2, D2, A2, E2, camino2_step);
camino2_step = camino2_step + V2;
if (camino2_step > 1) camino2_step = 0; end
noria(O, E, NUM_CESTAS, RADIO, noria_step);
noria_step = noria_step + (2*pi)/(9*NUM_CESTAS);
if (noria_step > 2*pi) noria_step = 0; end
hold on
pause(PAUSE_ESCENA);
end
end

Figura 8. Dos nios de camino hacia una noria

375

También podría gustarte