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 TRAVÉS DE TRANSFORMACIONES EN EL PLANO COMPLEJO Y
MEDIANTE ANÁLISIS MATRICIAL

Néstor THOME

Departamento de Matemática Aplicada - Instituto de Matemática Multidisciplinar


Universidad Politécnica de Valencia - España
njthome@mat.upv.es

Nível Educativo: Educación Polimodal (Nivel Medio), Educación Superior, Postgrado.


Palabras Clave: Transformaciones, semejanzas, plano complejo, matrices, MATLAB.

RESUMEN
Los movimientos en el plano pueden utilizarse como aplicaciones geométricas de otros temas.
En este trabajo se plantean dos enfoques que se pueden dar, básicamente, sobre la semejanza
de figuras planas, tema que en sí mismo puede analizarse según su carácter geométrico. Uno
de estos enfoques se desarrolla mediante un análisis a través del plano complejo y el otro
considerando la teoría del análisis matricial. Tablas comparativas presentan la relación entre
ambos enfoques. Por otra parte, el programa MATLAB opera por defecto con números
complejos y permite realizar operaciones con vectores y matrices, además de representaciones
gráficas de alta calidad. De esta manera, se utiliza dicho programa para proponer a los
profesores una práctica que puede ser realizada por los alumnos una vez que todos los
conocimientos hayan sido impartidos. En dicha práctica, que se realizará mediante la
utilización de las TIC’s, se unifican conocimientos, se fijan conceptos y se integran distintos
temas que el alumno generalmente aprende en etapas diferentes de su formación. Todo esto se
lleva a cabo de una manera gráfica, sencilla y se puede desarrollar con una gran dosis de
intuición lo que, en general, capta la atención del alumno y aumenta su motivación al tratarse
de aplicaciones directas de la teoría.

INTRODUCCIÓN
Los temas de transformaciones en el plano y semejanza de figuras planas se han estudiado en
el Bachillerato desde un punto de vista puramente geométrico. Por otra parte, también se han
estudiado los números complejos tan sólo desde el punto de vista binómico, ver Ministerio de
Cultura y Educación (1997). Más tarde, los números complejos se vuelven a ver en alguna
asignatura de primer curso de la universidad, completando aquí el tema de modo que se añade
la forma polar y las operaciones que esta representación permite realizar. Además, en alguna
asignatura de Álgebra Lineal de primer año de la universidad se estudia el tema de
transformaciones lineales. Por otra parte, en las carreras donde se abordan cursos de Análisis
Matemático superior el tema de números complejos vuelve a aparecer, ahora como
introducción a un curso de Funciones de Variable Compleja.
En otro orden de cosas, la utilización del ordenador en el aula es un tema recurrente en
numerosos congresos, revistas especializadas y diferentes foros en los que se trata el tema
enseñanza-aprendizaje de la Matemática a través de las TIC’s. MATLAB, es un paquete
informático que muchos profesores utilizan en la elaboración e impartición 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 gráficas de gran calidad además
de su potencia científica, flexibilidad, interactividad, transparencia, etc. Para una introducción
a MATLAB puede consultarse el libro de Pratap (2006).
En este artículo se hace una aplicación mediante la utilización de MATLAB versión 7.1 en la
que se muestra cómo las semejanzas de figuras planas, los números complejos y la teoría de
matrices pueden unificarse en un mismo entorno de manera que el alumno consiga una visión
integrada y globalizada de estos temas. De hecho, se incluyen tablas comparativas que
presentan la relación entre ambos enfoques. La práctica 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 guía 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
informáticos. Al análisis de las semejanzas de figuras planas se agregan los casos de
proyecciones y simetrías.

Análisis de los diferentes enfoques


Un tratamiento puramente geométrico de los movimientos en el plano mediante las
definiciones de traslación, rotación, 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 clásica en que se presenta el mismo y no ahondaremos en ella por
ser la más conocida.
En este trabajo se analizará otro enfoque. Para ello, consideremos en el plano euclídeo 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 números complejos 
(considerado como espacio vectorial real de dimensión 2 y base 1,i ) y el espacio vectorial
de los vectores libres del plano E2 existe un isomorfismo definido por la aplicación
: E2
tal que ( x iy ) xe1 ye2 . Se llama afijo del número 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 biyección

anterior es el vector v OP , siendo P el afijo de z , ver por ejemplo Arvesú (1999). Por tanto
se usarán indistintamente los términos: número complejo, vector o punto del plano.
Por otra parte, las transformaciones elementales en el plano euclídeo pueden ser analizadas a
través del significado geométrico de las operaciones en el cuerpo complejo. Se observa que
estas operaciones se pueden definir como:
Traslación según la dirección z0 : w z z0 .
Rotación de centro el origen y ángulo (antihorario): w z0 z con | z0 | 1 y
arg( z0 ) .
Homotecia de centro el origen y razón k: w kz con k  .
Semejanza de centro el origen, razón k y ángulo (antohorario): w z0 z con
k | z0 | y arg( z0 ) .

