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 = {#[[1]], f0[#[[1]]]}) &]];
> 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[[1]], f0[#1[[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[[1]], f0[#1[[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