Re: Raising Contour Plot Graphics to 3D
- To: mathgroup at smc.vnet.net
- Subject: [mg37299] Re: Raising Contour Plot Graphics to 3D
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Tue, 22 Oct 2002 04:47:35 -0400 (EDT)
- References: <ap0821$c6n$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
David, The following works for your example, but it does not always work (for example with ContourPlot[x*y, {x, -3, 0}, {y, 0, 3}, ColorFunction -> Hue]) cplot = ContourPlot[x*y, {x, -3, 3}, {y, -3, 3}, ColorFunction -> Hue]; cgraphics3d = First[Graphics[SetPrecision[cplot, Infinity]]] /. {(x_)?NumericQ, (y_)?NumericQ} -> {2*x + y, -x + 2*y, -1.5*x + y}; Show[Show[Graphics3D[{SetPrecision[cgraphics3d, Infinity]}, PolygonIntersections -> False, ImageSize -> 450], Lighting -> False], Lighting -> False] -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "David Park" <djmp at earthlink.net> wrote in message news:ap0821$c6n$1 at smc.vnet.net... > Dear MathGroup, > > I would like to raise the graphics generated by a contour plot to 3D. But > there is a problem. Here is a simple example. Here I make a simple contour > plot. I then have two cases of converting the graphics to 3D. In the first > case I just keep the surface in the xy-plane, simply adding a 0 z > coordinate. In the second case I do a simple affine transformation. In both > cases some of the contour regions are improperly rendered. Notice that the > ContourGraphics has to be first converted to Graphics. > > cplot = ContourPlot[x y, {x, -3, 3}, {y, -3, 3}, ColorFunction -> Hue]; > > cgraphics3d = > First[Graphics[cplot]] /. {x_?NumericQ, y_?NumericQ} -> {x, y, 0}; > > cgraphics3d = > First[Graphics[cplot]] /. {x_?NumericQ, > y_?NumericQ} -> {2x + y, -x + 2y, -1.5x + y}; > > Show[Graphics3D[ > {cgraphics3d}, > Lighting -> False, > ImageSize -> 450]]; > > The reason that this problem occurs is that Mathematica does not draw > nonintersecting Polygons for each region, but instead will overlay smaller > regions on top of larger regions. If we look at the Polygons that > ContourPlot produces, after being converted to Graphics, we see that each > one goes to a corner of plot domain. > > Cases[First[Graphics[cplot]], _Polygon, Infinity] > > The result is that when the graphics are converted to 3D, with slight > numerical errors, perhaps in the rendering, some of the Polygons can > interlace and produce an incorrect plot. > > Is there any remedy for this problem? > > David Park > djmp at earthlink.net > http://home.earthlink.net/~djmp/ > >