3DPlots... Also, generalizations to nDPlots, n>3

*To*: mathgroup at smc.vnet.net*Subject*: [mg19736] 3DPlots... Also, generalizations to nDPlots, n>3*From*: "Kai G. Gauer" <gauer at sk.sympatico.ca>*Date*: Mon, 13 Sep 1999 02:41:03 -0400*Sender*: owner-wri-mathgroup at wolfram.com

I am one of those students who is considering an upgrade from Mathematica 3 -> Mathematica 4. One of the options that I rely on in Mathematica a lot is its supposed compatibility in combining different types of plots. For instance, when I Plot3D a surface, the output comes complete with boxed divisions along the surface. This can be polished up to almost any degree of precision, but, even after the lines which justify the boundaries of the faces ("bends") of the surface are removed (ie no longer black), the output still gives the same facet approximations. Say that instead of wanting to tile the surface with rectangles, we want to tile with n rhombuses (the "sizes/shapes" of which do not change by > epsilon globally in the interval in question). Or, let's say that we wish to plot any one set of (maybe infinitely many) geodesic lines along a minimal surface. However, let us also assume that we do not know which surface we would be wanting to plot, but that we do want the option of laying down exactly n geodesics down until later on. Also, instead of placing the bends of the surface at the default setting of rectangles, how can we make the only bends occur on those lines which are also geodesics? My preference would be to have some a function which could cover most of this stuff by just changing f(w,x,y,z,t,..,(other parameters)) (where I'd want to create a 4-D function that varies with time, t and w=(some arbitrary constant)) ((w,x,y,z) would be responsible for mapping from 4D -> (x,y,z), or better yet, have a 4D ->2D, 4D->1D, etc all built right in! The extra values such as w could simply be called constants, (or perhaps functions of x, y, z only!)) to create an Animate[ListImplicitPlot3D[], Options-> {geodesics-> f(n, (some sort of curve/surface equation, depending on whether we are talking about a surface/curve, respectively), (a curve that can be varied with respect to colouring as, say, a t parameter causes that curve to become "elongated" in x, y, z), etc] that works with both curves and surfaces at the same without worrying about how we type it in (given that the author knows that he will be dealing with a set of curves or surfaces (or both, in which case, we just list the curve sets before the surfaces) beforehand. Optional parameters such as w, t could later be turned off outside the Animate function or have other options such as n vary as the number of PlotPoints increases and how the edges are sketched. ImplicitPlot seems to have eliminated the problem of plotting shapes such as ellipses on 2D (where vertical and horizontal tangents are guaranteed to occur, even though we as mathematiians all know that the curve actually does behave "nicely"); I do not see why those WRI programmers wouldn't have just simply written any one plot function which could be varied by parameters instead of requiring a necessary switch from ImplicitPlot to Plot or from SurfacePlot to 3DCurvePlot when attempts to combine plots are needed. That way, we would simply have to overload one simple plot command as a combination of the rest, calling on whichever functions as necessary. ie when I go for coffee and leave Mathematica compiling for two hours in plot 3D, I would prefer to only have to come home, type one button and have all of the 2D cut planes or 1D normed vectors through the point {x,y,z} and an orthonormal basis pointing in some direction (possibly with respect to the tangent at {x,y,z}). Instead, Mathematica would prefer that I type things in one by one, constantly looking through the help browser to get "proper notaion" BEFORE I get to build in further options. Has anyone attempted to generalize (version 3) those codings of plot, etc all in to one big package? How well documented is the code (any better than the documentation supplied with ListPlot3D)? In short, I don't really want to have to rewrite a complicated PlotND function the way that WRI would have had to done to perfect Plot's functioning. If there are ways of slowly building up a function, PlotND, I would appreciate seeing some generalized and flexible code (or, at least a recommended approach to start at). ie not code that only works to show off for one or two classes of functions. What about plotting only three axes lines through an arbitrary point for Plot3D (instead of the bounding box that comes along with 3D surfaces... my preference would be to leave the bounding box as a nice cube shape with, say, light grey edges)? Another idea of mine is to take a complex valued bijective function, f:X->Y;g=1/f (g:Y->X only, where X,Y are predefined subsets of C (complex plane). Note: X need not equal Y and need not be all of C, etc) and plot not only the complex plane subset values for X, but also for a (hopefully minimized range) or codomain,Y. ie let the x values come from n (3+5i) (or, perhaps (a+ib) so that aa+bb=<1, a,b in Reals), where n might be restricted to all (and only all) of the positive rationals. Next, take a function f(x) = R(x) + i I(x), call x = Re(x) + i Im(x) and say that we might wish to plot Re vs R, Re vs I, Im vs R, and Im vs I, together with our domain and codomain spaces. This could also be done for 3space and higher; I leave it to you to generalize to more and more dimensions if interested. Once again though, my question is, how can we talk Mathematica in to doing all of the optional work at first, set out a plot, go for coffee, come home (and from here on we should assume that nothing has crashed the system!) and ask Mathematica to do these "simple" tasks of generalizations of complex-valued differential geometry theory which were mentioned previously?!!? I would hate to permanently alter Mathematica's internal, hidden coding as little as possible (since i. most these experimentations with the options are experimental. ii. I'm not totally certain that Mathematica would like my new multiplication styles: ie would Mathematica start to go in to a huge, irreversible panic (and perhaps later possibly locking me right out of my already limited access to its source code) if I accidently gave it a non-analytic function, f, above, etc). Instead, I'd rather just build one nice larger and modified function that does not make the standard plot functions depend on its proper operation. I know that WRI has published numerous books on many of these options. However, I haven't really found any one single series of books that goes this in-depth in to the code design. Maybe the U of Regina's library is too small to find the graphics gems bible of mathematica code that I am looking for..... I'd prefer to hear from people and their references by email or net resources, since I do not believe that the university has continued to carry its subscription of the mathematica journal. Thanks for any help that anyone is able to provide. (by the way, have those guys from WRI finally heard our callings and built any better versions of the concepts of plot, metric space, square root, function domain and inequality manipulation into version 4? Maybe they can talk me in to a sale...)