MathGroup Archive 1997

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

Search the Archive

Re: Re: Plot3D with only x or y mesh?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg9696] Re: [mg9636] Re: Plot3D with only x or y mesh?
  • From: Allan Hayes <hay at haystack.demon.co.uk>
  • Date: Fri, 21 Nov 1997 01:31:35 -0500
  • Sender: owner-wri-mathgroup at wolfram.com

Xah" <xah at best.com>
[mg9636] Re: Plot3D with only x or y mesh? writes

> In article <64e898$qgn at smc.vnet.net>, siegman at ee.stanford.edu  
(AES) >wrote:
>>Can one make Plot3D plots with only x mesh lines, or only y mesh  
>>lines?
>
>Not with build-in functions or options, but you can do it easily
>otherwise. Here's a solution.
[solution copied below line ********************]

Here is another way: it has the disadvantage that for this purpose  
lines are repeated and are in segments, but it seems quite flexible  
and preserves the options of the original Plot3D (apart from   altering
the mesh lines).

plt =
Plot3D[Sin[x*y],{x,0,Pi},{y,0,Pi},PlotPoints->{11,11},Mesh->False];

gr = Graphics3D[plt];
msh = gr/.Polygon[{a_,b_,c_,d_}]->
		{Hue[.0],Line[{a,b}],Line[{c,d}],
		 Hue[.7],Line[{b,c}],Line[{d,a}]
		};
Show[plt,msh]

We can alter the code for msh to produce various results.

Allan Hayes
hay at haystack.demon.co.uk
http://www.haystack.demon.co.uk/training.html voice:+44 (0)116 2714198
fax: +44 (0)116 2718642
Leicester,  UK


******************************************************************
data=N at Table[{x,y,Sin[x*y]},{x,0,Pi,Pi/10},{y,0,Pi,Pi/10}];
xGrid=Line/@data;
yGrid=Line/@(Transpose at data);

Show[Graphics3D[{{Hue[0],xGrid},{Hue[.7],yGrid}}],AspectRatio->Automatic,
  Axes->True,BoxRatios->{1,1,1/Pi}];

You can get more elaborate by adding the surface

surface=First@
    Graphics3D@
      Plot3D[Sin[x*y],{x,0,Pi},{y,0,Pi},PlotPoints->{11,11},
        DisplayFunction->Identity];
Show[Graphics3D[{
      AbsoluteThickness[1],{Hue[0],xGrid},{Hue[.7],yGrid},{EdgeForm[],
        surface/.Polygon[pts_]:>
            Polygon at Module[{centroid=Plus@@pts/Length at pts},
                Map[((#-centroid)*.5+centroid)&,pts]]}}],
  AspectRatio->Automatic,Axes->True,BoxRatios->{1,1,1/Pi}];

Here's a quick explaination on the surface bit. First you use Plot3D to
get the data. Because Plot3D uses a matrix to represent the surface,
you need to convert it to Polygon, and this is done by adding the head
Graphics3D. The command *First* is used to extract the first part of
the graphics object, because the second part is a list of options such
as Axes->True, which we don't need here.

Now we display the xGrid, yGrid, and surface together in Show. For the
surface, we shrink each Polygon a bit so it falls inside the grid
nicely. This is done by calculating vectors of the centroid to the
vertxes of each polygon, scale it to half, and form the vertexes again.

 Xah, xah at best.com

http://www.best.com/~xah/SpecialPlaneCurves_dir/MathematicaPackages_dir/MathematicaPackages
.html
 Mountain View, CA, USA



  • Prev by Date: ListPlot command
  • Next by Date: Re: Re: [mg9568}Color Printing -- Thanks
  • Previous by thread: Re: Plot3D with only x or y mesh?
  • Next by thread: Wente's Torus