Re: DynamicModule, Speed, and locally static variables.
- To: mathgroup at smc.vnet.net
- Subject: [mg82040] Re: [mg82003] DynamicModule, Speed, and locally static variables.
- From: "W. Craig Carter" <ccarter at mit.edu>
- Date: Wed, 10 Oct 2007 04:26:33 -0400 (EDT)
- References: <200710090936.FAA19743@smc.vnet.net>
I think everything I need to know is probably covered in the
two tutorials (IntroductionToDynamic and
AdvancedDynamicFunctionality)
If you were inclined to answer, you might hold off a bit and
let me digest the tutorials... Sorry if I wasted anyone's
time.
On Tue, 9 Oct 2007, W. Craig Carter wrote:
> Subject: [mg82003] DynamicModule, Speed, and locally static variables.
>
> Dear Mathematica Group,
>
> Sorry for the long question on combining Module,
> DynamicModule, LocatorPane, Manipulate to produce a
> GraphicsRow.
>
> I am in the middle of designing small program that uses
> Locator to find the position of a dynamic point and
> Manipulate to control the shape of the locator, and then
> compute an expensive result based on the position (from LocatorPlane)
> and the size (from Manipulate).
>
> Some calculations are expensive and don't depend on the
> locator position or shape. Other calculations are
> expensive and do depend on the locator's position and size.
>
> I am wondering how to scope this. Do I pay a penalty for
> local variables in DynamicModule that won't change?
>
> Here is what I am trying, I've made up an artificial
> example below that will (hopefully) show what I am trying to do.
> It is not working; I am not sure why, but guessing that it
> has to do with variable scope.
>
> I am hoping for two kinds of help:
> 1) that someone can comment about computational efficiency and
> dynamic variable scope.
> 2) that someone could point to a demo which does something similar.
> 3) I believe that I should be using ControlActive to
> separate the time scales from locator movement and graphics
> production. I can't quite see how that should appear here,
> yet.
>
> Does it make sense to have the following
> Module[DynamicModule[Manipulate[Locator]]] scoping?
> ----example-----
> demo[f_] :=
> Module[{StaticExpression=ExpensiveFunction[f],
> StaticImage3D,StaticContourPlot,
> PositionInit={1,2}, LocatorSizeInit=1}, (*vars that don't change*)
> StaticImage3D=Plot3D[StaticExpression];
> StaticContourPlot=ContourPlot[StaticExpression]
> GraphicsRow[ (*draw three graphics, 1-fixed, 2-manipulate, 3-result of dynamic variable and manipulate*)
> Flatten[
> {
> StaticImage, (*first-image*)
> DynamicModule[newdata,{position=PositionInit,LocatorShape=Graphics[g[PositionInit,LocatorSizeInit]]},
> {Manipulate[ (*manipulate returns a graphics object?*)
> LocatorShape=Graphics[position,size]; (*dynamic*)
> newdata=ExpensiveCalculation[position,size,StaticExpression];
> LocatorPlane[Dynamic[position],StaticContourPlot,Appearance->LocatorShape],(*draw dynamic locator on static image*)
> {{size,LocatorSizeInit},0,1}],
> ArrayPlot[ExpensivistCalc[position, size, StaticExpression]] (*the final graphics object and most expensive*)
> }
> }
> ] (*dynamic module*)
> ] (*flatten*)
> ] (*graphicsrow*)
> ] (*module*)
>
>
> W. Craig Carter
>
>
>
- References:
- DynamicModule, Speed, and locally static variables.
- From: "W. Craig Carter" <ccarter@mit.edu>
- DynamicModule, Speed, and locally static variables.