Re: Curve Tracking and fetching Locator coordinates

• To: mathgroup at smc.vnet.net
• Subject: [mg119541] Re: Curve Tracking and fetching Locator coordinates
• From: Alexei Boulbitch <alexei.boulbitch at iee.lu>
• Date: Wed, 8 Jun 2011 07:15:20 -0400 (EDT)

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

• Prev by Date: Re: implicit surfaces from older version of Mathematica
• Next by Date: Re: Front end - Error when saving file
• Previous by thread: Re: Curve Tracking and fetching Locator coordinates
• Next by thread: Re: Curve Tracking and fetching Locator coordinates