MAMBO logo MAMBO & the MAMBO Toolbox MAMBO logo

Sample project - Cone

To illustrate rotations about axes other than those parallel to basis vectors.

This Mambo project contains a non-stationary conical arrangement of cylindrical rods. The non-stationary arrangement of rods may be reoriented relative to the world observer by imposing an arbitrary rotation.

l: length of any of the cylinders.

theta, phi, and psi: 3-1-3 sequence of Euler angles describing the orientation of the conical arrangement relative to the world reference triad.

Replace the cylinders by thin rectangular plates and experiment with their arrangement to generate conical surfaces with noncircular cross sections.

cone.zip (zip file, 9 kb, December 30, 2012)
This zip archive contains MAMBO and the MAMBO toolbox source files to visualize the MAMBO project and regenerate visualization files using maple 16, mupad 5.6.0 (matlab R2011a), and mathematica 8.0 versions of the code found below.


Click here to expand/contract!
>Restart():

Click here to expand/contract!
>N:=20:
>DeclareObservers(W,Cone):
>DeclarePoints(W,Cone,seq(cat(R,k),k=1..N)):
>DeclareTriads(w,cone,seq(cat(r,k),k=1..N)):
>DefineObservers([W,W,w],[Cone,Cone,cone]):
>DefineNeighbors([W,Cone]):
>DefinePoints([W,Cone,NullVector()],seq([Cone,cat(R,k),MakeTranslations(cat(r,k),0,0,l/2)],k=1..N)):
>DefineTriads([w,cone,[theta,3],[phi,1],[psi,3]]):
>v:=MakeTranslations(cone,sqrt(3),1,0):
>u:=MakeTranslations(cone,1,sqrt(3),0):
>r1_3:=(1/VectorLength(u)) &** u:
>r1_1:=(1/VectorLength(r1_3 &xx MakeTranslations(cone,1))) &** (r1_3 &xx MakeTranslations(cone,1)):
>r1_2:=r1_3 &xx r1_1:
>DefineTriads([cone,r1,simplify(Matrix(3,3,(i,j)->MakeTranslations(cone,i) &oo cat(r1_,j)))]):
>DefineTriads(seq([r1,cat(r,k),2*Pi/N*(k-1),seq(v &oo MakeTranslations(r1,l),l=1..3)],k=2..N)):

Click here to expand/contract!
>DefineObjects(seq([Cone,'Cylinder',point=cat(R,k),orient=cat(r,k),length=l,radius=l/30,color=yellow],k=1..N)):

Click here to expand/contract!
>GeometryOutput(main=W,states=[theta=1,phi=.8,psi=1],parameters=[Pi=3.1416,l=1],checktree,checkargs,filename="cone.geo");
>MotionOutput(ode={thetat=u1,phit=u2,psit=u3},states=[theta=1,phi=.8,psi=1],parameters=[Pi=3.1416,l=1],insignals=[u1=cos(2*Pi/10*t),u2=2*sin(Pi/10*t),u3=-cos(Pi/10*t)],checkargs,checksings,filename="cone.dyn");

Sample projects