9
$\begingroup$

I use the code below to visualise the connection between a sine curve and the unit circle, but would like to make the slider wider, so it has at least almost the same with as the image. I have tried to replace ControlType->Slider[] with ControlType -> Slider[ImageSize->800], but this seems to have no effect at all och the resulting graphics. The question is thus how to set the width of the slider inside Manipulate?

Manipulate[
 With[{ar = 1/(2*Pi), o = v - Cos[v]}, 
  Show[Plot[Sin[x], {x, -6*Pi, 6*Pi}, 
    PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, PlotStyle -> {Black}, 
    AxesLabel -> {"v", Sin["v"]}, AspectRatio -> ar],
   ListLinePlot[{{o + Cos[v], 0}, {o + Cos[v], Sin[v]}}, 
    PlotStyle -> {Thick, Black}, AspectRatio -> ar],
   ListLinePlot[{{o + Cos[v], Sin[v]}, {o, 0}}, 
    PlotStyle -> {Dashed, Black}, AspectRatio -> ar],
   Graphics[{AbsolutePointSize[8], Point[{o, 0}]}, AspectRatio -> ar],
   Plot[{-Sqrt[1 - (x - o)^2], Sqrt[1 - (x - o)^2]}, {x, o - 1, 
     o + 1}, PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, 
    PlotStyle -> {{Thick, Orange}, {Thick, Orange}}, 
    AspectRatio -> ar], ImageSize -> 800]], {v, -3/2*Pi, 3/2*Pi}, 
 ControlType -> Slider[]]

The resulting graphics

$\endgroup$
1
  • 2
    $\begingroup$ you mean like that: {v, -3/2*Pi, 3/2*Pi, ControlType -> Slider, ImageSize -> 800}? $\endgroup$ May 2, 2013 at 9:59

2 Answers 2

11
$\begingroup$

You have to study the documentation carefully, but I agree that help-pages like the one of Manipulate are very densely packed with information. In the Details and Options section you find how to set options for controls:

{{u,...},...,opts}    control with particular options

The non-obvious part is, that you have to set the ControlType as well to make this work. Therefore, you can use

{v, -3/2*Pi, 3/2*Pi, ControlType -> Slider, ImageSize -> 800}

to achieve the wanted behavior. Another way is to replace Manipulate by a full DynamicModule which is a bit more code but gives you some more flexibility

DynamicModule[{v = -3/2 Pi, o},
 o = v - Cos[v];
 Panel@
  With[{ar = 1/(2*Pi)},
   Column[{
     Slider[Dynamic[v, (v = #; o = v - Cos[v]; &)], {-2 Pi, 2 Pi}, 
      ImageSize -> 800],
     Dynamic@
      Show[Plot[Sin[x], {x, -6*Pi, 6*Pi}, 
        PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, PlotStyle -> {Black}, 
        AxesLabel -> {"v", Sin["v"]}, AspectRatio -> ar], 
       ListLinePlot[{{o + Cos[v], 0}, {o + Cos[v], Sin[v]}}, 
        PlotStyle -> {Thick, Black}, AspectRatio -> ar],
       ListLinePlot[{{o + Cos[v], Sin[v]}, {o, 0}}, 
        PlotStyle -> {Dashed, Black}, AspectRatio -> ar], 
       Graphics[{AbsolutePointSize[8], Point[{o, 0}]}, 
        AspectRatio -> ar], 
       Plot[{-Sqrt[1 - (x - o)^2], Sqrt[1 - (x - o)^2]}, {x, o - 1, 
         o + 1}, PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, 
        PlotStyle -> {{Thick, Orange}, {Thick, Orange}}, 
        AspectRatio -> ar], ImageSize -> 800, Background -> White]
     }]
   ]]

enter image description here

$\endgroup$
0
4
$\begingroup$

This will work. The only change is that I removed the option ControlType and added a "slider function" at the end of the control for v. Note that Pinguin Dirks suggestion in the comments also works, is more convenient and he beat me to it :). Still I guess this code shows how you can have even more control over your slider.

Manipulate[
 With[{ar = 1/(2*Pi), o = v - Cos[v]}, 
  Show[Plot[Sin[x], {x, -6*Pi, 6*Pi}, 
    PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, PlotStyle -> {Black}, 
    AxesLabel -> {"v", Sin["v"]}, AspectRatio -> ar], 
   ListLinePlot[{{o + Cos[v], 0}, {o + Cos[v], Sin[v]}}, 
    PlotStyle -> {Thick, Black}, AspectRatio -> ar], 
   ListLinePlot[{{o + Cos[v], Sin[v]}, {o, 0}}, 
    PlotStyle -> {Dashed, Black}, AspectRatio -> ar], 
   Graphics[{AbsolutePointSize[8], Point[{o, 0}]}, AspectRatio -> ar],
    Plot[{-Sqrt[1 - (x - o)^2], Sqrt[1 - (x - o)^2]}, {x, o - 1, 
     o + 1}, PlotRange -> {{-2*Pi, 2*Pi}, {-1, 1}}, 
    PlotStyle -> {{Thick, Orange}, {Thick, Orange}}, 
    AspectRatio -> ar], ImageSize -> 800]], {v, -3/2*Pi, 3/2*Pi, 
  Slider[Dynamic[v], {-3/2*Pi, 3/2*Pi}, ImageSize -> 800] &}]
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.