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?
(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]
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]
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP