Re: "single-shot" autorun in Manipulate[] object
- To: mathgroup at smc.vnet.net
- Subject: [mg101298] Re: [mg101276] "single-shot" autorun in Manipulate[] object
- From: "David Park" <djmpark at comcast.net>
- Date: Tue, 30 Jun 2009 06:35:29 -0400 (EDT)
- References: <24121010.1246246648487.JavaMail.root@n11>
Leo, The AutorunSequencing option in Manipulate seems ill designed to me. One method to implement custom sequencing is to use a single time variable and a Piecewise function to control the actual variables. Here is an Animation that shows just the A and B values: Module[ {amin = 0, amax = 1, bmin = 0, bmax = 1, abfunc}, abfunc[t_] := Piecewise[ {{{amin, bmin}, t <= 5}, {{amin + (amax - amin) (t - 5)/20, bmin}, 5 < t <= 25}, {{amax, bmin}, 25 < t <= 30}, {{amax, bmin + (bmax - bmin) (t - 30)/20}, 30 < t <= 50}, {{amax, bmax}, 50 < t <= 55}, {{amax - (amax - amin) (t - 55)/20, bmax}, 55 < t <= 75}, {{amin, bmax}, 75 < t <= 80}}]; Animate[NumberForm[abfunc[t], {3, 2}], {t, 0, 80}, AnimationRate -> 80/10, AnimationRunning -> False, AppearanceElements -> None] ] The following uses an Animator to simply start and stop the animation. Module[ {amin = 0, amax = 1, bmin = 0, bmax = 1, abfunc, t}, abfunc[t_] := Piecewise[ {{{amin, bmin}, t <= 5}, {{amin + (amax - amin) (t - 5)/20, bmin}, 5 < t <= 25}, {{amax, bmin}, 25 < t <= 30}, {{amax, bmin + (bmax - bmin) (t - 30)/20}, 30 < t <= 50}, {{amax, bmax}, 50 < t <= 55}, {{amax - (amax - amin) (t - 55)/20, bmax}, 55 < t <= 75}, {{amin, bmax}, 75 < t <= 80}}]; Column[ {Animator[Dynamic[t], {0, 80, .1}, AnimationRate -> 80/10, AnimationRunning -> False, AppearanceElements -> {"PlayPauseButton"}], Dynamic@NumberForm[abfunc[t], {3, 2}]}] ] I usually put a 'pause time' between each 'action' in such animations. It makes it much easier for the viewer to distinguish the steps. As is often the case, it is easier to work outside Manipulate and set up custom dynamic displays. David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ From: dnquark [mailto:dnquark at gmail.com] I am trying to create an animation by exporting a Manipulate[] object. I have two controls, A and B. I need to have A go from Amin to Amax, then (with A=Amax) B go from Bmin to Bmax, then (optionally) A go from Amax to Amin. Using AutorunSequencing option I can only make A cycle from Amin to Amax back to Amin, and then with A=Amin B cycles from Bmin to Bmax and back. Is there a way to control it in a finer manner such as desribed above? Or do I have to use ListAnimate[]? Thanks, --Leo