Re: Fancy 3d plotting in Mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg59968] Re: [mg59850] Fancy 3d plotting in Mathematica
- From: Zhengji Li <zhengji.li at gmail.com>
- Date: Fri, 26 Aug 2005 04:54:53 -0400 (EDT)
- References: <200508241030.GAA11936@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Here is my code showing how to combine a 2D graphic with a 3D graphic.
This gives what you need ?
Plot3DPlus[5Sin[Sqrt[
x*x + y*y]]/Sqrt[x*x + y*y], {x, -10, 10}, {
y, -10, 10}, Lighting -> False,
ColorFunction -> Hue, PlotPoints -> 30, Post2DFunction ->
ContourGraphics, Post2DPosition -> Below, AspectRatio -> 1];
To get exactly what you need, please see FullGraphics.
Post2DFunction::usage = "";
Post2DPosition::usage = "";
Above::usage = "";
Below::usage = "";
SubPlotOffset = 2;
Options[Plot3DPlus] = {
Post2DFunction -> ContourGraphics, Post2DPosition -> Below};
Plot3DPlus[f_, xvar_, yvar_, opts___] := Module[
{g, pr, data, fun, pos, res, zmin, zmax, z, scalez},
Point2Dto3D[pt : {x_, y_, ___}] := {x, y, z};
Point2Dto3D[Scaled[x_, y_, ___]] := Scaled[x, y, scalez];
fun = Post2DFunction /. Flatten[{opts}~Join~Options[Plot3DPlus]];
pos = Post2DPosition /. Flatten[{opts}~Join~Options[Plot3DPlus]];
g = Plot3D[f, xvar, yvar,
DisplayFunction -> Identity, Evaluate@DeleteCases[Flatten@{opts},
Rule[Post2DFunction, _] | Rule[Post2DPosition, _]]];
pr = PlotRange /. AbsoluteOptions[g, PlotRange];
{zmin, zmax} = pr[[3]];
If[pos === Below,
z = zmin - SubPlotOffset(zmax - zmin); zscale = 0,
z = zmax + SubPlotOffset(zmax - zmin); zscale = 1
];
data = Flatten[Graphics[fun[g]][[1]]];
data = DeleteCases[
data, _Rectangle | _Circle | _Disk | _Raster | _RasterArray];
data = (If[MemberQ[{Line, Polygon, Point},
Head@#], (Head@#)[Function[pt, Point2Dto3D[pt]] /@ #[[
1]]], #]) & /@ data;
res = {g, Graphics3D[data, Lighting -> False]};
Show[res, DisplayFunction -> $DisplayFunction];
res
];
--
Li Zhengji
-------------------------------------------------------------
If all you have is a hammer, everything is a nail.
-------------------------------------------------------------
- References:
- Fancy 3d plotting in Mathematica
- From: mike_in_england2000@yahoo.co.uk
- Fancy 3d plotting in Mathematica