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[]]
Answer
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]
}]
]]
Comments
Post a Comment