#7889: revolution plot
------------------------+---------------------------------------------------
   Reporter:  olazo     |       Owner:  olazo          
       Type:  defect    |      Status:  new            
   Priority:  minor     |   Milestone:                 
  Component:  graphics  |    Keywords:  revolution,plot
Work_issues:            |      Author:                 
   Upstream:  N/A       |    Reviewer:                 
     Merged:            |  
------------------------+---------------------------------------------------
 As a continuation of the recent cloning of ploting methods found in
 mathematica. I've started a clone of Mathematica's
 [http://reference.wolfram.com/mathematica/ref/RevolutionPlot3D.html
 RevolutionPlot3D].

 My version, however, can specify the axis of rotation of the curve, given
 as a line paralel to the z axis, located in the point of coordinates
 (x;y). And also, the posibility to display the revolved curve.

 The code so far is:
 {{{
 def
 revolution_plot(cur,trange,phirange=None,axis=(0,0),showcurve=False,**kwds):
    def findvar(expr):
        try:
            vart=cur.args()[0]
        except:
            vart=var('t')
        return vart

    if phirange==None:#this if-else provides a phirange
        phi=var('phi')
        phirange=(phi,0,2*pi)
    else:
        phi=phirange[0]
        phirange=(phi,phirange[1],phirange[2])

    if str(type(cur)) == "<type 'tuple'>":#this if-else provides a vector v
 to be ploted
        vart=findvar(cur[0])
        R=sqrt((cur[0]-axis[0])^2+axis[1]^2)
        v=(R*cos(phi)+axis[0],R*sin(phi)+axis[1],cur[1])
 
curveplot=parametric_plot3d((cur[0],0,cur[1]),trange,thickness=2,rgbcolor=(1,0,0))
    elif str(type(cur))== "<type 'list'>":
        vart=findvar(cur[0])
        R=sqrt((cur[0]-axis[0])^2+axis[1]^2)
        v=(R*cos(phi)+axis[0],R*sin(phi)+axis[1],cur[1])
 
curveplot=parametric_plot3d((cur[0],0,cur[1]),trange,thickness=2,rgbcolor=(1,0,0))
    else:
        vart=findvar(cur)
        R=sqrt((vart-axis[0])^2+(axis[1])^2)
        v=(R*cos(phi)+axis[0],R*sin(phi)+axis[1],cur)
 curveplot=parametric_plot3d((vart,0,cur),trange,thickness=2,rgbcolor=(1,0,0))

    if showcurve:
        return parametric_plot3d(v,trange,phirange,**kwds)+curveplot
    return parametric_plot3d(v,trange,phirange,**kwds)
 }}}

 Examples of it are available in [http://www.sagenb.org/home/pub/1342/ this
 worksheet]

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/7889>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB
-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.


Reply via email to