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}}
> ]
>
>
- References:
- Automatically colred and indexed custom locators
- From: Chris Young <cy56@comcast.net>
- Automatically colred and indexed custom locators