Back to main page
Back to draw contents

Parametric functions

This section shows how to draw parametric curves and surfaces with the draw package.


Parametric and explicit functions.

draw2d(color = ReD,   /* case insensitive */
          explicit(exp(x),x,-1,3),
       color = "#0000Ff", /* blue, in doubled quoted hexadecimal */
       key   = "This is the parametric one!!",
          parametric(2*cos(rrr),rrr^2,rrr,0,2*%pi))$

The Möbius band.

draw3d(xu_grid      = 50,
       yv_grid      = 15,
       surface_hide = true,
       terminal     = eps,
         parametric_surface(cos(a)*(3+b*cos(a/2)),
                            sin(a)*(3+b*cos(a/2)),
                            b*sin(a/2), a,-%pi,%pi,b,-1,1) )$

Sea shell.

draw3d(title          = "Sea shell",
       pic_width      = 300,
       pic_height     = 600,
       terminal       = png,
       xu_grid        = 100,
       yv_grid        = 25,
       rot_vertical   = 100,
       rot_horizontal = 20,
       surface_hide   = true,
       color          = blue,
         parametric_surface(0.5*u*cos(u)*(cos(v)+1),
                            0.5*u*sin(u)*(cos(v)+1),
                            u*sin(v) - ((u+3)/8*%pi)^2 - 20,
                            u, 0, 13*%pi, v, -%pi, %pi) )$

The torus and the sphere.

draw3d(surface_hide = true,
       pic_height   = 400,
       pic_width    = 400,
       terminal     = png,
       title        = "Two parametric surfaces",
       color = "dark-khaki",
         parametric_surface((1-0.2*cos(v))*cos(u),
                            (1-0.2*cos(v))*sin(u),
                             0.2*sin(v), u,0,2*%pi,v,0,2*%pi),
       color = "midnight-blue",
         parametric_surface(cos(u)*cos(v),
                            cos(u)*sin(v),
                            1+sin(u), u,-2*%pi,2*%pi,v,0,2*%pi) )$

An enhanced torus.

draw3d(palette    = [7,-15,3],
       enhanced3d = (1-0.2*cos(v))*sin(u),
       parametric_surface(
          (1-0.2*cos(v))*cos(u),
          (1-0.2*cos(v))*sin(u),
          0.2*sin(v),
          u, 0, 2*%pi, v, 0, 2*%pi)) $

Interlocking enhanced tori.

draw3d(enhanced3d = sin(u)+cos(v),
       terminal   = eps_color,
       palette    = [8,4,3],
       eps_height = 15,
       eps_width  = 15,
       parametric_surface(cos(u)+.5*cos(u)*cos(v),
                          sin(u)+.5*sin(u)*cos(v),
                          .5*sin(v),
                          u, -%pi, %pi,
                          v, -%pi, %pi),
       parametric_surface(1+cos(u)+.5*cos(u)*cos(v),
                          .5*sin(v),
                          sin(u)+.5*sin(u)*cos(v),
                          u, -%pi, %pi,
                          v, -%pi, %pi)) $

Archimedes would like this one. A cylinder circumscribed on a sphere.

draw3d(terminal       = eps_color,
       eps_width      = 8,
       eps_height     = 8,
       surface_hide   = true,
       xtics          = none,
       ytics          = none,
       ztics          = none,
       axis_3d        = false,
       rot_vertical   = 48,
       rot_horizontal = 22,
       color  = blue,
       parametric_surface(cos(a)*cos(b),
                          cos(b)*sin(a),
                          sin(b), a,0,2*%pi,b,-%pi/2,%pi/2),
       color          = cyan,
       parametric_surface(1.01*cos(a),1.01*sin(a),z,a,0,3/2*%pi,z,-1,1),
       xu_grid        = 25,
       yv_grid        = 5,
       parametric_surface(1.01*r*cos(a),1.01*r*sin(a),1,a,0,3/2*%pi,r,0,1),
       parametric_surface(1.01*r*cos(a),1.01*r*sin(a),-1,a,0,3/2*%pi,r,0,1)  );

Parametric 3D curves can be rendered with a colored 4th dimension. This feature is a contribution by Joan Pau Beltran. It will be present in Maxima 5.19, or you can download the latest version from cvs.

draw3d(
   terminal   = wxt,
   color      = blue,
   nticks     = 60,
   line_width = 3,
   enhanced3d = (u-1)^2,
   parametric(cos(5*u)^2,sin(7*u),u-2,u,0,2)) $

Back to main page
Back to draw contents


by Mario Rodríguez Riotorto