Para su representación gráfica en el plano complejo es posible notar que en una traslación los
puntos z del plano se trasladan | z0 | unidades en el sentido del número complejo z0 (pensado
como vector). En una rotación, 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 módulo del número complejo transformado. Además, si k 1 , las figuras


transformadas por las homotecias se dilatan y si 0 k 1 , se contraen, ambas en la dirección
del vector z . En el caso de las semejanzas se realiza una homotecia de centro el origen y
razón | 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( ) .

Transformación 2 2  
T ( x, y)  ( x ', y ') ( x, y) (a, b) z  w z (a bi )
R ( x, y)  ( x ', y ') ( xc ys, xs yc) z  w ei z
H ( x, y)  ( x ', y ') k ( x, y) z  w kz
S ( x, y)  ( x ', y ') k ( xc ys, xs yc) z  w kei z
Tabla 1. Transformaciones del plano en sí mismo: traslación (T), rotación (R), homotecia (H) y semejanza (S)

Más concretamente, puede observarse que la multiplicación de un número complejo arbitrario


(no nulo) por el número complejo de módulo k y argumento , es decir por el número
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 razón k ).

Las aplicaciones anteriores permiten definir la transformación f :   dada por


z  w z1 z z2 con z1 , z2  fijos. Esta transformación se puede considerar como la
composición de una traslación 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) razón | z1 | .

En MATLAB, por ejemplo para representar gráficamente el número complejo z 1 3i ,


puede escribirse: Representación de z = 1 + 3 i Representación de z = 1 + 3 i
4 3

>> z=1+3i; 3.8

>> subplot(1,2,1) 3.6


2.5

>> plot(z,'*') 3.4


>> xlabel('Eje real') 2
3.2
>> ylabel('Eje imaginario')
Eje imaginario

Eje imaginario

>> title('Representación de z = 1 + 3 i') 3 1.5

>> subplot(1,2,2) 2.8

>> axis; hold 2.6


1

>> compass(z) 2.4


>> xlabel('Eje real') 2.2
0.5

>> ylabel('Eje imaginario')


>> title('Representación gráfica de z = 1 + 3 i') 2
0 0.5 1 1.5 2
0
0 0.5 1 1.5
Eje real Eje real

Figura 1. Dos representaciones del número z 1 3i

Por otra parte, la siguiente lista de comandos permite manipulaciones algebraicas con
números complejos: real(z), imag(z), conj(z), abs(z), angle(z), con las que se puede calcular su
parte real, parte imaginaria, conjugado, módulo y argumento, respectivamente. Se recuerda
que MATLAB opera por defecto con números complejos.

A continuación se proponen programas en MATLAB que permitirán al profesor mostrar al


alumno diferentes ejemplos construidos de manera sencilla. Primero se introduce en
MATLAB el polígono sobre el que se harán las transformaciones mediante los números
complejos correspondientes y se realiza su representación gráfica como puede apreciarse en la
Figura 2. Esto puede realizarse como sigue:

367
III REPEM – Memorias Santa Rosa, La Pampa, Argentina, Agosto 2010
Polígono a transformar
3
>> axis
>> z=[1+i, -1+3i, -2-2i, -i, 2-4i]; 2
>> hold
>> plot([z,z(1)],'r') 1

>> axis equal

Eje imaginario
>> grid 0

>> xlabel('Eje real')


>> ylabel('Eje imaginario') -1

>> title('Polígono a transformar')


-2

-3

-4
-4 -3 -2 -1 0 1 2 3 4
Eje real

Figura 2. Polígono original sobre el que se aplicarán las


transformaciones

En el primero de los programas es necesario indicar como parámetros de entrada los números
complejos que sirven como coordenadas del polígono (regular o no) que se va a trasladar, y
también el número complejo que sirve como vector de dirección según el cual se realizará la
traslación. El resultado de trasladar la Figura 2 original según el vector z0 4 2i puede
apreciarse en la Figura 3.
Traslación según vector z = 4+2i
0
function traslacion(z, z0) 5

w = z+z0; 4

plot([z,z(1)],'r') 3
axis equal
hold on 2

plot([w,w(1)],':b')
Eje imaginario

1
compass(z0,'k')
xlabel('Eje real') 0

ylabel('Eje imaginario') -1
title(['Traslación según vector z_0 = ',
num2str(z0)]) -2

