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
[email protected] 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 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 k | z0 | y arg( z0 ) .
z0 z con | z0 | 1 y
. (antohorario): w
z0 z con
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 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: 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.8
2.5
3.6 3.4
2
3.2
Eje imaginario
z=1+3i; subplot(1,2,1) plot(z,'*') xlabel('Eje real') ylabel('Eje imaginario') title('Representación de z = 1 + 3 i') subplot(1,2,2) axis; hold compass(z) xlabel('Eje real') ylabel('Eje imaginario') title('Representación gráfica de z = 1 + 3 i')
Eje imaginario
>> >> >> >> >> >> >> >> >> >> >> >>
3
3 2.8
1.5
1
2.6 2.4
0.5
2.2 2
0
0.5
1 Eje real
1.5
2
0
0
0.5
1
1.5
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
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('Polígono a transformar')
2
1
Eje imaginario
>> >> >> >> >> >> >> >> >>
3
0
-1
-2
-3
-4
-4
-3
-2
-1
0 Eje real
1
2
3
4
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
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(['Traslación según vector z_0 = ', -2 num2str(z0)]) grid on -3 hold off -4
end
-3
>> traslacion(z, 4+2i)
-2
-1
0
1
2 Eje real
3
4
Figura 3. Traslación según vector z
5
6
4
0
7
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)
Giro alrededor del origen de ángulo
>> giros(z, pi/2)
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
3
0
-1
-2
-3
-4
-3
-2
-1
0 1 Eje real
2
3
4
Figura 4. Rotación 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 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) 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 razón k = ', num2str(k)]) hold off
Homotecia de razón k = 3 8 6 4
Eje imaginario
2
-4 -6 -8 -10
end >> homotecia(z, 3)
0 -2
-12
-10
-5
0 Eje real
5
10
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)
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 razón k = ', num2str(k) ' y ángulo ', num2str(alpha) ' radianes']) hold off
Semejanza de razón k = 3 y ángulo 1.5708 radianes 8
2 0 -2 -4 -6 -8 -8
-6
-4
-2
0
2 Eje real
Figura 6. Semejanza de razón k
4
6
8
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 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 Traslación
2x1 2x1 x x' y y'
x y
z w z (a bi )
a b
Rotación
x x' y y'
Homotecia
x x' y y'
k
x y
x x' y y'
k
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 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) Polígono a transformar y polígono transformado 10
5
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('Polígono a transformar y polígono transformado') grid axis equal hold off end
0
-5 -6
-4
-2
0
2
4 Abscisas
6
8
10
12
14
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 x x' y y'
x 0
z w Re( z )
1 ( z z) 2
Proyección sobre eje Y
x x' y y'
0 y
z w Im( z )
1 ( z z) 2i
Simetría con respecto al origen
x x' y y'
x y
zw
Simetría con respecto al eje X
x x' y y'
x y
zw
Simetría con respecto al eje Y
x x' y y'
x y
zw
Proyección sobre eje X
z
z z
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 P1 ( x1 , y1 ) puede realizarse mediante:
zw
z0 ei Re(e
i
( 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 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: 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 ) . También la homotecia puede presentarse de manera más 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 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; PAUSE_ESCENA = 0.15;
% Segundos de duración de la escena % Segundos de pausa de la animación
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 niños de camino hacia una noria
375