[Date Index]
[Thread Index]
[Author Index]
Re: Curve Tracking and fetching Locator coordinates
*To*: mathgroup at smc.vnet.net
*Subject*: [mg119553] Re: Curve Tracking and fetching Locator coordinates
*From*: Heike Gramberg <heike.gramberg at gmail.com>
*Date*: Thu, 9 Jun 2011 05:45:28 -0400 (EDT)
*References*: <201106081115.HAA23744@smc.vnet.net>
This should work, and only requires a small modification of the original
solution
f[x_] := Sin[x] Exp[-x];
alongTheCurve3[xMin_, xMax_] :=
DynamicModule[{pt = {xMin,
f[xMin]}},(*The Plot and the Locator are combined by Show*)
Show[{
Plot[f[x], {x, xMin, xMax},
Epilog ->
Inset[Style[Dynamic[pt, (pt = {#[[1]], f[#[[1]]]}) &], Red,
14], Scaled[{0.8, 0.8}]]],
Graphics[Locator[Dynamic[pt, (pt = {#[[1]], f[#[[1]]]}) &]]]}]];
alongTheCurve3[0, 2 \[Pi]]
Heike
On 8 Jun 2011, at 12:15, Alexei Boulbitch wrote:
> You are right, Murray, so get I. I should admit that I do not
understand, how to get rid of it. I have a further problem here.
> I do not see how to force the function alongTheCurve to understand an
arbitrary function f that is different from Sin[x] or
> Cos[x] or alike. Say, such as a combination of seceral elementary
functions as Sin{x]*Exp[-x].
>
> Of coarse, all problems (except for messages) are removed at once, if
the function Sin{x]*Exp[-x] is typed-in manually.
> For example, check this:
>
>
> alongTheCurve2[xMin_, xMax_] :=
> DynamicModule[{pt = {xMin, Sin[xMin]*Exp[-xMin]}},
>
> (*The Plot and the Locator are combined by Show*)
>
> Show[{(*Here is the plot of your curve*)
> Plot[Sin[x] Exp[-x], {x, xMin,
> xMax},
> (*This is the inset into the plot showing the locator \
> value*)
> Epilog ->
> Inset[Style[Dynamic[{pt[[1]], Sin[pt[[1]]]*Exp[-pt[[1]]]}],
> Red, 14], Scaled[{0.8, 0.8}]]],
>
> (*This part draws the locator*)
>
> Graphics[ Locator[Dynamic[{pt[[1]], Sin[pt[[1]]]*Exp[-pt[[1]]]}
>
\
> ]
> ]
> ]
> }]
> ];
>
> alongTheCurve2[0, 2 \[Pi]]
>
>
> But typing this in each time is too boring. The messages here state
that the tag Times in Dynamic[{pt[[1]], Sin[pt[[1]]]*Exp[-pt[[1]]]}]
> is protected.
>
> Alexei
>
>
>
>
>
> With that code and, say, the example alongTheCurve[Sin, 0, 2 \[Pi]],
as
> I move the locator, I get a huge list of messages generated, all of
the
> form "Set::write : Tag Sin in Sin[xxxxx] is Protected."
>
> On 6/6/2011 6:24 AM, Alexei Boulbitch wrote:
>> This is straightforward. If your Locator coordinates are denoted as
pt, and a function along which you want to move the Locator is f[x],
then you simply need to use the construction:
>>
>> Locator[Dynamic[{pt[[1]], f[pt[[1]]]
>> }
>> ]
>> ]
>>
>> The function entitled "alongTheCurve" plots a curve f[x] from xMin to
xMax and the locator slides along this curve. The value of locator can
be seen in the upper right corner of the plot:
>>
>> alongTheCurve[f_, xMin_, xMax_] :=
>> DynamicModule[{pt = {xMin, f[xMin]}},
>> (* The Plot and the Locator are combined by Show *)
>> Show[{
>> (* Here is the plot of your curve *)
>> Plot[f[x], {x, xMin, xMax},
>>
>> (* This is the inset into the plot showing the locator value *)
>> Epilog ->
>> Inset[Style[Dynamic[{pt[[1]], f[pt[[1]]]}], Red, 14],
>> Scaled[{0.8, 0.8}]]],
>>
>> (* This part draws the locator *)
>> Graphics[Locator[Dynamic[{pt[[1]], f[pt[[1]]]}]]]
>> }]
>> ];
>>
>> Try this:
>> alongTheCurve[Sin, 0, 2 \[Pi]]
>> alongTheCurve[Cos, 0, 2 \[Pi]]
>>
>> This function will not work in case you give it the combination of
the functions like
>> alongTheCurve[Sin+Cos, 0, 2 \[Pi]]
>>
>> Anyway, my aim is not to give a general solution, but only to show
one possible way to answer your question.
>>
>> Have fun, Alexei
>>
>>
>> Hello, I'm trying to figure out how to constrain a locator's movement
along
>> a curve, but then fetch the coordinates of the locator to use in a
>> calculation.
>>
>> The documentation has an example of a Locator moving along a circle,
but
>> it's strange, because the way they do it using Normalize seems to
make it
>> not clear how to access the coordinates of the locator.
>>
>> This is the example code from the Locator documentation:
>>
>> DynamicModule[{pt = {1, 0}},
>> Graphics[{Circle[], Locator[Dynamic[pt, (pt = Normalize[#])&]]},
>> PlotRange -> 2]]
>>
>> I'm guessing the normalize function is being applied to the locator
>> position, and turning it into a unit vector (not entirely clear on
how that
>> works in the code though). That has the effect of tracking the
locator on a
>> unit circe But there is no variable for the locator positon. pt is
simply a
>> list of constants {1,0} (although, I don't understand that entirely
either,
>> because it also appears to be set to simply being a Normalize
function)
>>
>> Anyway, if someone could give me a hint as to what is going on in
that code
>> I would much appreciate it (documentation seems sparse on the
locator)
>>
>> Barring that could someone just give me a quick hack for fetching the
>> locator's coordinates when it is being tracked along a circle (or
better yet
>> if it is being tracked along an arbitrary curve.)?
>>
>> Admittedly I have a foggy grasp about how Dynamic modules work, I'm
able to
>> do basic stuff, but it starts to get unwieldy if I branch out.
>>
>> Thank you for any help :)
>>
>>
>
> --
> Murray Eisenberg murray at math.umass.edu
> Mathematics& Statistics Dept.
> Lederle Graduate Research Tower phone 413 549-1020 (H)
> University of Massachusetts 413 545-2859 (W)
> 710 North Pleasant Street fax 413 545-1801
> Amherst, MA 01003-9305
>
>
> --
> Alexei Boulbitch, Dr. habil.
> Senior Scientist
> Material Development
>
> IEE S.A.
> ZAE Weiergewan
> 11, rue Edmond Reuter
> L-5326 CONTERN
> Luxembourg
>
> Tel: +352 2454 2566
> Fax: +352 2454 3566
> Mobile: +49 (0) 151 52 40 66 44
>
> e-mail: alexei.boulbitch at iee.lu
>
> www.iee.lu
>
> --
>
> This e-mail may contain trade secrets or privileged, undisclosed or
> otherwise confidential information. If you are not the intended
> recipient and have received this e-mail in error, you are hereby
> notified that any review, copying or distribution of it is strictly
> prohibited. Please inform us immediately and destroy the original
> transmittal from your system. Thank you for your co-operation.
>
>
Prev by Date:
**Re: Using Cases or Position to Find Strings in a List of Strings**
Next by Date:
**Seaching in Pi a sequence. Looking for a faster method**
Previous by thread:
**Re: Curve Tracking and fetching Locator coordinates**
Next by thread:
**Running P&L**
| |