grid on -3
hold off
-4
end -3 -2 -1 0 1 2
Eje real
3 4 5 6 7

>> traslacion(z, 4+2i)


Figura 3. Traslación según vector z 0
4 2i

La segunda función de MATLAB permitirá realizar giros. Se llama giros.m y requiere como
parámetro de entrada el ángulo (en radianes) además de los números complejos que
determinan el polígono al que le realizará la rotación. El resultado de ejecutarla se aprecia en
la Figura 4.
function giros(z, alpha) 3
Giro alrededor del origen de ángulo = 1.5708 radianes

w = (cos(alpha)+i*sin(alpha))*z;
2
plot([z,z(1)],'r')
hold on 1
axis equal
plot([w,w(1)],':b')
Eje imaginario

grid
xlabel('Eje real') -1

ylabel('Eje imaginario') -2
title(['Giro alrededor del origen de
ángulo \alpha = ', -3
num2str(alpha) ' radianes'])
hold off -4
-3 -2 -1 0 1 2 3 4
Eje real
end
Figura 4. Rotación alrededor del origen (antihorario) un ángulo
>> giros(z, pi/2) 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


conversión a radianes dentro del programa (antes de calcular el transformado w ) y realizar la
correspondiente modificación en el título de la gráfica.

La tercera función permite realizar homotecias. Se llama homotecia.m y requiere como


parámetros de entrada el valor de la razón además de los números complejos que determinan
el polígono a transformar. El resultado se muestra en la Figura 5.

function homotecia(z, k) Homotecia de razón k = 3

w = k*z; 8

plot([z,z(1)],'r') 6

hold on 4

axis equal 2
plot([w,w(1)],':b')

Eje imaginario
0
grid -2
xlabel('Eje real')
-4
ylabel('Eje imaginario')
title(['Homotecia de razón k = ', -6

num2str(k)]) -8

hold off -10

end -12
-10 -5 0 5 10
Eje real

>> homotecia(z, 3) Figura 5. La imagen original es la de trazo lleno y la transformada


la de línea de puntos

Por último, el siguiente fichero de MATLAB permite realizar semejanzas según los elementos
indicados: ángulo y razón, además de los números complejos que determinan el polígono del
que se calculará su semejante. En la Figura 6 puede apreciarse el resultado de ejecutar esta
función.
function semejanza(z, alpha, k) Semejanza de razón k = 3 y ángulo 1.5708 radianes
8
w = k*(cos(alpha)+i*sin(alpha))*z;
plot([z,z(1)],'r') 6

axis equal 4
hold on
plot([w,w(1)],':b') 2
Eje imaginario

grid
axis equal 0

xlabel('Eje real') -2
ylabel('Eje imaginario')
title(['Semejanza de razón k = ', -4

num2str(k) ' y ángulo ', -6


num2str(alpha) ' radianes'])
hold off -8
-8 -6 -4 -2 0 2 4 6 8 10 12
end Eje real

Figura 6. Semejanza de razón k 3 y ángulo radianes


>> semejanza(z, pi/2, 3) 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 según los elementos
indicados seguida de una traslación.

Una aplicación de todos los conceptos anteriores se encuentra en la gráfica de la Figura 8 en


la que se aprecia una noria. Es posible animarla de manera que se la vea girando, gente
trasladándose hacia ella y cambiando su tamaño 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 niño, otra con el camino, etc. Luego se
genera otra una con la estructura general y se realiza su animación mediante bucles. El código
de todas estas funciones no se incluye a continuación sino que se detalla en el Anexo por
cuestiones didácticas.

Otro enfoque de las transformaciones anteriormente tratadas es mediante un análisis matricial


como puede verse en Leon (1994). Además, MATLAB está especialmente diseñado para
operar con matrices.

Transformación  2x1  2x1  


Traslación x x' x a z  w z (a bi )

y y' y b
Rotación x x' cos( ) -sen( ) x z  w ei z

y y' sen( ) cos( ) y
Homotecia x x' x z  w kz
 k
y y' y
Semejanza x x' cos( ) -sen( ) x z  w kei z
 k
y y' sen( ) cos( ) 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 según la teoría de matrices.

Finalmente, siguiendo este punto de vista, se diseña una función en MATLAB combinando
los conceptos algebraicos y geométricos descritos anteriormente para resolver, directamente,
el problema de semejanza con traslación que contiene como casos particulares al de rotación y
homotecias (además del de traslación, como es evidente). Al introducir en la línea 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 función:


