(*Date Sun Aug 23 04:49:00 GMT-0600 1998 *) (*:Title: SURFS.m *) (*:Author: Alfred Gray *) (* Copyright 1994-1998 by Alfred Gray *) (*:Package Version: 1.0 *) (*:Mathematica Versions: 2.2, 3.0 *) (*:Summary: This package consists of definitions of parametrizations of surfaces. *) (*:Keywords: agnesirev, apple, astell, astroidmincurve, bohdom, bour, bourmincurve, bourpolar, boy, cardioidmincurve, catalan, catalandef, catalanmincurve, catenoid, catenoidasym, catenoidiso, catenoidmincurve, cayleysexticmincurve, circleinvolutemin, circleinvolutemincurve, circularcone, circularcylinder, circularmembrane, circularmembranemovie, circularmembraneplot, cissoidmincurve, clothoidmin, clothoidmincurve, cnccosurfrev, cnccotcheb, cnchyprofilemincurve, cnchysurfrev, cnchytcheb, cossurface, cossurfaceimplicit, costa, costamincurve, cpcprofilemincurve, cpcsurfrev, crosscap, crosscapimplicit, deltoidinvolutemin, deltoidinvolutemincurve, deltoidmin, deltoidmincurve, dini, dinitcheb, earth, eighteight, eightsurface, ellhypcyclide, ellipsemin, ellipsemincurve, ellipsoid, ellipsoidimplicit, ellipticalhyperboloidminus, ellipticalhyperboloidplus, ellipticcoor, ellipticparaboloid, ellipticparaboloidimplicit, enneper, ennepercatenoidmincurve, ennepercatenoidpolar, ennepermincurve, enneperpolar, epicycloidmincurve, equihom1implicit, equihom2implicit, equihom3implicit, equihom4implicit, equihom5implicit, equihom6implicit, exptwist, exptwistasym, flattorus, funnel, funnelasym, gencube, genhypparab, genoctahedron, goursatimplicit, handkerchief, heart, helicoid, helicoidprin, heltocat, henneberg, hennebergmincurve, hyperbolamincurve, hyperbolicparaboloid, hyperbolicparaboloidimplicit, hyperboloid, hyperboloidimplicit, hypocycloidinvolutemin, hypocycloidinvolutemincurve, hypocycloidmincurve, hy2sheet, hy2sheetimplicit, invertedcircularcone, invertedcircularcylinder, invertedtorus, jorgemeeksmincurve, jorgemeeksmincurveprime, jorgemeekspolar, kidney, kleinbottle, kleinbottlebis, kleinbottlewri, klein4, kuen, kuentcheb, kazoolaimplicit, kummerimplicit, lemniscatemin, lemniscatemincurve, logmincurve, logminpolar, logspiralmincurve, menn, mercatorellipsoid, mercatorsphere, mincurvs, moebcirc, moebiusstrip, monkeysaddle, monkeysaddlepolar, nephroidmincurve, nielsenspiralmincurve, nodoidnds, parabolamin, parabolamincurve, paraboliccoor, paraboliccyclide, paraboloid, pear, pearbis, perturbedms, perturbedmspolar, pillow, plane, planepolar, planetocat, plucker, pluckerpolar, pseudocrosscap, pseudosphere, pseudospherebis, pseudospheretcheb, rconoid, richmond, richmondmincurve, richmondpolar, roman, rosemin, rosemincurve, scherk, scherkimplicit, scherktowermincurveprime, scherk5, scherk5implicit, scmincurve, shoe, shoeasym, sievert, sinovaloid, sinsurface, sinsurfaceimplicit, snail, sphere, spherehelix, sphereimplicit, squaremembrane, squaremembranemovie, squaremembraneplot, stereographicellipsoid, stereographicsphere, stereographicspherepolar, swallowtail, tetrahedral, thomsen, torus, torusasym, torusbis, torusimplicit, tractrixmincurve, twiflat, twisphere, twocuspsimplicit, veronese, wallis, whitneyumbrella, wrinkles *) BeginPackage["SURFS`","CURVES`","CSPROGS`","PLTPROGS`","NumericalMath`BesselZeros`"] surfs:=Print[Select[Names["SURFS`*"],#!="surfs"&]] (* Parametrically Defined Surfaces *) agnesirev::usage="{u,v}->agnesirev[a][u,v] is a parametrization of the surface of revolution formed from a rotated witch of Agnesi. To plot try agnesirev[1][0,2Pi,-1,1]." apple::usage="{u,v}->apple[u,v] is a parametrization of the surface of revolution that resembles an apple. To plot try apple[0,3Pi/2,-Pi,Pi]." astell::usage="{u,v}->astell[a,b,c][u,v] is a parametrization of an astroidial ellipsoid with axes of lengths a, b and c. To plot try astell[1,1,1][0,2Pi,-Pi/2,Pi/2]." bohdom::usage="{u,v}->bohdom[a,b,c][u,v] is a parametrization of a Bohemian dome. It is formed by moving an ellipse along a circle in a perpendicular plane so that the ellipse remains parallel to a plane. To plot try bohdom[4,4,4][0,2Pi,-Pi,Pi]." bour::usage="{u,v}->bour[u,v] is a parametrization of Bour's minimal surface. To plot try bour[-1,1,-1,1]." bourpolar::usage="{r,theta}->bourpolar[n][t][r,theta] is the polar parametrization of a 1-parameter family of minimal surfaces such that {r,theta}->bourpolar[n][0][r,theta] is Bour's minimal surface of degree n. {r,theta}->bourpolar[m,n][t][r,theta] is the polar parametrization of a 1-parameter family of minimal surfaces such that {r,theta}->bourpolar[m,n][0][r,theta] is Bour's minimal surface of degree {m,n}. To plot try bourpolar[2,1][0][0,1.7,-Pi,Pi]." boy::usage="{u,v}->boy[a,b,c][u,v] is a parametrization of Boy's surface. To plot try boy[4,4,1][-Pi/2,Pi/2,-Pi/2,Pi/2]." catalan::usage="{u,v}->catalan[a][u,v] is a parametrization of Catalan's minimal surface. To plot try catalan[1][-2Pi,2Pi,-Pi/2,Pi/2]." catalandef::usage="{u,v}->catalandef[a][t][u,v] is a 1-parameter family of minimal surfaces connecting Catalan's minimal surface to its conjugate. To plot try catalandef[1][Pi/4][-2Pi,2Pi,-Pi/2,Pi/2]." catenoid::usage="{u,v}->catenoid[a][u,v] is the minimal surface of revolution generated by t->catenary[a][t]. To plot try catenoid[1][0,3Pi/2,-1.5,1.5]." catenoidasym::usage="{p,q}->catenoidasym[a][p,q] is a parametrization of a catenoid by asymptotic curves. To plot try catenoidasym[1][-Pi,Pi,-Pi,Pi]." catenoidiso::usage="{u,v}->catenoidiso[a][u,v] is an isothermal parametrization of a catenoid. To plot try catenoidiso[1][-Pi,Pi,-Pi,Pi]." circleinvolutemin::usage="{u,v}->circleinvolutemin[1,a][t][u,v] is a 1-parameter family of minimal surfaces such that {u,v}->circleinvolutemin[1,a][0][u,v] is a minimal surface containing the first involute of a circle as a geodesic. To plot try circleinvolutemin[1,1][1][0,Pi,-1,1]." circularcone::usage="{u,v}->circularcone[a,b][u,v] is a parametrization of a circular cone of radius a and slope b/a. To plot try circularcone[1,0.5][-Pi,Pi,-1,1]." circularcylinder::usage="{u,v}->circularcylinder[a][u,v] is a parametrization of a circular cylinder of radius a. To plot try circularcylinder[1][-Pi,Pi,-4,4]." clothoidmin::usage="{u,v}->clothoidmin[a][t][u,v] is a 1-parameter family of minimal surfaces such that {u,v}->clothoidmin[a][0][u,v] is a minimal surface containing a clothoid as a geodesic. To plot try clothoidmin[1][0][-5,5,-0.3,0.3]." cnccosurfrev::usage="{u,v}->cnccosurfrev[a,b][u,v] is a parametrization of a surface of revolution of constant negative curvature -1/a^2 of conic type. To plot try cnccosurfrev[1,0.83][-Pi,Pi,-0.6,0.6]." cnccotcheb::usage="{u,v}->cnccotcheb[a,b][u,v] is a Tchebyshef parametrization of a constant negative curvature surface of revolution of conic type. To plot try cnccotcheb[1,1.2][-3.5,3.5,-Pi/1.2,Pi/1.2]." cnchysurfrev::usage="{u,v}->cnchysurfrev[a,b][u,v] is a parametrization of a surface of revolution of constant negative curvature -1/a^2 of hyperboloid type. To plot try cnchysurfrev[1,0.83][-Pi,Pi,-0.6,0.6]." cnchytcheb::usage="{u,v}->cnchytcheb[a,b][u,v] is a Tchebyshef parametrization of a constant negative curvature surface of revolution of hyperboloid type. To plot try cnchytcheb[1,0.8][-3.5,3.5,-Pi/0.8,Pi/0.8]." cossurface::usage="{u,v}->cossurface[a][u,v] is the surface {u,v}->a*{Cos[u],Cos[v],Cos[u + v]}. The implicit equation is (z - a*x*y) == a^2*(1 - x^2)*(1 - y^2). To plot try cossurface[1][-Pi,Pi,-Pi,Pi]." costa::usage="{u,v}->costa[u,v] is a parametrization of Costa's minimal surface. To plot try costa[0.001,1.001,0.001,1.001]." cpcsurfrev::usage="{u,v}->cpcsurfrev[a,b][u,v] is a parametrization of a surface of revolution of constant positive curvature 1/a^2. There are 3 cases: football type (a>b), sphere (a=b), barrel type (a{Re,Im}]] bourpolar[m_][t_][r_,theta_]:= {r^(m - 1)*Cos[t - (m - 1)*theta]/(m - 1) - r^(m + 1)*Cos[t - (m + 1)*theta]/(m + 1), r^(m - 1)*Sin[t - (m - 1)*theta]/(m - 1) + r^(m + 1)*Sin[t - (m + 1)*theta]/(m + 1), 2*r^m*Cos[t - m*theta]/m} bourpolar[m_,n_][t_][r_,theta_]:= {r^(m - 1)*Cos[t - (m - 1)*theta]/(m - 1) - r^(m + 2*n - 1)*Cos[t - (m + 2*n - 1)*theta]/(m + 2*n - 1), r^(m - 1)*Sin[t - (m - 1)*theta]/(m - 1) + r^(m + 2*n - 1)*Sin[t - (m + 2*n - 1)*theta]/(m + 2*n - 1), 2*r^(m + n - 1)*Cos[t - (m + n - 1)*theta]/(m + n - 1)} bourpolar[m_,n_][t_:0][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[bourpolar[m,n][t][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt,PlotPoints->{20,40}]; boy[a_,b_,c_][u_,v_]:= {(a/2)*(-Cos[v]^2 + 2*Cos[u]^2*Sin[v]^2 + Cos[v]*Cos[u]*Sin[v]*(-Cos[v]^2 + Cos[u]^2*Sin[v]^2) - Sin[v]^2*Sin[u]^2 + 2*Cos[v]*Sin[v]*Sin[u]* (-Cos[v]^2 + Sin[v]^2*Sin[u]^2) - Sin[v]^4*Sin[4*u]/4), (Sqrt[3]/2)*b*(-Cos[v]^2 + Cos[v]*Cos[u]*Sin[v]*(Cos[v]^2 - Cos[u]^2*Sin[v]^2) + Sin[v]^2*Sin[u]^2 - (Sin[v]^4*Sin[4*u])/4), c*(Cos[v] + Cos[u]*Sin[v] + Sin[u]*Sin[v])* (-4*Sin[v]*(Cos[u] - Sin[u])*(-Cos[v] + Cos[u]*Sin[v])* (Cos[v] - Sin[u]*Sin[v]) + (Cos[v] + Cos[u]*Sin[v] + Sin[u]*Sin[v])^3)} boy[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[boy[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; catalan[a_][u_,v_]:= {a*(u - Sin[u]*Cosh[v]), a*(1 - Cos[u]*Cosh[v]), -4*a*Sin[u/2]*Sinh[v/2]} catalan[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[catalan[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; catalandef[a_][t_][u_,v_]:= {a*Cos[t]*(u - Cosh[v]*Sin[u]) + a*Sin[t]*(v - Cos[u]*Sinh[v]), a*Cos[t]*(1 - Cos[u]*Cosh[v]) + a*Sin[t]*Sin[u]*Sinh[v], 4*a*(1 - Cos[u/2]*Cosh[v/2])*Sin[t] - 4*a*Cos[t]*Sin[u/2]*Sinh[v/2]} catalandef[a_][t_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[catalandef[a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; catenoid[a_][u_,v_]:= {a*Cos[u]*Cosh[v/a], a*Sin[u]*Cosh[v/a],v} catenoid[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[catenoid[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; catenoid[a_,b_,c_][u_,v_]:= {a*Cos[u]*Cosh[v], b*Sin[u]*Cosh[v],c*v} catenoidasym[a_][p_,q_]:= {a*Cos[(p + q)/2]*Cosh[(q - p)/2], a*Sin[(p + q)/2]*Cosh[(q - p)/2], a*(q - p)/2} catenoidasym[a_][pmin_,pmax_,qmin_,qmax_,opt___]:= pplot3d[catenoidasym[a][p,q],{p,pmin,pmax},{q,qmin,qmax}, opt]; catenoidiso[a_][u_,v_]:= {a*Cos[u/a]*Cosh[v/a], a*Sin[u/a]*Cosh[v/a],v} catenoidiso[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[catenoidiso[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; circleinvolutemin[1,a_][t_][u_,v_]:= {a*Cos[t]*(Cos[u]*Cosh[v] + u*Cosh[v]*Sin[u] - v*Cos[u]*Sinh[v]) + a*Sin[t]*(v*Cosh[v]*Sin[u] + u*Cos[u]*Sinh[v] - Sin[u]*Sinh[v]), a*Sin[t]*(-v*Cos[u]*Cosh[v] + Cos[u]*Sinh[v] + u*Sin[u]*Sinh[v]) + a*Cos[t]*(-u*Cos[u]*Cosh[v] + Cosh[v]*Sin[u] - v*Sin[u]*Sinh[v]), -a*u*v*Cos[t] + a*(u^2 - v^2)*Sin[t]/2} circleinvolutemin[1,a_][t_:0][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[circleinvolutemin[1,a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; circularcone[a_,b_][u_,v_]:= {a*v*Cos[u],a*v*Sin[u],b*v} circularcone[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[circularcone[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; circularcylinder[a_][u_,v_]:= {a*Cos[u],a*Sin[u],v} circularcylinder[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[circularcylinder[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; clothoidmin[a_][t_][u_,v_]:= {a*Sqrt[Pi]*Cos[t]*Re[FresnelS[(u + I*v)/Sqrt[Pi]]] + a*Sqrt[Pi]*Im[FresnelS[(u + I*v)/Sqrt[Pi]]]*Sin[t], a*Sqrt[Pi]*Cos[t]*Re[FresnelC[(u + I*v)/Sqrt[Pi]]] + a*Sqrt[Pi]*Im[FresnelC[(u + I*v)/Sqrt[Pi]]]*Sin[t], -(a*v*Cos[t]) + a*u*Sin[t]} clothoidmin[a_][t_:0][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[clothoidmin[a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{60,10}]; cnccosurfrev[a_,b_][u_,v_]:= {b*Cos[u]*Sinh[v/a], b*Sin[u]*Sinh[v/a], -I*Sqrt[a^2 - b^2]*EllipticE[I*v/a, -b^2/(a^2 - b^2)]} cnccosurfrev[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[cnccosurfrev[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; cnccotcheb[a_,b_][u_,v_]:= {(a/b)*JacobiCN[b*u,1/b^2]*Cos[b*v], (a/b)*JacobiCN[b*u,1/b^2]*Sin[b*v], a*(b*u - EllipticE[JacobiAmplitude[b*u,1/b^2],1/b^2])} cnccotcheb[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[cnccotcheb[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{43,25}]; cnccotcheb[a_,b_,c_][u_,v_]:= {(a/b)*JacobiCN[b*u,1/b^2]*Cos[b*v], (a/b)*JacobiCN[b*u,1/b^2]*Sin[b*v], c*(b*u - EllipticE[JacobiAmplitude[b*u,1/b^2],1/b^2])} cnchysurfrev[a_,b_][u_,v_]:= {b*Cos[u]*Cosh[v/a], b*Sin[u]*Cosh[v/a], - I*a*EllipticE[I*v/a,-b^2/a^2]} cnchysurfrev[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[cnchysurfrev[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; cnchytcheb[a_,b_][u_,v_]:= {(a/b)*JacobiDN[u,b^2]*Cos[b*v], (a/b)*JacobiDN[u,b^2]*Sin[b*v], (a/b)*(u - EllipticE[JacobiAmplitude[u,b^2],b^2])} cnchytcheb[a_,b_,c_][u_,v_]:= {(a/b)*JacobiDN[u,b^2]*Cos[b*v], (a/b)*JacobiDN[u,b^2]*Sin[b*v], (c/b)*(u - EllipticE[JacobiAmplitude[u,b^2],b^2])} cnchytcheb[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[cnchytcheb[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; cossurface[a_][u_,v_]:= {a*Cos[u],a*Cos[v],a*Cos[u + v]} cossurface[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[cossurface[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; costa[u_,v_]:= {(1/2)*Re[-WeierstrassZeta[u + I*v,{189.07272,0}] + 3.14159*u + 0.35889 + 0.228473*(WeierstrassZeta[u + I*v - 1/2,{189.07272,0}] - WeierstrassZeta[u + I*v - I/2,{189.07272,0}])], (1/2)*Re[-I*WeierstrassZeta[u + I*v,{189.07272,0}] + 3.14159*v + 0.35889 - 0.228473*(I*WeierstrassZeta[u + I*v - 1/2,{189.07272,0}] - I*WeierstrassZeta[u + I*v - I/2,{189.07272,0}])], 0.626657*Log[Abs[(WeierstrassP[u + I*v,{189.07272,0}] - 6.87519)/ (WeierstrassP[u + I*v,{189.07272,0}] + 6.87519)]]} costa[umin_,umax_,vmin_,vmax_,opt___]:= Module[{costaplot80}, costaplot80=ParametricPlot3D[costa[u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->80,DisplayFunction->Identity]; selectgraphics3d[costaplot80[[1]],8, Boxed->False,ViewPoint->{2.9,-1,4},DisplayFunction->dip[EdgeForm[]]]] cpcsurfrev[a_,b_][u_,v_]:= {b*Cos[u]*Cos[v/a], b*Sin[u]*Cos[v/a], a*EllipticE[v/a,b^2/a^2]} cpcsurfrev[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[cpcsurfrev[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; crosscap[a_][u_,v_]:= {a^2*Sin[u]*Sin[2*v]/2, a^2*Sin[2*u]*Cos[v]^2,a^2*Cos[2*u]*Cos[v]^2} crosscap[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[crosscap[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; deltoidinvolutemin[a_][t_][u_,v_]:= {(a/3)*Cos[t]*(8*Cos[u/2]*Cosh[v/2] + 2*Cos[u]*Cosh[v] - Cos[2*u]*Cosh[2*v]) + (a/3)*Sin[t]*(-8*Sin[u/2]*Sinh[v/2] - 2*Sin[u]*Sinh[v] + Sin[2*u]*Sinh[2*v]), (Cos[t]*(-8*a*Cosh[v/2]*Sin[u/2] + 2*a*Cosh[v]*Sin[u] + a*Cosh[2*v]*Sin[2*u]))/3 + (Sin[t]*(-8*a*Cos[u/2]*Sinh[v/2] + 2*a*Cos[u]*Sinh[v] + a*Cos[2*u]*Sinh[2*v]))/3, (4*a*Sin[t]*(3*u - 2*Cosh[3*v/2]*Sin[3*u/2]))/9 - (4*a*Cos[t]*(3*v - 2*Cos[3*u/2]*Sinh[3*v/2]))/9} deltoidinvolutemin[a_][t_:0][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[deltoidinvolutemin[a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{40,10}]; deltoidmin[a_][t_][u_,v_]:= {a*Cos[t]*(2*Cos[u]*Cosh[v] + Cos[2*u]*Cosh[2*v]) + 2*a*Sin[t]*Sin[u]*(-Sinh[v] - Cos[u]*Sinh[2*v]), -2*a*(Cos[u]*Sinh[v]*((-1 + Cos[u]*Cosh[v])*Sin[t] + 2*a*Cos[t]*Sin[u]*Sinh[v])) + Cosh[v]*Sin[u]*(2*a*Cos[t]*(1 - Cos[u]*Cosh[v]) + 2*a*Sin[t]*Sin[u]*Sinh[v]), -(8/3)*a*Cos[3*u/2]*Cosh[3*v/2]*Sin[t] - (8/3)*a*Cos[t]*Sin[3*u/2]*Sinh[3*v/2]} deltoidmin[a_][t_:0][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[deltoidmin[a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{40,10}]; dini[a_,b_][u_,v_]:= {a*Cos[u]*Sin[v], a*Sin[u]*Sin[v], a*(Cos[v] + Log[Tan[v/2]]) + b*u} dini[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[dini[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{55,10}]; dinihelicoid[pm_,a_,b_,c_][u_,v_]:= {v*Cos[u],v*Sin[u],c*u + pm*(Integrate[Sqrt[(b*c^2 + a^2*vv^2 + b*vv^2 - c^2*vv^2 - vv^4)/ (vv^4 -b*vv^2)],vv])} /. vv->v dinitcheb[a_,b_][u_,v_]:= {a*Cos[b]*Cos[v]/Cosh[(u - v*Sin[b])/Cos[b]], a*Cos[b]*Sin[v]/Cosh[(u - v*Sin[b])/Cos[b]], a*(u - Cos[b]*Tanh[(u - v*Sin[b])/Cos[b]])} dinitcheb[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[dinitcheb[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{25,55}]; dinitcheb[a_,b_,c_][u_,v_]:= {a*Cos[c]*Cos[v]/Cosh[(u - v*Sin[c])/Cos[c]], a*Cos[c]*Sin[v]/Cosh[(u - v*Sin[c])/Cos[c]], b*(u - Cos[c]*Tanh[(u - v*Sin[c])/Cos[c]])} earth[u_,v_]:= {6378.2*Cos[u]*Cos[v],6378.2*Sin[u]*Cos[v], 6356.6*Sin[v]} earth[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[earth[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; eighteight[u_,v_]:= {Sin[u]*Sin[v], Cos[u]*Sin[u]*Sin[v],Cos[v]*Sin[v]} eighteight[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[eighteight[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; eightsurface[u_,v_]:= {Cos[u]*Sin[2*v],Sin[u]*Sin[2*v],Sin[v]} eightsurface[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[eightsurface[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; ellhypcyclide[a_,c_,k_][u_,v_]:= {(c*(k - c*Cos[u]) + a*Cos[u]*(a - k*Cos[v]))/ (a - c*Cos[u]*Cos[v]), (Sqrt[a^2 - c^2]*(a - k*Cos[v])*Sin[u])/ (a - c*Cos[u]*Cos[v]), (Sqrt[a^2 - c^2]*(k - c*Cos[u])*Sin[v])/ (a - c*Cos[u]*Cos[v])} ellhypcyclide[a_,c_,k_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ellhypcyclide[a,c,k][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; ellipsemin[a_,b_][t_][u_,v_]:= {a*Cos[t]*Cos[u]*Cosh[v] - a*Sin[t]*Sin[u]*Sinh[v], b*Cos[t]*Sin[u]*Cosh[v] + b*Sin[t]*Cos[u]*Sinh[v], -b*(Cos[t]*Im[EllipticE[u + I*v,1 - a^2/b^2]] - Sin[t]*Re[EllipticE[u + I*v,1 - a^2/b^2]])} ellipsemin[a_,b_][t:0][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ellipsemin[a,b][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; ellipsoid[a_,c_][u_,v_]:= {a*Cos[v]*Cos[u], a*Cos[v]*Sin[u],c*Sin[v]} ellipsoid[a_,b_,c_][u_,v_]:= {a*Cos[v]*Cos[u], b*Cos[v]*Sin[u],c*Sin[v]} ellipsoid[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ellipsoid[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; ellipticalhyperboloidminus[a_,b_,c_][u_,v_]:= {a*Cos[u] + a*v*Sin[u],-b*v*Cos[u] + b*Sin[u],c*v} ellipticalhyperboloidminus[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ellipticalhyperboloidminus[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; ellipticalhyperboloidplus[a_,b_,c_][u_,v_]:= {a*Cos[u] - a*v*Sin[u],b*v*Cos[u] + b*Sin[u],c*v} ellipticalhyperboloidplus[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ellipticalhyperboloidplus[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; ellipticcoor[d_,e_,f_][a_,b_,c_][w_][u_,v_]:= {d*Sqrt[(a - u)*(a - v)*(a - w)/((a - b)*(a - c))], e*Sqrt[(b - u)*(b - v)*(b - w)/((b - a)*(b - c))], f*Sqrt[(c - u)*(c - v)*(c - w)/((c - a)*(c - b))]} ellipticcoor[d_,e_,f_][a_,b_,c_][w_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ ellipticcoor[d,e,f][a,b,c][w][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; ellipticparaboloid[a_,b_][u_,v_]:= {u,v,u^2/a^2 + v^2/b^2} ellipticparaboloid[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ellipticparaboloid[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; enneper[u_,v_]:= {u - u^3/3 + u*v^2, -v + v^3/3 - v*u^2,u^2 - v^2} enneper[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[enneper[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; enneper[n_][t_][u_,v_]:= Simplify[ComplexExpand[ analytictominimal[ennepermincurve[n]][t][u,v], TargetFunctions->{Re,Im}]] ennepercatenoidpolar[n_][t_][r_,theta_]:= {(n*(2*n + 1)*r^2*Cos[t - theta] + n*(2*n + 1)*Cos[t + theta] - r^(n + 1)*(n*r^(n + 1)*Cos[t - theta - 2*n*theta] + 2*Cos[t - n*theta] + 4*n*Cos[t - n*theta]))/ (n*(2*n + 1)*r), (n*(2*n + 1)*r^2*Sin[t - theta] - n*(2*n + 1)*Sin[t + theta] + r^(n + 1)*(2*Sin[t - n*theta] + 4*n*Sin[t - n*theta] + n*r^(n + 1)*Sin[t + theta - 2*(n + 1)*theta]))/ (n*(2*n + 1)*r), 2*(r^(n + 1)*Cos[t - (n + 1)*theta] + (n + 1)*(Cos[t]*Log[r] + theta*Sin[t]))/(n + 1)} ennepercatenoidpolar[n_,a_,b_][t_][r_,theta_]:= {(n*(2*n + 1)*r^2*Cos[t - theta] + a^2*n*(2*n + 1)*Cos[t + theta] - b*r^(n + 1)*(2*a*Cos[t - n*theta] + 4*a*n*Cos[t - n*theta] + b*n*r^(n + 1)*Cos[t - (2*n + 1)*theta]))/ (n*(2*n + 1)*r), (n*(2*n + 1)*r^2*Sin[t - theta] - a^2*n*(2*n + 1)*Sin[t + theta] + b*r^n*(b*n*r^(n + 2)*Sin[t - theta - 2*n*theta] + 2*a*r*Sin[t + theta - (n + 1)*theta] + 4*a*n*r*Sin[t + theta - (n + 1)*theta]))/ (n*(2*n + 1)*r), (2*b*r^(n + 1)*Cos[t - (n + 1)*theta] + 2*a*(n + 1)*Cos[t]*Log[r] + 2*a*(n + 1)*theta*Sin[t]) /(n + 1)} ennepercatenoidpolar[n_,a_,b_][t_:0][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[ennepercatenoidpolar[n,a,b][t][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax},opt]; enneperpolar[n_][t_][r_,theta_]:= {r*Cos[t - theta] - r^(2*n + 1)* Cos[t - (2*n + 1)*theta]/(2*n + 1), r*Sin[t - theta] + r^(2*n + 1)* Sin[t - (2*n + 1)*theta]/(2*n + 1), 2*r^(n + 1)*Cos[t - (n + 1)*theta]/(n + 1)} enneperpolar[n_][t_:0][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[enneperpolar[n][t][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt,PlotPoints->{15,69}]; exptwist[a_,c_][u_,v_]:= {a*v*Cos[u],a*v*Sin[u],a*E^(c*u)} exptwist[a_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[exptwist[a,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{60,10}]; exptwistasym[a_,c_][p_,q_]:= {a*E^(c*(p - q)/2)*Cos[p], a*E^(c*(p - q)/2)*Sin[p], a*E^(c*p)} exptwistasym[a_,c_][pmin_,pmax_,qmin_,qmax_,opt___]:= pplot3d[exptwistasym[a,c][p,q],{p,pmin,pmax},{q,qmin,qmax}, opt,PlotPoints->{48,15}]; flattorus[a_,b_][u_,v_]:= {a*Cos[u],a*Sin[u], b*Cos[v],b*Sin[v]} flattorus[a_,b_,c_,d_][u_,v_]:= {a*Cos[u],b*Sin[u], c*Cos[v],d*Sin[v]} funnel[a_,c_][u_,v_]:= {a*v*Cos[u], c*v*Sin[u],c*Log[v]} funnel[a_,b_,c_][u_,v_]:= {a*v*Cos[u], b*v*Sin[u],c*Log[v]} funnel[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[funnel[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; funnelasym[c_][p_,q_]:= {c*E^(p - q)*Cos[p + q], -c*E^(p - q)*Sin[p + q],c*(p - q)} funnelasym[c_][pmin_,pmax_,qmin_,qmax_,opt___]:= pplot3d[funnelasym[c][p,q],{p,pmin,pmax},{q,qmin,qmax}, opt]; gencube[n_,a_,b_,c_][u_,v_]:= {a*(Cos[u]*Sqrt[Cos[u]^2]^(n - 1) + Sin[u]*Sqrt[Sin[u]^2]^(n - 1))* (Cos[v]*Sqrt[Cos[v]^2]^(n - 1) + Sin[v]*Sqrt[Sin[v]^2]^(n - 1)), b*(-Cos[u]*Sqrt[Cos[u]^2]^(n - 1) + Sin[u]*Sqrt[Sin[u]^2]^(n - 1))* (Cos[v]*Sqrt[Cos[v]^2]^(n - 1) + Sin[v]*Sqrt[Sin[v]^2]^(n - 1)), c*(-Cos[v]*Sqrt[Cos[v]^2]^(n - 1) + Sin[v]*Sqrt[Sin[v]^2]^(n - 1))} gencube[n_,a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[gencube[n,a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; genhypparab[a_,b_][u_,v_]:= {a*(u + v),b*v,u^2 + 2*u*v} genhypparab[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[genhypparab[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; genoctahedron[n_,a_,b_,c_][u_,v_]:= {a*Cos[u]*Cos[v]*Sqrt[Cos[u]^2*Cos[v]^2]^(n - 1), a*Sin[u]*Cos[v]*Sqrt[Sin[u]^2*Cos[v]^2]^(n - 1), a*Sin[v]*Sqrt[Sin[v]^2]^(n - 1)} genoctahedron[n_,a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[genoctahedron[n,a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; handkerchief[a_][u_,v_]:= {u,v, (1/3)*u^3 + u*v^2 +a*(u^2 - v^2)} handkerchief[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[handkerchief[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; heart[a_][u_,v_]:= {2*a*Cos[u]*(1 + Cos[v])*Sin[v], 2*a*Sin[u]*(1 + Cos[v])*Sin[v], -2*a*Cos[v]*(1 + Cos[v])} heart[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[heart[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; helicoid[a_,c_][u_,v_]:= {a*v*Cos[u],a*v*Sin[u],c*u} helicoid[a_,b_,c_][u_,v_]:= {a*v*Cos[u],b*v*Sin[u],c*u} helicoid[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[helicoid[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{75,15}]; helicoidprin[b_][p_,q_]:= {b*Cos[p + q]*Sinh[-p + q], b*Sin[p + q]*Sinh[-p + q],b*(p + q)} helicoidprin[b_][pmin_,pmax_,qmin_,qmax_,opt___]:= pplot3d[helicoidprin[b][p,q],{p,pmin,pmax},{q,qmin,qmax}, opt]; heltocat[t_][u_,v_]:= {Cos[u]*Cosh[v]*Sin[t] + Cos[t]*Sin[u]*Sinh[v], Cosh[v]*Sin[t]*Sin[u] - Cos[t]*Cos[u]*Sinh[v], u*Cos[t] + v*Sin[t]} heltocat[t_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[heltocat[t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{50,15}]; henneberg[u_,v_]:= {2*Sinh[u]*Cos[v] - (2/3)*Sinh[3*u]*Cos[3*v], 2*Sinh[u]*Sin[v] + (2/3)*Sinh[3*u]*Sin[3*v], 2*Cosh[2*u]*Cos[2*v]} henneberg[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[henneberg[u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{15,50}]; hyperbolicparaboloid[u_,v_]:= {u,v,u*v} hyperbolicparaboloid[a_][u_,v_]:= {u,v,a*u*v} hyperbolicparaboloid[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[hyperbolicparaboloid[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; hyperboloid[a_,c_][u_,v_]:= {a*Cosh[v]*Cos[u], a*Cosh[v]*Sin[u], c*Sinh[v]} hyperboloid[a_,b_,c_][u_,v_]:= {a*Cosh[v]*Cos[u], b*Cosh[v]*Sin[u], c*Sinh[v]} hyperboloid[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[hyperboloid[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; hyperboloidbis[a_,c_][u_,v_]:= {a*Sec[v]*Cos[u], a*Sec[v]*Sin[u], c*Tan[v]} hyperboloidbis[a_,b_,c_][u_,v_]:= {a*Sec[v]*Cos[u], b*Sec[v]*Sin[u], c*Tan[v]} hyperboloidbis[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[hyperboloidbis[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; hypocycloidinvolutemin[a_,b_][t_][u_,v_]:= {Cos[t]*((a - b)*Cos[u]*Cosh[v] + b*Cos[(a - b)*u/b]*Cosh[(a - b)*v/b]) + Sin[t]*((-a + b)*Sin[u]*Sinh[v] - b*Sin[(a - b)*u/b]*Sinh[(a - b)*v/b]), Cos[t]*((a - b)*Cosh[v]*Sin[u] - b*Cosh[(a - b)*v/b]*Sin[(a - b)*u/b]) + Sin[t]*((a - b)*Cos[u]*Sinh[v] - b*Cos[((a - b)*u)/b]*Sinh[(a - b)*v/b]), (-4*(a - b)*b*Cos[(a*u)/(2*b)]*Cosh[(a*v)/(2*b)]*Sin[t])/a - (4*(a - b)*b*Cos[t]*Sin[(a*u)/(2*b)]*Sinh[(a*v)/(2*b)])/a} hypocycloidinvolutemin[a_,b_][t_:0][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[hypocycloidinvolutemin[a,b][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{99,15}]; hy2sheet[a_,c_][u_,v_]:= {a*Cosh[u]*Cosh[v], a*Sinh[u]*Cosh[v], c*Sinh[v]} hy2sheet[a_,b_,c_][u_,v_]:= {a*Cosh[u]*Cosh[v], b*Sinh[u]*Cosh[v], c*Sinh[v]} hy2sheet[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[hy2sheet[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; invertedcircularcone[{p1_,p2_,p3_},rho_,a_,b_][u_,v_]:= {p1 + rho^2*(-p1 + a*v*Cos[u])/ ((-p3 + b*v)^2 + (-p1 + a*v*Cos[u])^2 + (-p2 + a*v*Sin[u])^2), p2 + rho^2*(-p2 + a*v*Sin[u])/ ((-p3 + b*v)^2 + (-p1 + a*v*Cos[u])^2 + (-p2 + a*v*Sin[u])^2), p3 + rho^2*(-p3 + b*v)/ ((-p3 + b*v)^2 + (-p1 + a*v*Cos[u])^2 + (-p2 + a*v*Sin[u])^2)} invertedcircularcone[rho_,a_,b_][u_,v_]:= {a*rho^2*Cos[u]/(a^2*v + b^2*v), a*rho^2*Sin[u]/(a^2*v + b^2*v), b*rho^2/(a^2*v + b^2*v)} invertedcircularcone[{p1_,p2_,p3_},rho_,a_,b_][umin_,umax_, vmin_,vmax_,opt___]:= pplot3d[invertedcircularcone[{p1,p2,p3},rho,a,b][u,v],{u,umin,umax}, {v,vmin,vmax},opt]; invertedcircularcylinder[{p1_,p2_,p3_},rho_,a_][u_,v_]:= {p1 + rho^2*(-p1 + a*Cos[u])/ ((-p3 + v)^2 + (-p1 + a*Cos[u])^2 + (-p2 + a*Sin[u])^2), p2 + rho^2*(-p2 + a*Sin[u])/ ((-p3 + v)^2 + (-p1 + a*Cos[u])^2 + (-p2 + a*Sin[u])^2), p3 + rho^2*(-p3 + v)/ ((-p3 + v)^2 + (-p1 + a*Cos[u])^2 + (-p2 + a*Sin[u])^2)} invertedcircularcylinder[rho_,a_][u_,v_]:= {a*rho^2*Cos[u]/(a^2 + v^2), a*rho^2*Sin[u]/(a^2 + v^2), rho^2*v/(a^2 + v^2)} invertedcircularcylinder[{p1_,p2_,p3_},rho_,a_][umin_,umax_, vmin_,vmax_,opt___]:= pplot3d[ invertedcircularcylinder[{p1,p2,p3},rho,a][u,v],{u,umin,umax}, {v,vmin,vmax},opt]; invertedtorus[{p1_,p2_,p3_},rho_,a_,b_][u_,v_]:= {p1 + (rho^2*(-p1 + Cos[u]*(a + b*Cos[v])))/ ((-p1 + Cos[u]*(a + b*Cos[v]))^2 + (-p2 + (a + b*Cos[v])*Sin[u])^2 + (-p3 + b*Sin[v])^2), p2 + (rho^2*(-p2 + (a + b*Cos[v])Sin[u]))/ ((-p1 + Cos[u]*(a + b*Cos[v]))^2 + (-p2 + (a + b*Cos[v])*Sin[u])^2 + (-p3 + b*Sin[v])^2), p3 + (rho^2*(-p3 + b*Sin[v]))/ ((-p1 + Cos[u]*(a + b*Cos[v]))^2 + (-p2 + (a + b*Cos[v])*Sin[u])^2 + (-p3 + b*Sin[v])^2)} invertedtorus[rho_,a_,b_][u_,v_]:= {rho^2*Cos[u]*(a + b*Cos[v])/(a^2 + b^2 + 2*a*b*Cos[v]), rho^2*(a + b*Cos[v])*Sin[u]/(a^2 + b^2 + 2*a*b*Cos[v]), b*rho^2*Sin[v]/(a^2 + b^2 + 2*a*b*Cos[v])} invertedtorus[{p1_,p2_,p3_},rho_,a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ invertedtorus[{p1,p2,p3},rho,a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; jorgemeekspolar[n_,a_][r_,theta_]:= Re[jorgemeeksmincurve[n,a][r*E^(I*theta)]] jorgemeekspolar[2,a_][r_,theta_]:= {(a/8)*Log[(1 + r^2 + 2*r*Cos[theta])/(1 + r^2 - 2*r*Cos[theta])], -a*r*(1 + r^2)*Sin[theta]/(2*(1 + r^4 - 2*r^2*Cos[2*theta])), (a - a*r^4)/(4*(1 + r^4 - 2*r^2*Cos[2*theta]))} jorgemeekspolar[2,a_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[jorgemeekspolar[2,a][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; jorgemeekspolar[3,a_][r_,theta_]:= {(a/18)*(3*r^2/(1 + r^2 + r^4 + 2*(r + r^3)*Cos[theta] + 2*r^2*Cos[2*theta]) + (3*(r + r^3)*Cos[theta])/ (1 + r^2 + r^4 + 2*(r + r^3)*Cos[theta] + 2*r^2*Cos[2*theta]) - 2*Log[1 + r^2 - 2*r*Cos[theta]] + Log[1 + r^2 + r^4 + 2*(r + r^3)*Cos[theta] + 2*r^2*Cos[2*theta]]), -(a*(-(Sqrt[3]*Log[1 + r^2 + r*Cos[theta] - Sqrt[3]*r*Sin[theta]]) - Sqrt[3]*r^6*Log[1 + r^2 + r*Cos[theta] - Sqrt[3]*r*Sin[theta]] + 2*Sqrt[3]*r^3*Cos[3*theta]* (Log[1 + r^2 + r*Cos[theta] - Sqrt[3]*r*Sin[theta]] - Log[1 + r^2 + r*Cos[theta] + Sqrt[3]*r*Sin[theta]]) + Sqrt[3]*Log[1 + r^2 + r*Cos[theta] + Sqrt[3]*r*Sin[theta]] + Sqrt[3]*r^6*Log[1 + r^2 + r*Cos[theta] + Sqrt[3]*r*Sin[theta]] + 3*(r + r^5)*Sin[theta] + 3*r^2*Sin[2*theta] + 3*r^4*Sin[2*theta]))/(18*(1 + r^6 - 2*r^3*Cos[3*theta])), (a - a*r^6)/(6*(1 + r^6 - 2*r^3*Cos[3*theta]))} jorgemeekspolar[3,a_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[jorgemeekspolar[3,a][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; kidney[a_][u_,v_]:= {a*Cos[u]*(3*Cos[v] - Cos[3*v]), a*Sin[u]*(3*Cos[v] - Cos[3*v]), a*(3*Sin[v] - Sin[3*v])} kidney[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[ kidney[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; kleinbottle[a_][u_,v_]:= {(a + Cos[u/2]*Sin[v] - Sin[u/2]*Sin[2*v])*Cos[u], (a + Cos[u/2]*Sin[v] - Sin[u/2]*Sin[2*v])*Sin[u], Sin[u/2]*Sin[v] + Cos[u/2]*Sin[2*v]} kleinbottle[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[kleinbottle[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; kleinbottlebis[e_,f_][u_,v_]:=If[u<0, {f*Sin[u]/2,(-e - f/2 + f*Cos[u]/2)*Cos[v], (e + f/2 - f*Cos[u]/2)*Sin[v]}, {10*Sin[0.105*u] + 2*(e + 0.033*f*u)* (Cos[0.105*u] + 4*Cos[0.21*u])*Cos[v]* (Sin[0.105*u] + 2*Sin[0.21*u])/ Sqrt[100*Cos[0.105*u]^2 + 4*(Cos[0.105*u] + 4*Cos[0.21*u])^2*(Sin[0.105*u] + 2*Sin[0.21*u])^2], (Sin[0.105*u] + 2*Sin[0.21*u])^2 - (10*(e + 0.033*f*u)*Cos[0.105*u]*Cos[v])/ Sqrt[100*Cos[0.105*u]^2 + 4*(Cos[0.105*u] + 4*Cos[0.21*u])^2*(Sin[0.105*u] + 2*Sin[0.21*u])^2], (e + 0.033*f*u)*Sin[v]}] kleinbottlebis[e_,f_][umin_,umax_,vmin_,vmax_,opt___]:= ParametricPlot3D[ kleinbottlebis[e,f][u,v],{u,umin,umax},{v,vmin,vmax}, opt,ViewPoint->{-2,0,-3},PlotPoints->{49,19},Axes->None]; kleinbottlewri[u_,v_]:=If[Pi < u <= 2 Pi, {6*Cos[u]*(1 + Sin[u]) + 4*(1 - Cos[u]/2)*Cos[v + Pi], 16*Sin[u],4*(1 - Cos[u]/2)*Sin[v]}, {6*Cos[u]*(1 + Sin[u]) + 4*(1 - Cos[u]/2)*Cos[u]*Cos[v], 16*Sin[u] + 4*(1 - Cos[u]/2)*Sin[u]*Cos[v], 4*(1 - Cos[u]/2)*Sin[v]}] kleinbottlewri[umin_,umax_,vmin_,vmax_,opt___]:= ParametricPlot3D[ kleinbottlewri[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; klein4[a_,b_][u_,v_]:= {(a + b*Cos[v])*Cos[u],(a + b*Cos[v])Sin[u], b*Sin[v]*Cos[u/2],b*Sin[v]*Sin[u/2]} kuen[a_][u_,v_]:= {2*a*(Cos[u] + u*Sin[u])*Sin[v]/(1 + u^2*Sin[v]^2), 2*a*(Sin[u] - u*Cos[u])Sin[v]/(1 + u^2*Sin[v]^2), a*(Log[Tan[v/2]] + 2*Cos[v]/(1 + u^2*Sin[v]^2))} kuen[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[kuen[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; kuentcheb[a_][u_,v_]:= {2*a*Cosh[u]*(Cos[v] + v*Sin[v])/(v^2 + Cosh[u]^2), 2*a*Cosh[u]*(Sin[v] - v*Cos[v])/(v^2 + Cosh[u]^2), a*(u - Sinh[2*u]/(v^2 + Cosh[u]^2))} kuentcheb[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[kuentcheb[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; kuentcheb[a_,b_][u_,v_]:= {2*a*Cosh[u]*(Cos[v] + v*Sin[v])/(v^2 + Cosh[u]^2), 2*a*Cosh[u]*(Sin[v] - v*Cos[v])/(v^2 + Cosh[u]^2), b*(u - Sinh[2*u]/(v^2 + Cosh[u]^2))} kuentcheb[a_,b_,c_][u_,v_]:= {2*a*Cosh[u]*(Cos[v] + v*Sin[v])/(v^2 + Cosh[u]^2), 2*b*Cosh[u]*(Sin[v] - v*Cos[v])/(v^2 + Cosh[u]^2), c*(u - Sinh[2*u]/(v^2 + Cosh[u]^2))} lemniscatemin[a_][t_][u_,v_]:= {(-16*a*Cos[u]*Cosh[v]*Sin[u]*Sinh[v]* (Cos[u]*Cosh[v]*Sin[t] + Cos[t]*Sin[u]*Sinh[v]))/ (18 + Cos[4*u] - 12*Cos[2*u]*Cosh[2*v] + Cosh[4*v]) + (4*a*(3 - Cos[2*u]*Cosh[2*v])* (Cos[t]*Cos[u]*Cosh[v] - Sin[t]*Sin[u]*Sinh[v]))/ (18 + Cos[4*u] - 12*Cos[2*u]*Cosh[2*v] + Cosh[4*v]), (a*(-Sin[t - 4*u] + 6*Cosh[2*v]*Sin[t - 2*u] - 6*Cosh[2*v]*Sin[t + 2*u] + Sin[t + 4*u] - 6*Sin[t - 2*u]*Sinh[2*v] - 6*Sin[t + 2*u]*Sinh[2*v] + 2*Sin[t]*Sinh[4*v]))/(2*(-18 - Cos[4*u] + 12*Cos[2*u]*Cosh[2*v] - Cosh[4*v])), a*(-Im[EllipticF[u + I*v,-1]]Cos[t] + Re[EllipticF[u + I*v,-1]]*Sin[t])} lemniscatemin[a_][t_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[lemniscatemin[a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{100,20}]; logminpolar[n_][t_][r_,theta_]:= analytictominimalpolar[logmincurve[n]][t][r,theta] logminpolar[n_][t_:0][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[logminpolar[n][t][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt,PlotPoints->{10,60},ViewPoint->{-2.5,-1.5,1.6}]; menn[a_][u_,v_]:= {u,v,a*u^4 + u^2*v - v^2} menn[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[menn[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; mercatorellipsoid[a_,b_,c_][u_,v_]:= {a*Sech[v]*Cos[u],b*Sech[v]*Sin[u],c*Tanh[v]} mercatorellipsoid[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[mercatorellipsoid[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; mercatorsphere[a_][u_,v_]:= {a*Sech[v]*Cos[u],a*Sech[v]*Sin[u],a*Tanh[v]} mercatorsphere[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[mercatorsphere[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; mercatorsphere[a_,b_][u_,v_]:= {a*(Cos[u] + b*Cosh[v])/(Cosh[v] + b*Cos[u]), a*Sqrt[1 - b^2]*Sin[u]/(Cosh[v] + b*Cos[u]), a*Sqrt[1 - b^2]*Sinh[v]/(Cosh[v] + b*Cos[u])} mercatorsphere[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[mercatorsphere[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; moebcirc[a_][u_,v_]:={a*(-2*Cos[2*v]*Sin[u])/ (-2 + Sqrt[2]*Cos[u]*Sin[v] + Sqrt[2]*Sin[u]*Sin[2*v]), a*(Sqrt[2]*(Cos[u]*Sin[v] - Sin[u]*Sin[2*v]))/ (-2 + Sqrt[2]*Cos[u]*Sin[v] + Sqrt[2]*Sin[u]*Sin[2*v]), a*(-2*Cos[u]*Cos[v])/ (-2 + Sqrt[2]*Cos[u]*Sin[v] + Sqrt[2]*Sin[u]*Sin[2*v])} moebcirc[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[moebcirc[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; moebcirc[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[moebcirc[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; moebiusstrip[a_][u_,v_]:= {a*(Cos[u] + v*Cos[u/2]*Cos[u]), a*(Sin[u] + v*Cos[u/2]*Sin[u]),a*v*Sin[u/2]} moebiusstrip[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[moebiusstrip[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{40,5}]; monkeysaddle[u_,v_]:= {u,v,u^3 - 3*u*v^2} monkeysaddle[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[monkeysaddle[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; monkeysaddle[n_][u_,v_]:={u,v, Simplify[ComplexExpand[Re[(u + I*v)^n], TargetFunctions->{Re,Im}]]} monkeysaddlepolar[n_][r_,theta_]:= {r*Cos[theta],r*Sin[theta],r^n*Cos[n*theta]} monkeysaddlepolar[n_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[monkeysaddlepolar[n][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt,PlotPoints->{10,33}]; nodoidnds[vmin_,vmax_][a_,b_,c_,e_][u_,v_]:= Module[{tmpintr}, tmpintr= intrinsic[delaunaykappa2[c,e],0,{0,0,-Pi/2}, MaxSteps->2000,{vmin,vmax}][v]; {Cos[u]*(a + b*tmpintr[[1]]),Sin[u]*(a + b*tmpintr[[1]]), b*tmpintr[[2]]}] nodoid[vmin_,vmax_][a_,b_,c_,e_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[nodoidnds[vmin,vmax][a,b,c,e][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{21,51}]; parabolamin[a_][t_][u_,v_]:= {2*a*(u*Cos[t] + v*Sin[t]), a*((u^2 - v^2)*Cos[t] + 2*u*v*Sin[t]), (a*(-2*(u*v + ArcTan[u + Sqrt[1 + u^2],2*v])*Cos[t] + (-2*v^2 + Log[(u + Sqrt[1 + u^2])^2 + 4*v^2])*Sin[t] + 2*Sqrt[1 + u^2]*(-(v*Cos[t]) + u*Sin[t])))/2} parabolamin[a_][t_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[parabolamin[a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{40,10}]; paraboliccoor[d_,e_,f_][a_,b_,c_][w_][u_,v_]:= {d*Sqrt[(a - u)*(a - v)*(a - w)/(b - a)], e*Sqrt[(b - u)*(b - v)*(b - w)/(a - b)], f*(c - a - b + u + v + w)/2} paraboliccoor[d_,e_,f_][a_,b_,c_][w_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[paraboliccoor[d,e,f][a,b,c][w][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; paraboliccyclide[a_,k_][u_,v_]:= {u*(8*a^2 + k + v^2)/(16*a^2 + u^2 + v^2), v*(8*a^2 - k + u^2)/(16*a^2 + u^2 + v^2), (16*a^2*(k - u^2 + v^2) - k*(u^2 + v^2))/ (8*a*(16*a^2 + u^2 + v^2))} paraboliccyclide[a_,k_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[paraboliccyclide[a,k][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; paraboloid[a_][u_,v_]:= {u,v,a*(u^2 + v^2)} paraboloid[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[paraboloid[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; paraboloid[a_,b_][u_,v_]:= {u,v,a*u^2 + b*v^2} paraboloid[a_,b_,c_][u_,v_]:= {u,v,a*u^2 + b*v^2 + c*u*v} paraboloidpolar[n_,a_,b_][r_,theta_]:= {a*r*Cos[theta],b*r*Sin[theta],b*r^n} paraboloidpolar[n_,a_,b_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[paraboloidpolar[n,a,b][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; pear[a_,b_][u_,v_]:= {b*Cos[u]*Cos[v]*(1 + Sin[v]), b*Sin[u]*Cos[v]*(1 + Sin[v]), -a*(1 + Sin[v])} pear[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[pear[a,b][u,v], {u,umin,umax},{v,vmin,vmax}, opt]; pearbis[u_,v_]:={Cos[u]*(4 + 3.8*Cos[v]), Sin[u]*(4 + 3.8*Cos[v]), ((Cos[v] - 3.5)*(1 + Sin[v])*Log[1 - Pi*v/10] + 10*Sin[v])*(1 - 0.4*Cos[v/2]*(1 + 0.2*Sin[v^2]))} pearbis[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[pearbis[u,v], {u,umin,umax},{v,vmin,vmax}, opt]; perturbedms[a_][u_,v_]:= {u,v,u^3 - 3*u*v^2 + a*(u^2 + v^2)} perturbedms[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[perturbedms[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; perturbedms[a_,b_,c_][u_,v_]:= {u,v,c*(u^3 - 3*u*v^2) + a*u^2 + b*v^2} perturbedms[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[perturbedms[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{10,40}]; perturbedmspolar[n_,a_][r_,theta_]:= {r*Cos[theta],r*Sin[theta],r^n*Cos[n*theta] + a*r^2} perturbedmspolar[n_,a_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[perturbedmspolar[n,a][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; pillow[a_][u_,v_]:= {a*Cos[u],a*Cos[v],a*Sin[u]*Sin[v]} pillow[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[pillow[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; plane[a1_,a2_,b1_,b2_,c1_,c2_][u_,v_]:= {a1*u + a2*v,b1*u + b2*v,c1*u + c2*v} planepolar[a_][r_,theta_]:= {a*r*Cos[theta],a*r*Sin[theta],0} planepolar[a_,b_][r_,theta_]:= {a*r*E^(b*theta)*Cos[theta], a*r*E^(b*theta)*Sin[theta],0} planepolar[a_,b_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[planepolar[a,b][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; planetocat[t_][u_,v_]:= {Cos[t]*u + Sin[u]*Cosh[v],Sin[t]*Cos[u]*Cosh[v], v + Cos[t]*Cos[u]*Sinh[v]} planetocat[t_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[planetocat[t][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; plucker[u_,v_]:= {u,v,2*u*v/(u^2 + v^2)} plucker[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[plucker[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; plucker[n_][u_,v_]:= {u,v,Sin[n*ArcTan[u,v]]} plucker[m_,n_,a_][u_,v_]:= {a*u,a*v, a*(u + v)^(m/2)*Sin[n*ArcTan[u,v]]} pluckerpolar[n_][r_,theta_]:= {r*Cos[theta],r*Sin[theta],Sin[n*theta]} pluckerpolar[m_,n_,a_][r_,theta_]:= {a*r*Cos[theta],a*r*Sin[theta],a*r^m*Sin[n*theta]} pluckerpolar[m_,n_,a_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[pluckerpolar[m,n,a][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt,PlotPoints->{10,75}]; pseudocrosscap[u_,v_]:= {(1 - u^2)*Sin[v],(1 - u^2)*Sin[2*v],u} pseudocrosscap[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[pseudocrosscap[u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{24,48}]; pseudosphere[a_][u_,v_]:= {a*Cos[u]*Sin[v], a*Sin[u]*Sin[v], a*(Cos[v] + Log[Tan[v/2]])} pseudosphere[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[pseudosphere[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; pseudosphere[a_,b_][u_,v_]:= {a*Cos[u]*Sin[v], a*Sin[u]*Sin[v], b*(Cos[v] + Log[Tan[v/2]])} pseudosphere[a_,b_,c_][u_,v_]:= {a*Cos[u]*Sin[v], b*Sin[u]*Sin[v], c*(Cos[v] + Log[Tan[v/2]])} pseudospherebis[a_][u_,v_]:= {a*Cos[u]*Tanh[v], a*Sin[u]*Tanh[v], a*(Sech[v] + Log[Tanh[v/2]])} pseudospherebis[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[pseudospherebis[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; pseudospheretcheb[a_][u_,v_]:= {a*Cos[v]/Cosh[u], a*Sin[v]/Cosh[u], a*(u - Tanh[u])} pseudospheretcheb[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[pseudospheretcheb[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; pseudospheretcheb[a_,b_][u_,v_]:= {a*Cos[v]/Cosh[u], a*Sin[v]/Cosh[u], b*(u - Tanh[u])} pseudospheretcheb[a_,b_,c_][u_,v_]:= {a*Cos[v]/Cosh[u], b*Sin[v]/Cosh[u], c*(u - Tanh[u])} pseudospheretcheb[a_,b_,c_,d_][u_,v_]:= {a*Cos[v]/Cosh[u], b*Sin[v]/Cosh[u], c*u - d*Tanh[u]} rconoid[u_,v_]:= {v*Cos[u],v*Sin[u],2*Sin[u]} rconoid[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[rconoid[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; richmond[u_,v_]:= {(-3*u - u^5 + 2*u^3*v^2 + 3*u*v^4)/(6*(u^2 + v^2)), (-3*v - 3*u^4*v - 2*u^2*v^3 + v^5)/(6*(u^2 + v^2)),u} richmond[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[richmond[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; richmond[n_][t_][u_,v_]:= Simplify[ComplexExpand[ analytictominimal[richmondmincurve[n]][t][u,v], TargetFunctions->{Re,Im}]] richmondpolar[n_][t_][r_,theta_]:= {-Cos[t + theta]/(2*r) - r^(2*n + 1)*Cos[t - (2*n + 1)*theta]/(4*n + 2), -Sin[t + theta]/(2*r) + r^(2*n + 1)*Sin[t - (2*n + 1)*theta]/(4*n + 2), r^n*Cos[t - n*theta]/n} richmondpolar[n_][t_:0][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[richmondpolar[n][t][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; roman[a_][u_,v_]:= {(a^2/2)*Sin[2*u]Cos[v]^2, (a^2/2)*Sin[u]*Sin[2*v], (a^2/2)*Cos[u]*Sin[2*v]} roman[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[roman[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; roman[n_,a_][u_,v_]:= {(a^2/2)*(Cos[u]*Cos[v]^2*Sin[u])^n, (a^2/2)*(Cos[v]*Sin[u]*Sin[v])^n, (a^2/2)*(Cos[u]*Cos[v]*Sin[v])^n} rosemin[n_,a_][t_][u_,v_]:= {Cos[n*u]*Cosh[n*v]*(a*Cos[t]*Cos[u]*Cosh[v] - a*Sin[t]*Sin[u]*Sinh[v]) + Sin[n*u]*(-a*Cos[u]*Cosh[v]*Sin[t] - a*Cos[t]*Sin[u]*Sinh[v])*Sinh[n*v], -Cos[u]*Sinh[v]*(-a*Cos[n*u]*Cosh[n*v]*Sin[t] - a*Cos[t]*Sin[n*u]*Sinh[n*v]) + Cosh[v]*Sin[u]*(a*Cos[t]*Cos[n*u]*Cosh[n*v] - a*Sin[t]*Sin[n*u]*Sinh[n*v]), -a*Cos[t]*Im[EllipticE[n*(u + I*v),1 - n^2]]/n + a*Re[EllipticE[n*(u + I*v),1 - n^2]]*Sin[t]/n} rosemin[n_,a_][t_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[rosemin[n,a][t][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{45,15}]; scherk[a_][u_,v_]:= {u,v,(1/a)*Log[Cos[a*v]/Cos[a*u]]} scherk[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[scherk[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; scherk[a_,theta_][u_,v_]:= {Sec[2*theta]*(Cos[theta]*u + Sin[theta]*v), Sec[2*theta]*(Sin[theta]*u + Cos[theta]*v), (1/a)*Log[ Cos[a*Sec[2*theta]*(Sin[theta]*u + Cos[theta]*v)]/ Cos[a*Sec[2*theta]*(Cos[theta]*u + Sin[theta]*v)]]} scherk5[u_,v_]:= {ArcSinh[u],ArcSinh[v],ArcSin[u*v]} scherk5[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[scherk5[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; scherk5[a_,b_,c_][u_,v_]:= {a*ArcSinh[u], b*ArcSinh[v], c*ArcSin[u*v]} shoe[a_,b_][u_,v_]:= {u,v,a*u^3 + b*v^2} shoe[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[shoe[a,b][u,v], {u,umin,umax},{v,vmin,vmax},opt]; shoeasym[a_,b_][p_,q_]:= {(-3*b/(4*a))^(1/3)*(p - q)^(2/3), -p - q,(b/4)*(p^2 + 14*p*q + q^2)} shoeasym[a_,b_][pmin_,pmax_,qmin_,qmax_,opt___]:= pplot3d[Re[ shoeasym[a,b][p,q]],{p,pmin,pmax},{q,qmin,qmax}, opt]; sievert[a_][u_,v_]:= {(2/(a + 1 - a*Sin[v]^2*Cos[u]^2))* (Sqrt[(a + 1)*(1 + a*Sin[u]^2)]*Sin[v]/Sqrt[a])* Cos[-u/Sqrt[a + 1] + ArcTan[Sqrt[a + 1]*Tan[u]]], (2/(a + 1 - a*Sin[v]^2*Cos[u]^2))* (Sqrt[(a + 1)*(1 + a*Sin[u]^2)]*Sin[v]/Sqrt[a])* Sin[-u/Sqrt[a + 1] + ArcTan[Sqrt[a + 1]*Tan[u]]], Log[Tan[v/2]]/Sqrt[a] + 2*(a + 1)*Cos[v]/ ((a + 1 - a*Sin[v]^2*Cos[u]^2)*Sqrt[a])} sievert[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[sievert[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; sinovaloid[n_,a_][u_,v_]:= {a*Cos[u]*Cos[v], a*Sin[u]*Cos[v], a*Nest[Sin,v,n]} sinovaloid[n_,a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[sinovaloid[n,a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; sinsurface[a_][u_,v_]:= {a*Sin[u],a*Sin[v],a*Sin[u + v]} sinsurface[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[sinsurface[a][u,v], {u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{40,40}]; snail[u_,v_]:= {u*Cos[v]*Sin[u],u*Cos[u]*Cos[v],-u*Sin[v]} snail[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[snail[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; sphere[a_][u_,v_]:= {a*Cos[v]*Cos[u],a*Cos[v]*Sin[u],a*Sin[v]} sphere[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[sphere[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; spherehelix[a_,b_][u_,v_]:= {a*Cos[u]*Cos[v],a*Cos[v]*Sin[u],a*Sin[v],b*v} stereographicellipsoid[a_,b_,c_][u_,v_]:= {2*a*u/(u^2 + v^2 + 1),2*b*v/(u^2 + v^2 + 1), c*(u^2 + v^2 - 1)/(u^2 + v^2 + 1)} stereographicellipsoid[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[stereographicellipsoid[a,b,c][u,v], {u,umin,umax},{v,vmin,vmax}, opt]; stereographicsphere[a_][u_,v_]:= {2*a*u/(u^2 + v^2 + 1),2*a*v/(u^2 + v^2 + 1), a*(u^2 + v^2 - 1)/(u^2 + v^2 + 1)} stereographicsphere[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[stereographicsphere[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; stereographicspherepolar[a_][r_,theta_]:= {2*a*r*Cos[theta]/(1 + r^2), 2*a*r*Sin[theta]/(1 + r^2), a*(-1 + r^2)/(1 + r^2)} stereographicspherepolar[a_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[stereographicspherepolar[a][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; stereographicspherepolar[a_,b_][r_,theta_]:= {(2*a*E^(b*theta)*r*Cos[theta])/(1 + E^(2*b*theta)*r^2), (2*a*E^(b*theta)*r*Sin[theta])/(1 + E^(2*b*theta)*r^2), (a*(-1 + E^(2*b*theta)*r^2))/(1 + E^(2*b*theta)*r^2)} stereographicspherepolar[a_,b_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[stereographicspherepolar[a,b][r,theta], {r,rmin,rmax},{theta,thetamin,thetamax}, opt]; swallowtail[u_,v_]:={3*v^4 + u*v^2,-4*v^3 - 2*u*v,u} swallowtail[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[swallowtail[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; tetrahedral[m_,n_][A_,B_,C_][a_,b_,c_][u_,v_]:= {A*(u - a)^m*(v - a)^n, B*(u - b)^m*(v - b)^n, C*(u - c)^m*(v - c)^n} thomsen[a_,b_][u_,v_]:= {b*u/a + Sqrt[1+b^2]*Sinh[a*u]*Cos[a*v]/a^2, Sqrt[1 + b^2]*v/a + b*Cosh[a*u]*Sin[a*v]/a^2, Sinh[a*u]*Sin[a*v]/a^2} thomsen[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[thomsen[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; torus[a_,b_][u_,v_]:= {(a + b*Cos[v])*Cos[u], (a + b*Cos[v])*Sin[u], b*Sin[v]} torus[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[torus[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; torus[a_,b_,c_][u_,v_]:= {(a + b*Cos[v])*Cos[u], (a + b*Cos[v])*Sin[u], c*Sin[v]} torus[a_,b_,c_,d_][u_,v_]:= {(a + b*Cos[v])*Cos[u],(d + b*Cos[v])*Sin[u],c*Sin[v]} torus[a_,b_,c_,d_,e_][u_,v_]:= {(a +b*Cos[v])*Cos[u],(d + e*Cos[v])*Sin[u],c*Sin[v]} torusasym[pm_,a_][p_,q_]:= {(2*a*Cos[(p + q)/2]/(1 + Cosh[(p - q)/Sqrt[8]]^2)), (2*a*Sin[(p + q)/2]/(1 + Cosh[(p - q)/Sqrt[8]]^2)), pm*(2*a*Cosh[(p - q)/Sqrt[8]]/(1 + Cosh[(p - q)/Sqrt[8]]^2))} torusasym[pm_,a_][pmin_,pmax_,qmin_,qmax_,opt___]:= pplot3d[torusasym[pm,a][p,q],{p,pmin,pmax},{q,qmin,qmax}, opt]; torusbis[pm_,a_,b_][r_,theta_]:={r*Cos[theta],r*Sin[theta], pm*Sqrt[b^2 - (r - a)^2]} torusbis[pm_,a_,b_][rmin_,rmax_,thetamin_,thetamax_,opt___]:= pplot3d[torusbis[pm,a,b][r,theta],{r,rmin,rmax},{theta,thetamin,thetamax}, opt,PlotPoints->{10,33}]; twiflat[pm_,a_,c_][sl_][u_,v_]:= {v*Cos[u],v*Sin[u], sl*u + ArcSin[c/(v*a)]*c + Sqrt[v^2*a^2 - c^2]*pm} twiflat[pm_,a_,c_][sl_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[twiflat[pm,a,c][sl][u,v],{u,umin,umax},{v,vmin,vmax}, opt,PlotPoints->{50,15}]; twisphere[a_,b_][u_,v_]:= {a*Cos[u]*Cos[v], a*Sin[u]*Cos[v], a*Sin[v] + b*u} twisphere[a_,b_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[twisphere[a,b][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; veronese[a_][u_,v_]:= {u,v,u^2,u v,v^2} wallis[a_,b_,c_][u_,v_]:= {v*Cos[u],v*Sin[u], c*Sqrt[a^2 - b^2*Cos[u]^2]} wallis[a_,b_,c_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[wallis[a,b,c][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; whitneyumbrella[u_,v_]:= {u*v,u,v^2} whitneyumbrella[umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[whitneyumbrella[u,v],{u,umin,umax},{v,vmin,vmax}, opt]; wrinkles[a_][u_,v_]:= {u,v,a*(u/v + v/u)} wrinkles[a_][umin_,umax_,vmin_,vmax_,opt___]:= pplot3d[wrinkles[a][u,v],{u,umin,umax},{v,vmin,vmax}, opt]; (* Implicitly Defined Surfaces *) cossurfaceimplicit[a_][x_,y_,z_]:= (z - a*x*y)^2 - a^2(1 - x^2)*(1 - y^2) crosscapimplicit[a_,b_][x_,y_,z_]:= (a*x^2 + b*y^2)*(x^2 + y^2 + z^2) - 2*z*(x^2 + y^2) ellipsoidimplicit[a_,b_,c_][x_,y_,z_]:= (x/a)^2 + (y/b)^2 + (z/c)^2 - 1 ellipticparaboloidimplicit[a_,b_,c_][x_,y_,z_]:= (x/a)^2 + (y/b)^2 - c*z equihom1implicit[x_,y_,z_]:= x*y*z - 1 equihom2implicit[x_,y_,z_]:= (x^2 + y^2)*z - 1 equihom3implicit[x_,y_,z_]:= x^2*(z - y^2)^3 - 1 equihom4implicit[x_,y_,z_]:= x^2*(z - y^2)^3 + 1 equihom5implicit[x_,y_,z_]:= z - x*y - x^3/3 equihom6implicit[x_,y_,z_]:= z - x*y + Log[x] goursatimplicit[a_,b_,c_][x_,y_,z_]:= x^4 + y^4 + z^4 + a*(x^2 + y^2 + z^2)^2 + b*(x^2 + y^2 + z^2) + c hyperboloidimplicit[a_,b_,c_][x_,y_,z_]:= (x/a)^2 + (y/b)^2 - (z/c)^2 - 1 hy2sheetimplicit[a_,b_,c_][x_,y_,z_]:= (x/a)^2 - (y/b)^2 - (z/c)^2 - 1 hyperbolicparaboloidimplicit[a_,b_,c_][x_,y_,z_]:= (x/a)^2 - (y/b)^2 - c*z kazoolaimplicit[a_,b_,c_,d_][x_,y_,z_]:= d + c*x^2y^2z^2 - a*(x^2 + y^2 + z^2) - b*(x^4 + y^4 + z^4) kummerimplicit[x_,y_,z_]:= x^4 + y^4 + z^4 - (y^2*z^2 + z^2*x^2 + x^2*y^2) - (x^2 + y^2 + z^2) + 1 scherkimplicit[a_][x_,y_,z_]:= E^(a*z)*Cos[a*x] - Cos[a*y] scherkimplicit[a_,phi_][x_,y_,z_]:= Tan[x/(a*Cos[phi])]*Tan[y/(a*Sin[phi])] - Tanh[z/a] scherk5implicit[x_,y_,z_]:= Sinh[x]*Sinh[y] - Sin[z] sinsurfaceimplicit[a_][x_,y_,z_]:= 4*x^2*y^2*(a^2 - z^2) - a^2*(x^2 + y^2 - z^2)^2 sphereimplicit[a_][x_,y_,z_]:= x^2 + y^2 + z^2 - a^2 sphereimplicit[n_,a_][x_,y_,z_]:= x^(2*n) + y^(2*n) + z^(2*n) - a^(2*n) torusimplicit[a_,b_][x_,y_,z_]:= z^2 + (Sqrt[x^2 + y^2] - a)^2 - b^2 twocuspsimplicit[x_,y_,z_]:= (z - 1)^2*(x^2 - z^2) - (x^2 - z)^2 - y^4 - y^2*(2*x^2 + z^2 + 2*z - 1) (* Drum Plots *) circularmembrane[m_,n_,t_][r_,theta_]:= Flatten[{r*Cos[theta],r*Sin[theta], BesselJ[m,r*BesselJZeros[m,{n,n}]]* Cos[m*theta]* Cos[t*BesselJZeros[m,{n,n}]]}] (* circularmembrane[m_,n_,t_][r_,theta_]:= {r*Cos[theta],r*Sin[theta], BesselJ[m,r*If[ListQ[BesselJZeros[m,{n,n}]]==True, First[BesselJZeros[m,{n,n}]],BesselJZeros[m,{n,n}]]]* Cos[m*theta]* Cos[t*If[ListQ[BesselJZeros[m,{n,n}]==True], First[BesselJZeros[m,{n,n}]],BesselJZeros[m,{n,n}]]]} *) circularmembraneplot[m_,n_,t_,opts___]:= Module[{zzz}, zzz=circularmembrane[m,n,t][r,theta]; ParametricPlot3D[Evaluate[zzz], {r,0,1},{theta,0,2*Pi},opts]] circularmembranemovie[m_,n_,{t_,tmin_,tmax_,numf_}, opts___]:= Do[Module[{zzz}, zzz=circularmembrane[m,n,t][r,theta]; ParametricPlot3D[Evaluate[zzz], {r,0,1},{theta,0,2*Pi},opts]], {t,tmin,tmax,numf - 1}] squaremembrane[m_,n_,t_][u_,v_]:= {u,v,Sin[m*u]*Sin[n*v]*Cos[Sqrt[m^2 + n^2]*t]} squaremembraneplot[m_,n_,t_,opts___]:= ParametricPlot3D[Evaluate[ squaremembrane[m,n,t][u,v]], {u,0,Pi},{v,0,Pi},opts] squaremembranemovie[m_,n_,{t_,tmin_,tmax_,numf_}, opts___]:= Do[ParametricPlot3D[Evaluate[ squaremembrane[m,n,t][u,v]], {u,0,Pi},{v,0,Pi},opts], {t,tmin,tmax,numf - 1}] (* Minimal Curves *) astroidmincurve[a_][z_]:= {a*Cos[z]^3,a*Sin[z]^3, -3*I/4*a*Cos[2*z]} bourmincurve[m_][z_]:= {z^(m - 1)/(m - 1) - z^(m + 1)/(m + 1), I*(z^(m - 1)/(m - 1) + z^(m + 1)/(m + 1)),2*z^m/m} bourmincurve[m_,n_][z_]:= {z^(m - 1)/(m - 1) - z^(m + 2*n - 1)/(m + 2*n - 1), I*(z^(m - 1)/(m - 1) + z^(m + 2*n - 1)/(m + 2*n - 1)), 2*z^(m + n - 1)/(m + n - 1)} cardioidmincurve[a_][z_]:= {2*a*Cos[z]*(1 + Cos[z]), 2*a*(1 + Cos[z])*Sin[z],8*I*a*Sin[z/2]} catalanmincurve[a_][z_]:= {a*z - a*Sin[z],a - a*Cos[z], -4*I*a*Cos[z/2] + 4*I*a} catenoidmincurve[a_][z_]:= {a*Cosh[z/a],z,-I*a*Sinh[z/a]} (* different: harmonictoanalytic[catenoid[a]][z] *) cayleysexticmincurve[a_][z_]:= {4*a*Cos[z/2]^4*(-1 + 2*Cos[z]), 4*a*Cos[z/2]^3*Sin[3*z/2],3*I*a*(z + Sin[z])} circleinvolutemincurve[n_,a_][z_]:= Module[{tmp1,tmp2,tmp3}, tmp1=E^(I*tt)Normal[Series[E^(-I*tt),{tt,0,n}]]; tmp2=a*ComplexExpand[{Re[tmp1],Im[tmp1]}]; tmp3=tmp2 /. tt->z; Append[tmp3,I*a*z^(n + 1)/(n + 1)!]] cissoidmincurve[a_][z_]:= {2*a*z^2/(1 + z^2), 2*a*z^3/(1 + z^2),2*I*a*(Sqrt[4 + z^2] - Sqrt[3]*ArcTanh[Sqrt[4 + z^2]/Sqrt[3]])} clothoidmincurve[a_][z_]:= {a*Sqrt[Pi]*FresnelS[z/Sqrt[Pi]], a*Sqrt[Pi]*FresnelC[z/Sqrt[Pi]],I*a*z} cnchyprofilemincurve[pm_,a_,b_][z_]:= {pm*b*Cosh[z/a],-I*a*EllipticE[I*z/a,-b^2/a^2],I*z} costamincurve[z_]:= {(1/2)*(-WeierstrassZeta[z,{189.07272,0}] + Pi*(z - I) + (1 + I)*0.35889 + 0.228473*(WeierstrassZeta[z - 1/2,{189.07272,0}] - WeierstrassZeta[z - I/2,{189.07272,0}])), (I/2)*(-WeierstrassZeta[z,{189.07272,0}] + Pi*(-z + 1) - (1 + I)*0.35889 - 0.228473*(WeierstrassZeta[z - 1/2,{189.07272,0}] - WeierstrassZeta[z - I/2,{189.07272,0}])), Sqrt[2*Pi]/4*(Log[(WeierstrassP[z,{189.07272,0}] - 6.87519)/ (WeierstrassP[z,{189.07272,0}] + 6.87519)] - Pi*I)} cpcprofilemincurve[pm_,a_,b_][z_]:= {b*pm*Cos[z/a], a*EllipticE[z/a,b^2/a^2],I*z} deltoidinvolutemincurve[a_][z_]:= {(a/3)*(8*Cos[z/2] + 2*Cos[z] - Cos[2*z]), (a/3)*(-8*Sin[z/2] + 2*Sin[z] + Sin[2*z]), (4*a*I/9)*(3*z - 2*Sin[3*z/2])} deltoidmincurve[a_][z_]:= {-a + 2*a*Cos[z]*(1 + Cos[z]), 2*a*(1 - Cos[z])*Sin[z],-8*(I/3)*a*Cos[3*z/2]} ellipsemincurve[a_,b_][z_]:= {a*Cos[z],b*Sin[z], I*b*EllipticE[z,-a^2/b^2]} ennepercatenoidmincurve[n_][z_]:= {1/z + z - 2*z^n/n - z^(2*n + 1)/(2*n + 1), I*(2*z^(n + 1) + 2*n^2*(z^2 - 1) + n*(-1 + z^2 + 4*z^(n + 1) + z^(2*(n + 1))))/(n*(2*n + 1)*z), 2*z^(n + 1)/(n + 1) + 2*Log[z]} ennepercatenoidmincurve[n_,a_,b_][z_]:= {a^2/z + z - 2*a*b*z^n/n - b^2*z^(2*n + 1)/(2*n + 1), I*(-a^2*n*(2*n + 1) + 2*a*b*(2*n + 1)*z^(n + 1) + n*z^2*(1 + 2*n + b^2*z^(2*n)))/(n*(2*n + 1)*z), 2*b*z^(n + 1)/(n + 1) + 2*a*Log[z]} ennepermincurve[n_][z_]:= {z - z^(2*n + 1)/(2*n + 1), I*(z + z^(2*n + 1)/(2*n + 1)),2*z^(n + 1)/(n + 1)} epicycloidmincurve[a_,b_][z_]:= {(a + b)*Cos[z] - b*Cos[(a + b)*z/b], (a + b)*Sin[z] - b*Sin[(a + b)*z/b], -4*I*b*(a + b)*Cos[a*z/(2*b)]/a} hennebergmincurve[z_]:= {-8*Sinh[z]^3/3, 8*I/3 - 2*I*Cosh[z] - 2*I/3*Cosh[3*z],2*Cosh[2*z]} hyperbolamincurve[a_,b_][z_]:= {a*Cos[z],b*Sin[z], b*EllipticE[I*z + a^2/b^2]} hypocycloidinvolutemincurve[a_,b_][z_]:= {(a^2*Cos[z] - 3*a*b*Cos[z] + 2*b^2*Cos[z] - a*b*Cos[z - a*z/b] + 2*b^2*Cos[z - a*z/b] + 4*a*b*Cos[z - a*z/(2*b)] - 4*b^2*Cos[z - a*z/(2*b)])/a, (a^2*Sin[z] - 3*a*b*Sin[z] + 2*b^2*Sin[z] - a*b*Sin[z - a*z/b] + 2*b^2*Sin[z - a*z/b] + 4*a*b*Sin[z - a*z/(2*b)] - 4*b^2*Sin[z - a*z/(2*b)])/a, 2*I*(a^2 - 3*a*b + 2*b^2)*(a*z - 2*b*Sin[a*z/(2*b)])/a^2} hypocycloidmincurve[a_,b_][z_]:= {(a - b)*Cos[z] + b*Cos[(a - b)*z/b], (a - b)*Sin[z] - b*Sin[(a - b)*z/b], -4*I*(a - b)*b*Cos[a*z/(2*b)]/a} jorgemeeksmincurve[n_,a_][z_]:= {Integrate[jorgemeeksmincurveprime[n,a][zz][[1]],{zz,0,z}], Integrate[jorgemeeksmincurveprime[n,a][zz][[2]],{zz,0,z}], a*(1 + z^n)/(2*n*(1 - z^n))} jorgemeeksmincurve[2,a_][z_]:= {-I/4*a*Pi + (a/4)*Log[(z + 1)/(z - 1)], -I*a*z/(2*(z^2 - 1)),a*(1 + z^2)/(4*(1 - z^2))} jorgemeeksmincurve[3,a_][z_]:= {(a/18)*(4*I*Pi + 3*z/(1 + z + z^2) - 4*Log[z - 1] + 2*Log[1 + z + z^2]), -(I*a/54)*(2*Sqrt[3]*Pi + 3*(3*z*(z + 1) - 4*Sqrt[3]*(z^3 - 1)*ArcTan[(2*z + 1)/Sqrt[3]])/(z^3 - 1)), a*(z^3 + 1)/(6*(1 - z^3))} jorgemeeksmincurve[4,a_][z_]:= {3*I/16*a*Pi + (a*(2*z - 3*(1 + z^2)*Log[-1 + z] + 3*(1 + z^2)*Log[1 + z]))/(16*(1 + z^2)), -I*a*z/(8*(z^2 - 1)) + 3*I*a*ArcTan[z]/8, a*(1 + z^4)/(8*(1 - z^4))} jorgemeeksmincurveprime[n_,a_][z_]:= {(a*(1 - z^(2*n - 2)))/(2*(z^n - 1)^2), (a*I*(1 + z^(2*n - 2)))/(2*(z^n - 1)^2), a*z^(n - 1)/(z^n - 1)^2} lemniscatemincurve[a_][z_]:= {(a*Cos[z])/(1 + Sin[z]^2), (a*Cos[z]*Sin[z])/(1 + Sin[z]^2),I*a*EllipticF[z,- 1]} logmincurve[n_][z_]:= Module[{ii,nn,zz}, ii[nn_][zz_]:=Nest[Integrate[#,zz]&,1/zz,nn]; wei[#&,ii[n]][z]] logspiralmincurve[a_,b_][z_]:= {a*E^(b*z)*Cos[z], a*E^(b*z)*Sin[z],(I*a*Sqrt[1 + b^2]*E^(b*z))/b} nephroidmincurve[a_][z_]:= {a*(3*Cos[z] - Cos[3*z]), a*(3*Sin[z] - Sin[3*z]),-6*I*a*Cos[z]} nielsenspiralmincurve[a_][z_]:= {a*CosIntegral[z],a*SinIntegral[z],I*a*Log[z]} parabolamincurve[a_][z_]:= {2*a*z,a*z^2, I*a*(z*Sqrt[1 + z^2] + Log[z + Sqrt[1 + z^2]])} richmondmincurve[n_][z_]:= {-1/(2*z) - z^(2*n + 1)/(4*n + 2), -I/(2*z) + I*z^(2*n + 1)/(4*n + 2),z^n/n} rosemincurve[n_,a_][z_]:= {a*Cos[z]*Cos[n*z],a*Cos[n*z]*Sin[z], I*a*EllipticE[n*z,1 - n^2]/n} scherktowermincurveprime[n_][z_]:= {(1 - z^(2*n - 2))/(2*(1 + z^(2*n))), (I*(1 + z^(2*n - 2)))/(2*(1 + z^(2*n))), z^(n - 1)/(1 + z^(2*n))} scmincurve[z_]:= {z^2,z^3, I*(4/(27*z) + z/3)*Sqrt[4*z^2 + 9*z^4]} tractrixmincurve[a_][z_]:= {a*Sin[z], a*(Cos[z] + Log[Tan[z/2]]), I*a*(Log[Cos[z/2]] + Log[Sin[z/2]])} (* Surface Metrics *) ee[geopolar[f_]][u_,v_]:= 1 ff[geopolar[f_]][u_,v_]:= 0 gg[geopolar[f_]][u_,v_]:= f[u,v]^2 ee[liouville[f_,g_]][u_,v_]:= f[u] + g[v] ff[liouville[f_,g_]][u_,v_]:= 0 gg[liouville[f_,g_]][u_,v_]:= f[u] + g[v] ee[poincare[lambda_]][u_,v_]:= 1/(lambda*v)^2 ff[poincare[lambda_]][u_,v_]:= 0 gg[poincare[lambda_]][u_,v_]:= 1/(lambda*v)^2 ee[poincare[m_,n_,lambda_]][u_,v_]:= 1/(lambda*v)^m ff[poincare[m_,n_,lambda_]][u_,v_]:= 0 gg[poincare[m_,n_,lambda_]][u_,v_]:= 1/(lambda*v)^n ee[poindisk[lambda_]][u_,v_]:= 1/(1 - lambda^2*(u^2 + v^2)/4)^2 ff[poindisk[lambda_]][u_,v_]:= 0 gg[poindisk[lambda_]][u_,v_]:= 1/(1 - lambda^2*(u^2 + v^2)/4)^2 ee[schwarzschildplane[m_]][u_,v_]:= -(1 - 2*m/v) ff[schwarzschildplane[m_]][u_,v_]:= 0 gg[schwarzschildplane[m_]][u_,v_]:= 1/(1 - 2*m/v) ee[schwarzschildplane[m_,f_]][u_,v_]:= -(1 - 2*m/v + f[v]) ff[schwarzschildplane[m_,f_]][u_,v_]:= 0 gg[schwarzschildplane[m_,f_]][u_,v_]:= 1/(1 - 2*m/v + f[v]) End[] EndPackage[]