Re: Strange interaction between local symbols of a proc inside the
- To: mathgroup at smc.vnet.net
- Subject: [mg84893] Re: Strange interaction between local symbols of a proc inside the
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Fri, 18 Jan 2008 05:47:50 -0500 (EST)
- Organization: Uni Leipzig
- References: <fmngdf$3e7$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi,
try
cc = ContinuousAction -> False;
Manipulate[
proc[], {xMax, 10, ControlType -> None}, {yMax, 1,
ControlType -> None},
Initialization :> {proc[] := DynamicModule[{yy = 2, xx = 8},
Dynamic[
Plot[Sin[x], {x, 0, xMax},
PlotRange -> {Automatic, {-yMax, yMax}}, Frame -> True,
FrameLabel -> {Slider[Dynamic[xMax], {1, 2*xx}, cc],
VerticalSlider[Dynamic[yMax], {1, 2*yy}, cc]},
RotateLabel -> False]]]}]
..
Regards
Jens
Nasser Abbasi wrote:
> Mathematica 6.0.1 on windoz.
>
> Below are 2 examples. In the first I have a proc in the init of a Manipulate
> which uses Dynamic symbols to obtain the limits of a plot. (the x and y
> limits).
>
> In the first example, I have ONE local symbol called yy in the proc which is
> used as the maximum this dynamic symbol goes to. This seems to work ok:
>
>
> (*********** EXAMPLE 1 works ******************)
> cc=ContinuousAction->False;
>
> Manipulate[proc[],
> {xMax, 10, ControlType -> None},
> {yMax, 1, ControlType -> None},
> Initialization :>
> {
> proc[] := Module[{yy},
> yy = 2;
> Dynamic[Plot[Sin[x], {x, 0, xMax},
> PlotRange -> {Automatic, {-yMax, yMax}},
> Frame -> True,
> FrameLabel -> {Slider[Dynamic[xMax], {1, 10},cc],
> VerticalSlider[Dynamic[yMax], {1, 2*yy},cc]},
> RotateLabel -> False
> ]
> ]
> ]
> }
> ]
>
>
> Now, I added another local symbol call xx and did the same using it for the
> x-range. Now I get errors. You'd have to move the slides couple of times to
> see the error.
>
> (********** EXAMPLE 2 error *******************)
> cc=ContinuousAction->False;
>
> Manipulate[proc[],
> {xMax, 10, ControlType -> None},
> {yMax, 1, ControlType -> None},
> Initialization :>
> {
> proc[] := Module[{yy,xx},
> yy = 2;
> xx = 8;
> Dynamic[Plot[Sin[x], {x, 0, xMax},
> PlotRange -> {Automatic, {-yMax, yMax}},
> Frame -> True,
> FrameLabel -> {Slider[Dynamic[xMax], {1, 2*xx},cc],
> VerticalSlider[Dynamic[yMax], {1, 2*yy},cc]},
> RotateLabel -> False
> ]
> ]
> ]
> }
> ]
>
> Why would the first example work, and the second not work?
> I can fix the second example, by making yy and xx localized to Manipulate
> and not local symbols to the proc[] as follows
>
> (********** EXAMPLE 3 works *******************)
> cc=ContinuousAction->False;
>
> Manipulate[proc[],
> {xMax, 10, ControlType -> None},
> {yMax, 1, ControlType -> None},
> {yy, 1, ControlType -> None},
> {xx, 1, ControlType -> None},
>
> Initialization :>
> {
> proc[] := Module[{},
> yy = 2;
> xx = 8;
> Dynamic[Plot[Sin[x], {x, 0, xMax},
> PlotRange -> {Automatic, {-yMax, yMax}},
> Frame -> True,
> FrameLabel -> {Slider[Dynamic[xMax], {1, 2*xx},cc],
> VerticalSlider[Dynamic[yMax], {1, 2*yy},cc]},
> RotateLabel -> False
> ]
> ]
> ]
> }
> ]
>
>
> It seems if a local symbol to Manipulate depends on a local symbol to a
> proc[] 'called' by Manipulate as in the first 2 examples above, this will
> result in something not nice. But I do not understand why the first example
> works, and the second does not. It seems adding a second interaction broke
> something internally by accident?
>
> Any idea? And on the subject, could any one be kind enought and summarize
> what is the visibility scope of a Dynamic symbol in Mathematica?
>
> thanks,
> Nasser
>
>
>
>