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