Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: Fixed Typo in Code---> Re: updating a simulation within Manipulate.
Replies: 5   Last Post: Mar 9, 2013 5:25 AM

 Messages: [ Previous | Next ]
 Bob Hanlon Posts: 906 Registered: 10/29/11
Re: Fixed Typo in Code---> Re: updating a simulation
Posted: Mar 8, 2013 6:21 AM

Use of If structure seems reasonable. Recommend that you use a
separate color for the latest point/disk so that the current position
is evident. Other minor changes made.

randomStep[bias_, stepList_] :=
Module[
{angle = RandomVariate[
NormalDistribution[bias, 1]]},
Join[stepList,
{Last[stepList] + {Cos[angle], Sin[angle]}}]];

walkerGraphic[stepList_, range_] :=
Graphics[{
Gray,
PointSize[.04],
Point@Most@stepList,
Blue,
Point@Last@stepList},
PlotRange -> range {{-1, 1}, {-1, 1}}];

DynamicModule[{walkerPath = {{0, 0}}},
Manipulate[
If[keepWalking,
walkerPath = randomStep[bias, walkerPath]];
walkerGraphic[walkerPath, range],
Row[{
Control[
{{keepWalking, False, "Keep Walking"},
{True, False}}],
Spacer[20],
Button["Reset",
reset = False;
keepWalking = False;
walkerPath = {{0, 0}},
ImageSize -> Tiny,
BaseStyle -> {8}]
}],
Delimiter,
{{range, 20, "Range"}, 0, 100},
{{bias, 0, "Bias"}, -Pi, Pi,
AngularGauge[##, ImageSize -> 160,
ScaleOrigin -> {{-4 Pi, 4 Pi}, 1}] &}]]

Bob Hanlon

On Thu, Mar 7, 2013 at 10:47 PM, W Craig Carter <ccarter@mit.edu> wrote:
> On previous message, there is a typo in the example code, please use this instead:
>
> randomStep[bias_, stepList_] :=
> Module[{angle = RandomVariate[NormalDistribution[bias, 1]]},
> Join[stepList, {Last[stepList] + {Cos[angle], Sin[angle]}}]]
>
> walkerGraphic[stepList_, range_] :=
> Graphics[GraphicsComplex[stepList, Disk /@ Range[Length[stepList]]],
> PlotRange -> range {{-1, 1}, {-1, 1}}]
>
> DynamicModule[{walkerPath = {{0, 0}}},
> Manipulate[
> If[keepWalking,(*kludge warning---testing for If[ True...] seems inefficient*)
> walkerPath = randomStep[bias, walkerPath]];
> If[reset, reset = False; keepWalking = False;
> walkerPath = {{0, 0}}];
> walkerGraphic[walkerPath,
> range], {{keepWalking, False}, {True, False}}, {{reset,
> False}, {True, False}}, Delimiter, {{range, 20}, 0, 100},
> {{bias, 0}, -Pi, Pi,
> AngularGauge[##, ImageSize -> 160,
> ScaleOrigin -> {{-4 Pi, 4 Pi}, 1}] &}]]
>
>
>
> W Craig Carter
> Professor of Materials Science, MIT
>
>
>
> On Mar 7, 13, at 17:16 PM, W Craig Carter wrote:
>

>> I *think* I've asked this question before, but I can't find it on mathgroup. In any case, I don't know the answer now.
>>
>> Here is a simple example of a Manipulate that updates a graphic as long as a boolean is true. This method seems like a kludge to me---is it? If so, what would be a better way to do this.
>>
>> This is a constructed example, the real case I am looking at is much more involved; but kudos to anyone who can make a reasonable facsimile of their signature by adjusting the random walker's bias....
>>
>> randomStep[bias_, stepList_] :=
>> Module[{angle = RandomVariate[NormalDistribution[bias, 1]]},
>> Join[stepList, {Last[stepList] + {Cos[angle], Sin[angle]}}]]
>>
>> walkerGraphic[stepList_, range_] :=
>> Graphics[GraphicsComplex[stepList, Disk /@ Range[Length[stepList]]],
>> PlotRange -> range {{-1, 1}, {-1, 1}}]
>>
>> DynamicModule[
>> {walkerPath = {{0, 0}}},
>> Manipulate[
>> If[keepWalking, (* kludge warning---testing for If[True...] seems inefficient *)
>> walkerPath = randomStep[bias, walkerPath]
>> ];
>> If[reset,
>> reset = False; keepWalking = False;
>> walkerPath = {{0, 0}}
>> ];
>> walkerGraphic[walkerPath, range],
>> {{keepWalking, False}, {True, False}},
>> {{reset, False}, {True, False}},
>> Delimiter,
>> {{range, 20}, 0, 100},
>> {{a, 0}, -Pi, Pi,
>> AngularGauge[##, ImageSize -> 160 ,
>> ScaleOrigin -> {{-4 Pi, 4 Pi}, 1}] &}
>> ]
>> ]
>>
>>
>>
>> W Craig Carter
>> Professor of Materials Science, MIT
>>
>>

Date Subject Author
3/7/13 W. Craig Carter
3/9/13 Nasser Abbasi
3/8/13 Bob Hanlon
3/8/13 W. Craig Carter