function semejanza_con_matrices(x, y, alpha, k, x0, y0)
u0 = [x0*ones(1,length(x)); Polígono a transformar y polígono transformado

y0*ones(1,length(y))];
10
u = k*[cos(alpha), -sin(alpha);
sin(alpha), cos(alpha)] *
[x; y] + u0;
plot([x,x(1)],[y,y(1)],'r')
5
hold on
Ordenadas

plot([u(1,:),u(1,1)],[u(2,:),u(2,1)])
compass(x0+i*y0,'k')
xlabel('Abscisas')
0
ylabel('Ordenadas')
title('Polígono a transformar y
polígono transformado')
grid
-5
axis equal -6 -4 -2 0 2 4 6 8 10 12 14
hold off Abscisas

end Figura 7. Polígono original y su semejante

370
III REPEM – Memorias Santa Rosa, La Pampa, Argentina, Agosto 2010

Otras transformaciones: Proyecciones y simetrías


Otras dos aplicaciones geométricas de los números complejos y del análisis matricial son la
proyección ortogonal y las simetrías. Pueden definirse como se indica en la Tabla 3.

Transformación  2x1  2x1  


Proyección sobre eje X x x' x 1
 z  w Re( z ) ( z z)
y y' 0 2
Proyección sobre eje Y x x' 0 1
 z  w Im( z ) ( z z)
y y' y 2i
Simetría con respecto al origen x x' x zw z

y y' y
Simetría con respecto al eje X x x' x zw z

y y' y
Simetría con respecto al eje Y x x' x zw z

y y' y
Tabla 3. Definiciones de proyecciones ortogonales y simetrías

Observar que si en las homotecias se permiten valores de k 0 , las simetrías con respecto al
origen se consiguen tomando k 1 . También se puede notar que hacer una simetría con
respecto al eje Y puede pensarse como una simetría respecto al eje X seguida de otra con
respecto al origen.
Notar que también 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
rotación 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 razón k puede realizarse mediante:

z  w (a bi ) k ( z (a bi ))

La proyección de un número complejo z sobre la recta que pasa por los puntos P0 ( x0 , y0 ) y
P1 ( x1 , y1 ) puede realizarse mediante:

zw z0 ei Re(e i
( z z0 ))

siendo z0 x0 iy0 y el ángulo que determina el eje X (positivo) con el vector O , P1 P0 .
En efecto, una traslación 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 rotación 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 simetría de un número complejo z con respecto de la recta que pasa por los
puntos ( x0 , y0 ) y ( x1 , y1 ) puede realizarse mediante:

zw 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 ) .

También la homotecia puede presentarse de manera más general definida mediante

zw 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
integración de los conocimientos y una mayor solidez en cuanto a la base que el alumno,
el ayudante de cátedra 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 presentación de las operaciones básicas con números complejos y la
representación gráfica de las mismas. De hecho la función compleja lineal
f ( z) az b, a, b  , a 0

se puede describir como la composición de una rotación de ángulo Arg (a) alrededor del
origen, una homotecia de razón || a || y una traslación en la dirección del número complejo
b . Notar que si bien se habla de función 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 sólo cuando b 0 , ver por ejemplo Leon (1994). El
programa MATLAB le da al profesor herramientas para mostrar al alumno de manera
rápida y sencilla algunas situaciones gráficas a partir de funciones elementales generadas
mediante ficheros.m y con las que él pueda generar sus propias gráficas con posterioridad.

REFERENCIAS

MINISTERIO DE CULTURA Y EDUCACIÓN. (1997). Provincia de La Pampa.


Materiales curriculares. Tercer Ciclo EGB. Matemática, Argentina.
ARVESÚ, J. ÁLVAREZ, R., MARCELLÁN, F. 1999. Álgebra Lineal y Aplicaciones
(Síntesis).
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 continuación se detalla el código de las funciones utilizadas en MATLAB para el cálculo de


los elementos y de la animación de la noria introducida anteriormente como un ejemplo de
utilización 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; % Segundos de duración de la escena
PAUSE_ESCENA = 0.15; % Segundos de pausa de la animación

NUM_CESTAS = 20; % Numero de cestas de la noria


RADIO = 5; % Radio de la noria
O = 5+6*i; % Origen de la noria
E = 1/3; % Escala de la noria

C1 = 0+0*i; % Origen del camino 1


D1 = 4+3.5*i; % Destino del camino 1
A1 = 2; % Ancho del camino 1
E1 = 1; % Escala del camino 1
V1 = 1/64; % Velocidad en camino 1

C2 = 8+1*i; % Origen del camino 2


D2 = 6+3*i; % Destino del camino 2
A2 = 2; % Ancho del camino 2
E2 = 1/2; % Escala del camino 2
V2 = 1/80; % 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 niños de camino hacia una noria

375

También podría gustarte