I was thrilled to see animatecurve in Release 5 of Maple V, but lately, I have had problems. I am using a Power Mac with System 7.5.3 Revision 2.
I have been trying to animate the path of a projectile (baseball) and what I thought was working before no longer works:
x := t -> t*v*cos(u); y := t -> -16*t^2 + t*v*sin(u) + 3; v := 105; u := Pi/4; plot([x(t), y(t), t=0..4.68]);
gives the correct plot.
(Why 4.68? That’s when the ball hits the ground).
animatecurve([x(t), y(t), t=0..4.68]);
also used to give the right animation
until this past week. Defing x & y
as expressions instead of functions also used to
work. Now animatecurve gives a graph for x & y
values far beyond the correct
ones.
Moreover, animatecurve( [ cos(t), sin(t), t=0..2*Pi]);
works once, at most. After
that, it gives various erroneous plots (my favorite is one with a set of points on the unit
circle and lines between point on the other side of the circle – it’s a really neast picture that
I could never do myself).
Writing down the x & y
expressions directly in animatecurve sometimes works (but only
once) and sometimes not.
This is a problem with my own personal copy of Maple (whether I am connected to the
University network or not), with the network versions – both Mac & PC
, and with a UNIX
version installed on a Sun Sparc Station.
Yesterday, I stumbled across something that has worked thus far: With above notation,
animatecurve( [x, y, 0..4.68]); # or, for the circle, animatecurve([cos, sin, 0..2*Pi]);
I am glad I found sometihng that did work, but what I was doing before should have continued to work – certainly that’s what the help page for animate curve suggests.
I have given Maple plenty of memory – 30 MB, so I do not think it is a memory issue.
The bug in animatecurve seems to be that it uses the global variables u and v for its own purposes. These should have been declared as local variables. If they have been assigned values, animatecurve may not work properly. So the easy work-around is to use some other variable names instead of u and v.
Here is another bug, or, if you will, inconsistency, in animatecurve. Compare the following:
with(plots): animatecurve(cos(t),t=0..Pi,coords=polar); animatecurve(arccos(r),r=-1..1,coords=polar); animate(a*cos(t),t=0..Pi,a=0..1,coords=polar); plot(cos(t),t=0..Pi,coords=polar);
Whereas plot and animate understand the expression (here cos(t)
) as referring to r
expressed in terms of theta, animatecurve takes the opposite view. The last three commands
give circles, where the first does not.
There is no difference in interpretation when the parametric form is used: [cos(t),t,t=0..Pi]
.