Você está na página 1de 7

Animaciones en Maple

Jos Luis Torres Rodrguez*


Abril 2011
Una animacin en Maple es una secuencia de grficas que se muestran en sucesin dentro de una regin
de animacin; estas regiones son similares a las de grficas en dos y tres dimensiones, pero incluyen en la
barra de contexto botones para controlar la animacin. En Maple, las animaciones pueden crearse, tanto en
dos como en tres dimensiones, de dos maneras diferentes. Una de estas formas es por medio de las funciones
animate y animate3d, las cuales generan automticamente las grficas de la animacin a partir de los
argumentos recibidos. La otra forma es generando manualmente las grficas y desplegandolas en sucesin
por medio de display o display3d. A continuacin revisaremos ambas formas.

1.

Animaciones en dos dimensiones

1.1.

Animaciones creadas con animate

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]

Y a continuacin generamos la animacin:


* Coordinacin

de Cmputo, Facultad de Ciencias, UNAM

>

animate(sin(x*t), x=-Pi..Pi, t=1..10);

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.
>

animate([t*sin(x), t*cos(x), x=-Pi..Pi], t=1..8, view=[-8..8,-8..8]);


8

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.
>
>

animate([u*t, t, t=1..8*Pi], u=1..4, coords=polar, frames=50,


numpoints=100, color=blue);
80

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

Finalmente, tenemos una animacin que incluye varias funciones.


>

animate({x-x^3/u, sin(u*x), ln(x*u)}, x=0..Pi/2, u=1..16, color=gold);

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

Animaciones en 2D por secuencia de grficas

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:
>

g1 := plot(sin(x)*exp(-x^2), x=-Pi..Pi, color=blue):

>

g2 := plot(sin(2*x)*exp(-x^2)*2, x=-Pi..Pi, color=gold):

>

g3 := plot(sin(3*x)*exp(-x^2)*3, x=-Pi..Pi, color=green):

>

g4 := plot(sin(4*x)*exp(-x^2)*4, x=-Pi..Pi, color=red):

>

g5 := plot(sin(5*x)*exp(-x^2)*5, x=-Pi..Pi, color=cyan):

>

g6 := plot(sin(6*x)*exp(-x^2)*6, x=-Pi..Pi, color=magenta):

Finalmente mostramos la animacin comenzando en la grfica 1 hasta la grfica 6, y despues regresando


a la grfica 1.
3

>

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.
>

lcol := [blue, gold, green, red, cyan, magenta];

lcol := [blue, gold , green, red , cyan, magenta]


A continuacin creamos la lista de grficas usando una secuencia; recuerdese que todas ellas son de la
forma sin(n*x)*exp(-x^2)*n. Los colores sern tomados de la lista anterior.
graf := [seq(plot(sin(n*x)*exp(-x^2)*n, x=-Pi..Pi, color=lcol[n]),
n=1..6)]:
Finalmente desplegamos las grficas en secuencia con display, usando la siguiente instruccin:
>
>

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:
>
>

display([op(graf), graf[5], graf[4], graf[3], graf[2], graf[1]],


insequence=true);

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.

Animaciones en tres dimensiones

2.1.

Animaciones con animate3d

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):

>
>

animate3d(cos(t*x)*sin(t*x), x=-Pi..Pi, y=-Pi..Pi, t=1..5,


axes=framed, orientation=[30,30]);

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.

animate3d([t*x, y-t, x*cos(t*y)], x=-1..2*Pi, y=1..4, t=2..5,


axes=boxed);

>
>

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

Por ltimo, tenemos un ejemplo que incluye varias funciones.


animate3d({t*x*sin(y), t*x*y, t*(x^2 + y^2)}, x=-Pi..Pi, y=-Pi..Pi,
t=1..20, orientation=[105,60], view=-50..50);

>
>

2.2.

Animaciones en 3D por secuencia de grficas

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 ]
>

esferas := [seq(sphereplot(r, theta=0..2*Pi, phi=0..Pi), r=1..5)]:

>

display3d(esferas, insequence=true, axes=framed);

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

En el siguiente ejemplo, generaremos una animacin para la grfica de f(x,y)=(1.3)^x*sin(y). En este


caso, el parmetro t no afecta a la grfica sino a su orientacin, modificaremos el ngulo theta de -50 a 300
grados; lo que obtenemos con esto es una animacin que muestra la grfica desde distintos ngulos.
Primero generamos la secuencia. Cada una de las grficas es de la forma:
plot3d((1.3)^x*sin(y), x=-1..2, y=0..Pi, coords=spherical, orientation=[ang, 45])
Donde ang debe variar de -50 a 300 grados.

>
>

anm := [seq(plot3d((1.3)^x*sin(y), x=-1..2, y=0..Pi, coords=spherical,


orientation=[-50 + 10*t,45]), t=1..35)]:

Finalmente mostramos estas grficas en secuencia.


>

display3d(anm, insequence=true);

Você também pode gostar