MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: RE: Real Time Animation

At 03:45 AM 10/1/2002, Goyder Dr HGD wrote:
>Many thanks to all who replied.
>The original problem was as follows:
>In a presentation I wish to use Plot to generate a sequence of frames and
>then animate them. The problem is that the audience sees the animation
>twice. Once when the frames are being generated and then again after I have
>closed the group and double clicked on the top graphic. However, the first
>showing during generation is enough (but uncontrolled).
>Is it possible to tidy up the generation of the graphic so that it becomes
>the animation?
>There were two main solutions which I now apply to my real problem and not
>the simple, generic, problem in the original post.
>The real problem was how to build up a probably density function (PDF) in
>real time. In the examples below I redraw the PDF every time I add 10
><< JLink`;
>Solution from Omega Consulting
>GraphicCell[graphics_] :=
>    Cell[GraphicsData["PostScript", DisplayString[graphics]],"Graphics"]
>Block[{$DisplayFunction=Identity, graphs},
>   data={};
>    graphs =
>          Table[data=Flatten[Join[data,RandomArray[wb,10]]];
>       freq=BinCounts[data,{0,50,1}];
>       GraphicCell[
>         BarChart[Transpose[{freq,midpts}],ImageSize ->500] ], {500}];
>      NotebookWrite[EvaluationNotebook[],Cell[CellGroupData[graphs,Closed]]];
>      SelectionMove[EvaluationNotebook[], All, GeneratedCell];
>      FrontEndExecute[{FrontEndToken[EvaluationNotebook[],
>         "SelectionAnimate"]}]
>      ]
>This solution works but it generates 500 frames and sometimes exceeds the
>The paradigm here is generate all frames, then animate all frames.  We
>really need a loop that does:
>  generate next frame, delete last frame, show next frame
>Is it possible to do this?

Yes, however, I thought you didn't want to see the selection bar moving 
around during the animation. That's why I chose to generate the whole 
animation in one shot. Also, when you write the new cell over the old cell 
there is a "flash" between frames as the old frame is deleted. Here's an 
example of a frame-by-frame method.

GraphicCell[graphics_] :=
    Cell[GraphicsData["PostScript", DisplayString[graphics]],"Graphics"]

     SelectionMove[EvaluationNotebook[], All, GeneratedCell];
       GraphicCell[Plot[x y,{x,0,1}, PlotRange->{0,50}]]],

Also, if you add ShowCellBracket->False to GraphicCell and a Pause to the 
loop, then things get much better visually.

Omega Consulting
"The final answer to your Mathematica needs"

Spend less time searching and more time finding.

  • Prev by Date: Re: Accuracy and Precision
  • Next by Date: Loss of precision when using Simplify
  • Previous by thread: RE: Real Time Animation
  • Next by thread: Animations -- delete after viewing