Animaciones Con Maple
Animaciones Con Maple
Animaciones Con Maple
1.
1.1.
La funcin animate nos permite crear animaciones de grficos bidimensionales, producidos por funciones
de una variable que dependen de un parmetro adicional, el cual hace el papel del tiempo. Esta funcin genera
un conjunto de grficas bidimensionales, las cuales se muestran en sucesin para simular la animacin.
animate forma parte del paquete plots. Su sintaxis es:
animate(expr, x=a..b, t=c..d, opciones);
animate([f(x,t), g(x,t), h(x,t), ...], x=a..b, t=c..d, opciones);
Donde expr puede ser una funcin o expresin que depende de una variable y del tiempo, dada en forma
expl cita o paramtrica. Tambin se pueden incluir un conjunto de funciones como argumento. Las opciones
aceptadas son las mismas de plot; adicionalmente, se puede incluir la opcin frames=n, donde n es el
nmero de grficas que deben generarse en la animacin, el valor por omisin es 16. Veamos un ejemplo:
Generaremos una animacin que nos muestre el comportamiento de una familia de funciones de la forma
sin(x*t), en el intervalo [-Pi..Pi], para t de 1 a 10.
Primero cargamos la funcin con with.
>
with(plots, animate);
[animate]
>
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
Nota: En todos los ejemplos de animaciones de este captulo se incluyen varias grficas, para
mostrar al lector el aspecto de las animaciones.
En una regin que contiene una animacin, la barra contextual nos proporciona un conjunto de elementos
por medio de los cuales podemos tener el control sta. A continuacin se describe la funcin de cada uno de
los componentes de esta barra:
. Cada vez que el usuario selecciona con el ratn un punto sobre la animacin, en esta
regin se muestran sus coordenadas.
. Este botn nos permite detener la animacin, una vez iniciada.
. Este botn nos permite iniciar la animacin.
. Por medio de este botn podemos avanzar un cuadro a la vez.
. Con este botn podemos hacer que la animacin se muestre en sentido inverso.
. Este botn nos permite hacer que la animacin se muestre en sentido normal.
. Este botn nos permite disminuir la velocidad con la que se muestra la animacin
. Por medio de este botn podemos incrementar la velocidad de la animacin.
. Este botn nos permite ejecutar la animacin un ciclo a la vez.
. Con este botn podemos hacer que la animacin se muestre en un ciclo continuo.
Veamos otro ejemplo, con una funcin paramtrica.
>
8 6 4 2 0
2
8 6 4 2 0
2
8 6 4 2 0
2
8 6 4 2 0
2
2
2
8 6 4 2 0
2
La siguiente animacin muestra una funcin en coordenadas polares. Incluimos la opcin frames=50,
para generar 50 cuadros.
>
>
80
80
80
80
60
60
60
60
60
40
40
40
40
20
80 60 40 20
20
80 60 40 20
20
80 60 40 20
20
80 60 40 20
20
40
60
80 100
20
40
60
80 100
20
40
60
80 100
40
20
40
60
20
80 60 40 20
80 100
20
20
20
20
20
40
40
40
40
40
60
60
60
60
60
80
80
80
80
80
20
40
60
80 100
0
1
0.2
0.4
0.6
0.8
x
1.2
1.4
0.2
0.4
0.6
0.8
x
1.2
1.4
0
1
0.2
0.4
0.6
0.8
x
1.2
1.4
1
0.2
0.4
0.6
0.8
x
1.2
1.4
0
1
1.2.
0.2
0.4
0.6
0.8
x
1.2
1.4
Otra forma de crear animaciones en dos dimensiones consiste en generar cada una de las grficas por
separado y despues mostrarlas en secuencia por medio de la funcin display, agregando para ello la opcin
insequence=true. La funcin display muestra generalmente en un solo despliegue las grficas que recibe
como argumento, al agregar la opcin mencionada, las grficas son mostradas secuencialmente, en el orden
en que fueron colocadas como argumento, creando as la animacin. Una ventaja de usar este mtodo para
crear una animacin es que cada uno de los cuadros puede tener una estructura diferente. Por ejemplo,
crearemos las grficas de las funciones sin(n*x)*exp(-x^2)*n, para n de 1 a 6 y x en [-Pi..Pi], cada una
con un color diferente.
Antes que nada, cargamos la instruccin display, la cual pertenece al paquete plots.
>
with(plots, display);
[display]
A continuacin generamos cada una de las grficas:
>
>
>
>
>
>
>
display([g1, g2, g3, g4, g5, g6, g5, g4, g3, g2, g1], insequence=true);
0.4
4
4
2
0.2
1
3
0.2
2
4
2
0.4
Las grficas utilizadas en esta animacin, tambien pudieron haber sido creadas a partir de una secuencia,
por ejemplo de la siguiente forma:
Primero generamos una lista para los colores.
>
display(graf, insequence=true);
Los elementos de la lista de grficas pueden ser invocados individualmente; por ejemplo, si queremos
visualizar la segunda grfica de graf.
>
>
graf[2];
2
1
1
2
De la misma forma podemos referenciarlas para incluirlas en la animacin. Por ejemplo, la siguiente
instruccin genera la misma animacin mostrada arriba:
>
>
Las regiones de animaciones en dos dimensiones pueden ser manipuladas de la misma forma que las
grficas bidimensionales; por ejemplo, para cambiar el tipo de ejes, o el estilo y smbolo usado en las lineas,
entre otras cosas.
2.
2.1.
Anlogamente a las animaciones en dos dimensiones, la instruccin animate3d nos permite crear animaciones tridimensionales, a partir de funciones que dependen de tres parmetros; los dos primeros son tomados
como intervalos de graficacin, mientras que el tercero puede ser considerado el tiempo. La sintaxis es:
animate3d(f(x,y,t), x=a..b, y=c..d, t=p..q, opciones);
animate3d([f(x,y,t), g(x,y,t), h(x,y,t),...], x=a..b, y=c..d, t=p..q, opciones);
La funcin puede ser dada en forma explicita, en forma de expresin o bien en forma paramtrica. Tambien
se pueden incluir varias funciones en una misma animacin. Las opciones aceptadas por animate3d son las
mismas de plot3d. Adicionalmente se puede incluir la opcin frames=n, para indicar la cantidad de cuadros
que formarn la animacin. Veamos un ejemplo.
Generaremos la animacin de la familia de funciones cos(t*x)*sin(t*x), para x=-Pi..Pi, y=-Pi..Pi,
haciendo variar t de 1 a 5.
Antes cargamos la funcin animate3d, del paquete plots.
>
with(plots, animate3d):
>
>
0.5
0
3
2
0.5
3
1
2
0
1
y
1
1
2
3
0.4
0.2
0
0.2
0.4
3
0.5
3
2
1
2
0
1
y
1
1
2
3
2
0.5
3
1
2
0
1
y
1
1
2
3
0.4
0.2
0
0.2
0.4
3
0.5
3
2
1
2
0
1
y
1
1
2
3
2
0.5
3
1
2
0
1
y
1
1
2
3
Los botones de la barra de contexto para animaciones tridimensionales tienen el mismo funcionamiento
que en el caso de dos dimensiones. La nica diferencia es que, en este caso, no es posible seleccionar con el
ratn puntos en la grfica para ver sus coordenadas. En lugar de las coordenadas, aparecen los mens:
Con stos es posible modificar la orientacin de las grficas de la animacin. Lo mismo puede hacerse
directamente sobre la regin de la animacin con el ratn, en la misma forma que se manipulan las grficas
tridimensionales.
Veamos ahora un ejemplo con una forma paramtrica.
>
>
6
4
2
0
2
4
4
6
4
2
0
2
4
3
0
2
6
4
2
0
2
4
3
10
0
0
2
20
1
6
4
2
0
2
4
3
10
0
30
0
2
20
6
4
2
0
2
4
3
10
0
30
0
2
20
1
10
0
30
0
2
20
1
10
0
30
20
1
30
>
>
2.2.
Otro de los mtodos para crear animaciones en tres dimensiones es generar cada una de las grficas y
despues mostrarlas en secuencia por medio de la funcin display3d, incluyendo la opcin insequence=true
(de la misma forma que en el caso de dos dimensiones). Por ejemplo, usando la instruccin sphereplot,
generaremos las grficas de 5 esferas con centro en el origen, de radio r=1, 2, 3, 4, 5, y las mostraremos en
secuencia.
with(plots, sphereplot, display3d);
>
[sphereplot, display3d ]
>
>
4
2
z 0
2
4
4
2
z 0
2
4
4
4
2
2
y
0
2
2
4
4
2
z 0
2
4
4
4
2
2
y
0
2
2
4
4
2
z 0
2
4
4
4
2
0
2
2
4
4
2
z 0
2
4
4
4
2
2
y
0
2
2
4
4
2
2
y
0
2
2
4
>
>
display3d(anm, insequence=true);