require "std"; c := widget Slider(0,2), init<-1; a := widget Slider(0,2), init<-0.5; b := widget Slider(0,2), init<-2; d :=R: sqrt(b*b + c*c); p := widget Slider(0,5), init<-2; A:=[0,0,r1]; B:=[c,0,r2]; C:=[a,b,r3]; r1 := widget Slider(-1,2), init<-1.5; r2 := widget Slider(-1,2), init<-0.4; r3 := widget Slider(-1,2), init<-0.6; f1 := R^2 -> R^3: [u,v] -> [r1*cos(u)*cos(v),r1*sin(u)*cos(v), r1* sin(v)]; f2 := R^2 -> R^3: [u,v] -> [r2*cos(u)*cos(v)+c,r2*sin(u)*cos(v), r2* sin(v)]; f3 := R^2 -> R^3: [u,v] -> [r3*cos(u)*cos(v)+a,r3*sin(u)*cos(v)+b, r3* sin(v)]; g1 := R -> R^3: u -> [r1*cos(u),r1*sin(u), 0]; g2 := R -> R^3: u -> [r2*cos(u)+c,r2*sin(u), 0]; g3 := R -> R^3: u -> [r3*cos(u)+a,r3*sin(u)+b, 0]; h1:= R -> R^3: t -> t[0,0,0] + (1-t)[c,0,0]; h2:= R -> R^3: t -> t[c,0,0] + (1-t)[a,b,0]; h3:= R -> R^3: t -> t[a,b,0] + (1-t)[0,0,0]; j1:= R^2 -> R^3: [t,u] -> t[0,0,r1*u] + (1-t)[c,0,r2*u]; j2:= R^2 -> R^3: [t,u] -> t[c,0,r2*u] + (1-t)[a,b,r3*u]; j3:= R^2 -> R^3: [t,u] -> t[a,b,r3*u] + (1-t)[0,0,r1*u]; k1:= R^2 -> R^3: [t,u] -> t*r2/(r2 -r1)*[0,0,r1*u] + (1-t*r2/(r2 -r1))*[c,0,r2*u]; k2:= R^2 -> R^3: [t,u] -> t*r3/(r3 -r2)*[c,0,r2*u] + (1-t*r3/(r3 -r2))*[a,b,r3*u]; k3:= R^2 -> R^3: [t,u] -> t*r1/(r1 -r3)*[a,b,r3*u] + (1-t*r1/(r1 -r3))*[0,0,r1*u]; m:= R^2 -> R^3:[t,u] -> [t,u,-0.01]; U:=Patch((0, 2*pi, 25),(-pi/2, pi/2, 13)); U1:=Patch((0,1,12),(0,1,12)); U2:=Patch((-p,p,2),(-p,p,2)); V:=interval(0, 2*pi,25); W:=interval(0,1,2); Triangle123:= R^?^3->{R^?}:[A,B,C]->triangle([A, B, C], 2); /*Checkboxes for various options of turning things on or off*/ showspheres :=widget CheckBox, init <- True; showcircles :=widget CheckBox, init <- False; showsegments :=widget CheckBox, init <- False; showboards :=widget CheckBox, init <- False; showextensions :=widget CheckBox, init <- True; showtriangle:=widget CheckBox, init <- False; showplane:=widget CheckBox, init <- False; myView := widget Show({}); widget Color(f1(U) if showspheres else {}, "red"), parent<-`myView; widget Color(f2(U) if showspheres else {}, "yellow"), parent<-`myView; widget Color(f3(U) if showspheres else {}, "blue"), parent<-`myView; widget Color(g1(V) if showcircles else {}, "red"), parent<-`myView; widget Color(g2(V) if showcircles else {}, "yellow"), parent<-`myView; widget Color(g3(V) if showcircles else {}, "blue"), parent<-`myView; widget Color(h1(W) if showsegments else {}, "orange"), parent<-`myView; widget Color(h2(W) if showsegments else {}, "green"), parent<-`myView; widget Color(h3(W) if showsegments else {}, "purple"), parent<-`myView; widget Color(j1(U1) if showboards else {}, "orange"), parent<-`myView; widget Color(j2(U1) if showboards else {}, "green"), parent<-`myView; widget Color(j3(U1) if showboards else {}, "purple"), parent<-`myView; widget Color(k1(U1) if showextensions else {}, "orange"), parent<-`myView; widget Color(k2(U1) if showextensions else {}, "green"), parent<-`myView; widget Color(k3(U1) if showextensions else {}, "purple"), parent<-`myView; widget Color(m(U2) if showplane else {}, "white"), parent<-`myView; widget Color(Triangle123[A,B,C] if showtriangle else {}, "white"), parent <-`myView;