Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

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


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

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

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
W. Craig Carter

Posts: 266
Registered: 9/10/05
Re: Fixed Typo in Code---> Re: updating a simulation
Posted: Mar 8, 2013 4:45 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply


Thanks Bob,
That's better.

I'm still surprised that is the cleanest way to do it. What I wasn't
sure about is if that If[] is being called repeatedly if its argument is
Dynamic. I think it is not because the the kernel and the FrontEnd
don't seem to be taxing the cpu.

Craig

W Craig Carter
Professor of Materials Science, MIT



On Mar 8, 13, at 6:22 AM, Bob Hanlon wrote:

> 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
>>>
>>>

>



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.