Re: locator snap
- To: mathgroup at smc.vnet.net
- Subject: [mg88483] Re: locator snap
- From: "Maarten van der Burgt" <maarten.vanderburgt at icos.be>
- Date: Tue, 6 May 2008 06:42:44 -0400 (EDT)
Dear all, Thank you very much for your help with the locator snap. Your various answers gave me a bit more insight in what is possible with dynamic and dynamic module. I also found a solution with manipulate, which not only gives a 'snapped result' as the solution below, but which also snaps the locator in the graphics: Manipulate[Column@{Graphics [{Disk[Round[p,0.1],0.05]},Axes->True,PlotRange->1],Round[p,0.1]}, {{p,{0,0}},Locator,Appearance->" "}] I do not show the locator, but replace it with a graphics object at the rounded position of the locator. Thanks for your replies. Maarten PS: the solution below is not jerking on my pc (6.0.2, windows xp) |--------+-----------------------> | | "Kevin J. | | | McCann" | | | <Kevin.McCann| | | @umbc.edu> | | | | | | 30/04/2008 | | | 13:03 | | | | |--------+-----------------------> >--------------------------------------------------------------------------------------------------------------------------------------------------| | | | To: mathgroup at smc.vnet.net | | cc: | | Subject: [mg88291] Re: locator snap | >--------------------------------------------------------------------------------------------------------------------------------------------------| Hey Szabolcs, This works fine, but I notice that the graph jerks around a lot when you move the locator. I assume that Mathematica is redrawing everything on each move or ...? Anyway, does anyone know why? Kevin Szabolcs Horv=E1t wrote: > Szabolcs Horv=E1t wrote: >> Maarten van der Burgt wrote: >>> Dear all, >>> >>> In the example below the locator can be moved to any position in the >>> graphic. >>> Can the locator be made to snap to multiples of say 0.1? >>> >>> Manipulate[Column@{Graphics[{}, Axes -> True], p}, {{p, {0, 0}}, >>> Locator}] >>> >> Hi Maarten, >> >> I am not aware of any way to do this directly with Manipulate. (Of >> course this does not mean that there doesn't exist a way!) >> >> Here is an example of doing it directly with Dynamic: >> >> Graphics[ >> Locator[Dynamic[{x, y}, ({x, y} = Round[#, 0.1]) &]], >> PlotRange -> 1, Frame -> True, >> GridLines -> {#, #} & @ >> Table[{x, If[Mod[x, 1/2] == 0, Black, Gray]}, {x, -1, 1, 1/10}] >> ] >> > > Sorry, I forgot to mention that x and y must be initialized before this= > will work: > > {x, y} = {0, 0} > > Also, the x in the Table is an unfortunate choice for a local variable > name---it has nothing to do with the x in the Dynamic. > -- Kevin J. McCann Research Associate Professor JCET/Physics Physics Building University of Maryland, Baltimore County 1000 Hilltop Circle Baltimore, MD 21250