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. > >
- References:
- Re: Curve Tracking and fetching Locator coordinates
- From: Alexei Boulbitch <alexei.boulbitch@iee.lu>
- Re: Curve Tracking and fetching Locator coordinates