Manipulate with variable number of controls
- To: mathgroup at smc.vnet.net
- Subject: [mg107768] Manipulate with variable number of controls
- From: "Dominic" <miliotodc at rtconline.com>
- Date: Thu, 25 Feb 2010 17:35:52 -0500 (EST)
Hi,
Can I set up a Manipulate with a variable number of controls? The code
below draws 4 circles and line segments between them at the angles given
by the slider values. As you can see, I had to hard-code the function
for the lines, and the number of controls given by the size of rtable.
Is is possible to dynamically construct this Manipulate based on the
size of rtable? I noticed if I try to build a control outside of
Manipulate such as mycontrol1={"t1",0,2 PI}, and then use mycontrol1
inside of Manipulate, it doesn't work. Also, I use
LocalizeVariales->False since I then go on to use the values of the
angles (t1,t2, ...) in the program.
Can anybody help me to get this working for arbitrary-size rtable with
not more than five entries, or is Manipulate not capable of dynamically
allocating a variable number of controls?
Thanks guys,
Dominic
rtable = {0, 1, 2, 3, 4};
t1 = 0;
t2 = 0;
t3 = 0;
t4 = 0;
myf4[t1_, t2_, t3_, t4_] :=
{Line[{{Re[rtable[[1]]*Exp[I*t1]],
Im[rtable[[1]]*Exp[I*t1]]},
{Re[rtable[[2]]*Exp[I*t1]],
Im[rtable[[2]]*Exp[I*t1]]}}],
Line[{{Re[rtable[[2]]*Exp[I*t2]],
Im[rtable[[2]]*Exp[I*t2]]},
{Re[rtable[[3]]*Exp[I*t2]],
Im[rtable[[3]]*Exp[I*t2]]}}],
Line[{{Re[rtable[[3]]*Exp[I*t3]],
Im[rtable[[3]]*Exp[I*t3]]},
{Re[rtable[[4]]*Exp[I*t3]],
Im[rtable[[4]]*Exp[I*t3]]}}],
Line[{{Re[rtable[[4]]*Exp[I*t4]],
Im[rtable[[4]]*Exp[I*t4]]},
{Re[rtable[[5]]*Exp[I*t4]],
Im[rtable[[5]]*Exp[I*t4]]}}]};
mycircles = Table[Circle[{0, 0},
rtable[[n]]], {n, 2,
Length[rtable]}];
Manipulate[Show[Graphics[
{myf4[t1, t2, t3, t4], mycircles}],
Axes -> True, PlotRange ->
{{-5, 5}, {-5, 5}}], {t1, 0, 2*Pi},
{t2, 0, 2*Pi}, {t3, 0, 2*Pi},
{t4, 0, 2*Pi}, LocalizeVariables ->
False]