Re: Interactive settings for ParamPlot3D. Mesh not quite working.
- To: mathgroup at smc.vnet.net
- Subject: [mg121499] Re: Interactive settings for ParamPlot3D. Mesh not quite working.
- From: Heike Gramberg <heike.gramberg at gmail.com>
- Date: Sun, 18 Sep 2011 04:08:12 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201109160950.FAA12506@smc.vnet.net>
Instead of changing the Mesh specifications, you could change the MeshFunctions to indicate which mesh lines you want, e.g. saddleParamPlot3[opacity_, xBnds_, yBnds_, zBnds_, drawXMesh_, drawYMesh_, drawZMesh_] := Module[{ meshf = Pick[{#1 &, #2 &, #3 &}, {drawXMesh, drawYMesh, drawZMesh}, True], meshSpecs = {Range[-xBnds, xBnds], Range[-yBnds, yBnds], Range[-zBnds, zBnds]}}, ParametricPlot3D[ Flatten[{{u}, {v}, {u v}}], {u, -xBnds, xBnds}, {v, -xBnds, xBnds}, PlotRange -> {{-xBnds, xBnds}, {-yBnds, yBnds}, {-zBnds, zBnds}}, BoxRatios -> {xBnds, yBnds, zBnds}, SphericalRegion -> True, FaceGrids -> {{{1, 0, 0}, {Range[-xBnds, xBnds], Range[-zBnds, zBnds]}}, {{0, 1, 0}, {Range[-yBnds, yBnds], Range[-zBnds, zBnds]}}, {{0, 0, 1}, {Range[-xBnds, xBnds], Range[-yBnds, yBnds]}}}, MeshFunctions -> meshf, Mesh -> meshSpecs, BoundaryStyle -> Gray, AxesLabel -> {"x", "y", "z"}, PlotStyle -> Opacity[opacity], ColorFunctionScaling -> False, ColorFunction -> (Hue[0.35 (#3 + 4)/8] &)] /. Line[pts_, opts___] :> {Gray, Tube[pts, 0.03, opts]}] Heike On 16 Sep 2011, at 11:50, Christopher O. Young wrote: > I'm trying to make a template for interactive graphing with the settings I > like, and controls to change the bounding box, etc. Everything is working > except that I'm not able to set the mesh correctly. Checking or unchecking > one of the boxes causes _all_ the mesh to be toggled off, not just one of > the mesh specifications. I think I'm constructing the list of specifications > according to the Help documentation. I put in and empty list for the mesh > function I don't want any mesh for. > > Do I need to make this a Dynamic module? I don't see why, since I'm passing > in the value via the drawXMesh, drawYMesh, and drawZMesh arguments to > saddleParamPlot3. > > Thanks for any help. > > Chris Young > cy56 at comcast.net > > > saddleParamPlot3[ > opacity_, > xBnds_, yBnds_, zBnds_, > drawXMesh_, drawYMesh_, drawZMesh_ > ] := > Module[ > { > meshSpecs = > { > If[drawXMesh, Range[-xBnds, xBnds], {}], > If[drawYMesh, Range[-yBnds, yBnds], {}], > If[drawZMesh, Range[-zBnds, zBnds], {}] > } > > },(* Specifications for the mesh; i.e., in which directions. *) > > Print["Mesh specs are: ", meshSpecs]; > > ParametricPlot3D[ > Flatten[ { > {u}, > {v}, > {u v} > } ], > > {u, -xBnds, xBnds}, > {v, -xBnds, xBnds}, > > PlotRange -> {{-xBnds, xBnds}, {-yBnds, yBnds}, {-zBnds, zBnds}}, > BoxRatios -> {xBnds, yBnds, zBnds}, > SphericalRegion -> True, > > FaceGrids -> > { > { > {1, 0, 0}, {Range[-xBnds, xBnds], Range[-zBnds, zBnds]} > }, > { > {0, 1, 0}, {Range[-yBnds, yBnds], Range[-zBnds, zBnds]} > }, > { > {0, 0, 1}, {Range[-xBnds, xBnds], Range[-yBnds, yBnds]} > } > }, > > MeshFunctions -> {#1 &, #2 &, #3 &}, > Mesh -> meshSpecs, > > BoundaryStyle -> Gray, > AxesLabel -> {"x", "y", "z"}, > PlotStyle -> Opacity[opacity], > ColorFunctionScaling -> False, > ColorFunction -> (Hue[0.35 (#3 + 4)/8 ] &) > ] /. Line[pts_, opts___] :> {Gray, Tube[pts, 0.03, opts]} > ] > > > Manipulate[ > saddleParamPlot3[opac, xBnds, yBnds, zBnds, drawXMesh, drawYMesh, > drawZMesh], > > {{opac, 0.5, "Opacity"}, 0, 1} , > {{xBnds, 4, "x bounds"}, 0, 4, 1} , > {{yBnds, 4, "y bounds"}, 0, 4, 1} , > {{zBnds, 4, "z bounds"}, 0, 4, 1} , > {{drawXMesh, True, "x mesh"}, {True, False}}, > {{drawYMesh, True, "y mesh"}, {True, False}}, > {{drawZMesh, True, "z mesh"}, {True, False}} > ] > >
- References:
- Interactive settings for ParamPlot3D. Mesh not quite working.
- From: "Christopher O. Young" <cy56@comcast.net>
- Interactive settings for ParamPlot3D. Mesh not quite working.