       Re: Constrain locator

• To: mathgroup at smc.vnet.net
• Subject: [mg121725] Re: Constrain locator
• From: Armand Tamzarian <mike.honeychurch at gmail.com>
• Date: Tue, 27 Sep 2011 06:22:19 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <j5r42k\$iac\$1@smc.vnet.net>

```On Sep 27, 10:06 am, Tom De Vries <tidetable... at gmail.com> wrote:
> Hello everyone,
>
> I'm looking for a simple way to constrain a locator to a particular function.
>
> I've seen a few methods given by posters to this group and others.
>
> In programs like Sketchpad and Geogebra you can add a point to a
> function and immediately constrain the point to that function.
> You can then "trace" the point, displaying coordinates, etc.
>
> I'm trying to work within Mathematica if I can,  but this is hard for
> me to implement.
>
> Working through a few examples,  I distilled things down to the
> following snippet of code.
> It puts a point on the function y = x^2 and allows the point to be
> dragged along it.
>
> f0[x_] := x^2;
>
> DynamicModule[{p = {1, 1}},
>  loc := Locator[Dynamic[p, (p = {#[], f0[#[]]}) &]];
>  Show[{Plot[f0[x], {x, -10, 10}], Graphics[{loc}]},
>   PlotRange -> {{-4, 4}, {-1, 10}},
>   AspectRatio -> 1]
>  ]
>
> I would be grateful for a few things...
>
> A)  a little help on exactly how this works...!
> B)  changing the display of the locator to a point on the function
> C)  displaying the coordinate of the point
>
> I appreciate the input given by members of this group.
>
> Sorry for the trivial question, but it sure would help with a lot of
> things I am trying to teach at the junior/high school level.
>
> Tom

A. which part would you like to understand? The Locator?

It isn't entirely clear to me what the difference is between B and C
but here are two examples:

DynamicModule[{loc, f0, p = {1, 1}, point},

f0[x_] := x^2;

point = Graphics[{Red, Table[Circle[{0, 0}, i], {i, 3}]},
ImageSize -> 20];

loc = Locator[Dynamic[p, (p = {#1[], f0[#1[]]}) &], point];

Column[{
Show[{Plot[f0[x], {x, -10, 10}], Graphics[{loc}]},
PlotRange -> {{-4, 4}, {-1, 10}}, AspectRatio -> 1],

Row[{"The points are: ", Dynamic[p]}]
}]

]

and

DynamicModule[{loc, f0, p = {1, 1}, point},

f0[x_] := x^2;

point = Graphics[{Text[
Dynamic@Style[NumberForm[#, {2, 2}] & /@ p, Bold], Dynamic[p]]},
ImageSize -> 70];

loc = Locator[Dynamic[p, (p = {#1[], f0[#1[]]}) &], point];

Column[{
Show[{Plot[f0[x], {x, -10, 10}], Graphics[{loc}]},
PlotRange -> {{-4, 4}, {-1, 10}}, AspectRatio -> 1],

Row[{"The points are: ", Dynamic[p]}]
}]

]

You'll want to add some additional styling to either of these and
maybe offset the text in the second one.

Mike

```

• Prev by Date: Re: A fast way to compare two vectors
• Next by Date: Re: Compilation: Avoiding inlining
• Previous by thread: Constrain locator
• Next by thread: Re: Constrain locator