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

MathGroup Archive 2012

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

Search the Archive

Re: Automatically colred and indexed custom locators

  • To: mathgroup at smc.vnet.net
  • Subject: [mg124587] Re: Automatically colred and indexed custom locators
  • From: Heike Gramberg <heike.gramberg at gmail.com>
  • Date: Wed, 25 Jan 2012 07:09:26 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201201241005.FAA20228@smc.vnet.net>

Looks nice. To make the locators snap to the grid on creation you can do 
something like this:

locGraphics[k_, n_, locSize_, opac_, offset_] :=
 Graphics[{Opacity[opac], Hue[0.85 (k - 1)/(n - 1)], Disk[{0, 0}],
   Opacity[1], Black, Circle[{0, 0}], Line[{{-1.5, 0}, {1.5, 0}}],
   Line[{{0, -1.5}, {0, 1.5}}], Text[k, {0, 0}, offset]},
  ImageSize -> locSize]

Manipulate[
 DynamicModule[{n},
  P = Round[P, .25];
  LocatorPane[Dynamic[P],
   Show[Graphics[{Thick, Line[P]}], Axes -> True, PlotRange -> 2,
    GridLines -> {Range[-2, 2, 0.25], Range[-2, 2, 0.25]},
    GridLinesStyle -> LightGray], {{-2, -2}, {2, 2}, {.25, .25}},
   LocatorAutoCreate -> True, Appearance -> (n = Length[P];
     Table[locGraphics[k, n, locSize, opac, offset], {k, 1, n}])]],
 {{P, {{0, 0}, {1, 1}}}, None},
 {{locSize, 15}, 5, 80, 1}, {{opac, 0.75}, 0,
  1}, {{offset, {0, 0}}, {-2, -2}, {2, 2}, {0.25, 0.25}}]

Basically, all I've done her is changing P from being a local variable 
of the DynamicModule to a
controller of the enclosing Manipulate and adding the line P = 
Round[P, .25];

Heike

By the way, changing P to a controller should also solve the problem in 
your other
post about morphing Bezier curves.

On 24 Jan 2012, at 11:05, Chris Young wrote:

> After quite a bit of re-reading the help on LocatorPane, I discovered

> the following very helpful hint:
>
> With Appearance->{Subscript[g, 1],Subscript[g, 2],...}, the 
i\[Null]^th
> locator is displayed as Subscript[g, i]. =BB
>
> Putting this into effect, and putting my graphics in the following
> function, I came up with a handy way to index and color auto-created

> locators in a Manipulate, so you know at a glance which point is 
which.
> Another nice feature when LocatorPane is used is that you can get very

> smooth snapping to a grid just by including that in the range
> specification. Below,  it's the third list in {{-2, -2}, {2, 2}, {.25,

> ..25}}.
>
> Only two small problems:
>
> 1) When first created, the points don't get snapped to the grid.
>
> 2) If the locators are made too small,  offsetting the text labels
> nudges them away from the correct positions.
>
> http://home.comcast.net/~cy56/Mma/CustomLocators.nb
> http://home.comcast.net/~cy56/Mma/CustomLocatorsPic1.png
> http://home.comcast.net/~cy56/Mma/CustomLocatorsPic2.png
>
> Chris Young
> cy56 at comcast.net
>
> locGraphics[k_, n_, locSize_, opac_, offset_] :=
> Graphics[
>  {Opacity[opac], Hue[0.85 (k - 1)/(n - 1)], Disk[{0, 0}],
>   Opacity[1], Black,
>   Circle[{0, 0}],
>   Line[{{-1.5, 0}, {1.5, 0}}],
>   Line[{{0, -1.5}, {0, 1.5}}],
>   Text[k, {0, 0}, offset]},
>  ImageSize -> locSize
>  ]
>
> Manipulate[
> DynamicModule[
>  {P, n},
>
>  P = {{0, 0}, {1, 1}};
>
>  Dynamic @
>   LocatorPane[
>    Dynamic @ P,
>
>    Dynamic @
>     Show[
>      Graphics[{Thick, Line[P]}],
>      Axes -> True,
>      PlotRange -> 2,
>      GridLines -> {Range[-2, 2, 0.25], Range[-2, 2, 0.25]},
>      GridLinesStyle -> LightGray
>      ],
>    {{-2, -2}, {2, 2}, {.25, .25}},
>
>    LocatorAutoCreate -> True,
>    Appearance -> (
>      n = Length[P];
>      Table[locGraphics[k, n, locSize, opac, offset], {k, 1, n}]
>      )
>    ]
>  ],
> {{locSize, 15}, 5, 80, 1},
> {{opac, 0.75}, 0, 1},
> {{offset, {0, 0}}, {-2, -2}, {2, 2}, {0.25, 0.25}}
> ]
>
>




  • Prev by Date: Re: Plotting in nested Manipulates
  • Next by Date: Re: Compile function and AppendTo for lists (vrs. 8.0.4)
  • Previous by thread: Re: Automatically colred and indexed custom locators
  • Next by thread: Re: Automatically colred and indexed custom locators