Re: Re: Question about Dynamic-ly restricting Locator position
- To: mathgroup at smc.vnet.net
- Subject: [mg94613] Re: [mg94581] Re: [mg94556] Question about Dynamic-ly restricting Locator position
- From: "David Park" <djmpark at comcast.net>
- Date: Wed, 17 Dec 2008 06:36:14 -0500 (EST)
- References: <11470788.1229426303043.JavaMail.root@m02>
For an outlined red point that simply stops at the edge of the region and doesn't jump: Needs["Presentations`Master`"] Module[ {polarpt = ComplexPolar[.5, 0], pt, calcAll}, calcAll[pp_] := pt = ToCoordinates@PolarToComplex[pp]; calcAll[polarpt]; Draw2D[ {Circle[], Circle[{0, 0}, .3], Locator[ Dynamic[pt, (polarpt = ComplexToPolar@ToComplex[#]; polarpt = MapAt[Clip[#, {.3, 1.}] &, polarpt, 1]; calcAll[polarpt]) &], CirclePointLocator[3, Red]]}, PlotRange -> 2, ContentSelectable -> False, ImageSize -> 300] ] David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ From: John Fultz [mailto:jfultz at wolfram.com] On Tue, 16 Dec 2008 02:34:42 -0500 (EST), vasil michev wrote: > How do I implement this > > Graphics[{Circle[], Circle[{0, 0}, .3], > Locator[Dynamic[ > pt, (pt = If[Norm[#] > .3 && Norm[#] < 1, #, {1, 0}]) &]]}, > PlotRange -> 2] > > into Manipulate? Everything i tried either crashes Mathematica or > gives no result, any help will be greatly appretiated. Here's a quick example. Manipulate[If[Norm[pt] <= .3 || Norm[pt] >= 1, pt = {1, 0}]; Graphics[{Circle[], Circle[{0, 0}, .3]}, PlotRange -> 2, PlotLabel -> pt], {{pt, {1, 0}}, Locator}] Sincerely, John Fultz jfultz at wolfram.com User Interface Group Wolfram Research, Inc.