MathGroup Archive 1999

[Date Index] [Thread Index] [Author Index]

Search the Archive

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

  • To: mathgroup at
  • Subject: [mg19736] 3DPlots... Also, generalizations to nDPlots, n>3
  • Date: Mon, 13 Sep 1999 02:41:03 -0400
  • Sender: owner-wri-mathgroup at

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...)

  • Prev by Date: Sign Query
  • Next by Date: Re: contourplots
  • Previous by thread: Re: Sign Query
  • Next by thread: RE: 3DPlots... Also, generalizations to nDPlots, n>3