TransWikia.com

How to rotate a graph with a locator?

Mathematica Asked by pmzhu on July 29, 2021

Manipulate[
 Graphics[Rotate[Line[{{0, 0}, p}], [Theta], {0, 0}], 
  PlotRange -> 2], {{p, {1, 1}}, Locator}, {[Theta], 0, 2 [Pi]}]

I want to rotate a graph including a locator. The line rotated as expected, but the locator didn’t rotate with the line. How can I do to rotate the whole graph?

enter image description here

2 Answers

(1) You can use Locator as a graphics primitive and rotate all the graphics primitives, and
(2) use Experimental`AngularSlider to control the angle:

Manipulate[Graphics[Rotate[{Line[{{0, 0}, p}], Locator[Dynamic[p]]}, θ, {0, 0}], 
   PlotRange -> 2, ImageSize -> Small],
 {{p, {1, 0}}, None},
 {{θ, 0, ""}, 0, 2 π, Labeled[Experimental`AngularSlider[#, {0, 2 Pi}, 
     Experimental`BoundaryAction -> None], Row[{"θ = ", #}], Top] &}, 
 Deployed -> True]

enter image description here

To prevent the locator from going out of plot area after rotation, we can use the second argument of Dynamic to restrict the locator to stay within a disk of radius 2:

Manipulate[Graphics[Rotate[{Line[{{0, 0}, p}], 
    AbsolutePointSize[10], Red, Point[p], 
    Locator[Dynamic[p, (p = If[Norm[#] < 2, #, 2 Normalize[#]];) &], None]}, 
    θ, {0, 0}], PlotRange -> 2,  ImageSize -> Small],
 {{p, {1, 0}}, None}, 
 {{θ, 0, ""}, 0, 2 π, Labeled[Experimental`AngularSlider[#, {0, 2 Pi}, 
     Experimental`BoundaryAction -> None], Row[{"θ = ", #}], Top] &}, 
 Deployed -> True]

enter image description here

Update: If you want the two controls linked so that the angle is updated as the locator moves, change Locator[...] to

Locator[Dynamic[p, (p = If[Norm[#] < 2, #, 2 Normalize[#]]; θ = ArcTan @@ p) &], None]

Correct answer by kglr on July 29, 2021

Manipulate[
 Rotate[Graphics[Plot[x^2, {x, 0, 5}]], r = ArcTan[r1[[1]]/r1[[2]]]],
 {{r1, {1, 1}}, Locator}]

Answered by David G. Stork on July 29, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP