Re: Re: 3D Plot
- To: mathgroup at smc.vnet.net
- Subject: [mg2389] Re: [mg2364] Re: [mg2302] 3D Plot
- From: Preston Nichols <nichols at godel.math.cmu.edu>
- Date: Tue, 31 Oct 1995 23:23:30 -0500
Hans Friedrich Steffani wishes to plot the image of the
vector-valued function of three variables
(x1(t1,t2,t3), x2(t1,t2,t3), x3(t1,t2,t3))
for 0<t1<t1max, 0<t2<t2max, 0<t3<t3max.
Richard Mercer's approach (copied below) will give the desired
result only if the boundary surfaces of the domain are mapped to the
boundary of the image of (x1(t1,t2,t3), x2(t1,t2,t3),
x3(t1,t2,t3)). In general, this does not happen, because the solid
region in the t-space might get "folded" into itself when it is
mapped into x-space, in such a way that boundary points are mapped
to the interior of the image solid. Even so, using ParametricPlot3D
as Richard describes might still provide useful information.
It is possible to test for this kind of "folding" using the
Jacobian, which is the determinant of the matrix of the partial
derivatives of the mapping. One way to compute the Jacobian is:
t = {t1,t2,t3};
x = {x1,x2,x3};
J = Det[Table[Evaluate[D[ x[[i]], t[[j]] ]], {i,3},{j,3}]]
If the Jacobian is nonzero for all points in the domain, "folding"
does not happen, and Richard Mercer's method will work nicely. If
the Jacobian is zero at some points, "folding" may occur, and at
least there will be a "crease" or "crimp" in the image.
Even as simple a mapping as
x[{t1,t2,t3}]] := {t1^2,t2^2,t3^2},
t1min = t2min = t3min = -1, t1max = t2max = t3max = 1,
will "fold".
I wouldn't be surprised if someone has written a package to deal
with this situation. I have some rough ideas of how such a package
might be built; if anyone is interested, let me know.
Preston Nichols
Department of Mathematics
Carnegie Mellon University
----------------------------------------------------------
Begin forwarded message:
>From: Richard Mercer <richard at seuss.math.wright.edu>
>To: mathgroup at smc.vnet.net
>Subject: [mg2364] Re: [mg2302] 3D Plot
>
> There is a vector
> (x1(t1,t2,t3), x2(t1,t2,t3), x3(t1,t2,t3))
> now I want
> to plot the 3D figure for
> 0<t1<t1max, 0<t2<t2max, 0<t3<t3max.
>
> How can this be done?
>
> Hans Friedrich Steffani
There is no command or graphics primitives for plotting "solid" 3-D
objects, only for plotting surfaces. So what you need to do is plot the
boundary surfaces of your object. As I understand it, they would be
the following six surfaces:
(x1(0,t2,t3), x2(0,t2,t3), x3(0,t2,t3));
0<t2<t2max, 0<t3<t3max
(x1(t1max,t2,t3), x2(t1max,t2,t3), x3(t1max,t2,t3));
0<t2<t2max, 0<t3<t3max
(x1(t1,0,t3), x2(t1,0,t3), x3(t1,0,t3));
0<t1<t1max, 0<t3<t3max
(x1(t1,t2max,t3), x2(t1,t2max,t3), x3(t1,t2max,t3));
0<t1<t1max, 0<t3<t3max
(x1(t1,t2,0), x2(t1,t2,0), x3(t1,t2,0));
0<t1<t1max, 0<t2<t2max
(x1(t1,t2, t3max), x2(t1,t2, t3max), x3(t1,t2, t3max));
0<t1<t1max, 0<t2<t2max
Each of these surfaces can be plotted using
ParametricPlot3D. Actually, you can plot them all in a single
ParametricPlot3D command, but I suggest you try them one at a time
first to make sure things are working out.
Richard Mercer