On Fri, 2006-10-13 at 13:59 -0400, Hubert Fitch wrote: > Hi Everyone! > > I have now been able to use Matplotlib on Window XP platfrom! Thanks > for thiose who helped me to get Enthought Edition installed and > working! > > I have no idea how to do what I have wanted to do for several years. I > will try to describe the plot I need. > I need to be able to include this plot in a Wikki. > > A point on a small circle with radius r0, is spiralling around > (orthogonally) in a larger circle of radius r1, with these two radii > related by r0/r1 = alpha. The smaller circle sweeps around the r1 > radius to create a path, with the point (on r1) locus describing a > torroid coil in the surface of the ring torus. > > This describes the plot when the torus is at-rest, but when the ring > torus is in linear motion, both r0 and r1 change dimensions together, > (keeping the same r0/r1 = alpha ratio), to create an increasing or > decreasing spiralling circular helix, that is a fuction of the mass > energy created by this motion. The point on the r0 circle is "like a > snake chasing its tail?" > > When the torus is at-rest, the toroid path is closed, but in-motion, > the torroid is open and becomes an increasing or decreasing spiral. > This path will collapse back to a larger size if the energy is > decreasing, and shrink to a smaller size if the energy is increasing. > > If the at-rest motion plot can be created ( I know that I can't do > this plot by myself), then an animation of the ring torus figure > moving through space to create a spiral would help in visualizing this > figure. If this animation can slow down or speed up this would be > great..
Hmmm interesting .... It's hard to follow your text description, but I think what you're describing is at least a 3D visualisation, so matplotlib isn't ideal for the task. Can you put this into equations? I'm not clear if your at-rest plot should be a "trajectory" for a point moving round the torus If you're willing to learn a new toolkit, this is a good task for VTK (www.vtk.org). It's included in the enthought python distribution. The problem here is that you almost certainly need to buy the user-guide and/or the VTK text book to learn how to use it. VTK is very powerful, but rather complex to learn. Maybe this is a good task for VPython (http://www.vpython.org/ ). I've never used this myself, but if looks well suited to this kind of dynamic visualisation and is less intimidating than VTK (although it's built on VTK I think). Well below is a script to render a "coil" in 3D. It's too much work for me to figure out the vector/matrix algebra to calculate the trajectory you describe, but hopefully you get the idea: replace my 'trajectory' function with whatever is appropriate for what you want. Maybe this will get you started. HTH Bryan ----------------------------------------------------------------------- """ Draws a coil in 3D. Mouse click to rotate the view. Hit 'u' to start the animation (kill the program to stop it!) """ import vtk import math import time offset = 0.0 #I'm going to use this to 'animate' the figure def trajectory(t): """ returns 3D positions, as a function of one parameter, t """ global offset r1 = 1.0 r0 = 0.2 omega=5.0 z = r1*math.sin(omega*t+offset) y = r1*math.cos(omega*t+offset) x = 0.5*t return (x,y,z) s = vtk.vtkProgrammableSource() def Execute(): """The Execute method to be called by the source object""" #make a range of parameter values tVals = numpy.arange(0,2*math.pi,0.05) #convert these to positions positions = [trajectory(t) for t in tVals] #construct a VTK polydata object: a single poly-line 'cell' dataset = s.GetPolyDataOutput() points = vtk.vtkPoints() cells = vtk.vtkCellArray() cells.InsertNextCell(len(positions)) for p in positions: id = points.InsertNextPoint(*p) cells.InsertCellPoint(id) dataset.SetPoints(points) dataset.SetLines(cells) return dataset s.SetExecuteMethod(Execute) #convert (poly)lines to a tube t = vtk.vtkTubeFilter() t.SetInput(s.GetOutput()) t.SetRadius(0.05) t.SetNumberOfSides(10) #make surface normals, so it renders smooth n = vtk.vtkPolyDataNormals() n.SetInput(t.GetOutput()) #boiler-plate VTK stuff.... m=vtk.vtkPolyDataMapper() m.SetInput(n.GetOutput()) a=vtk.vtkActor() a.SetMapper(m) ren = vtk.vtkRenderer() ren.AddActor(a) renwin = vtk.vtkRenderWindow() renwin.AddRenderer(ren) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renwin) #add a simple animation routine, activated by the 'u' keypress def Animate(obj, evt): global offset while 1: #need to kill the program to quit offset += 0.1 s.Modified() renwin.Render() time.sleep(0.05) iren.AddObserver("UserEvent", Animate) iren.Initialize() iren.Start() > > Can anyone help me to create this plot? > > Thanks for any help! > > Hubert fitch > > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users