Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

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




  • 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