Re: Explicitly specifying the 3d viewing options (pan, rotate, etc.)
- To: mathgroup at smc.vnet.net
- Subject: [mg123263] Re: Explicitly specifying the 3d viewing options (pan, rotate, etc.)
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Tue, 29 Nov 2011 07:06:40 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Nice. Bobby On Mon, 28 Nov 2011 04:53:42 -0600, Chris Young <cy56 at comcast.net> wrote: > On 2011-10-04 05:40:20 +0000, Theo Moore said: > >> Hi, >> >> I'm looking for an easy way to specify the 3d viewing options that you >> can alter by clicking a 3d plot and dragging your mouse. For example, >> plot a graph using: >> >> Plot3D[Sin[x + y^2], {x, -3, 3}, {y, -2, 2}] >> >> And then click and rotate it (or click and zoom in/out, etc.). Is >> there a way to output the parameters which were used as I manually >> rotated it, so that one could duplicate this (now-changed) graphic >> from an explicit command? > > > All you need is to add the ViewPoint option, which takes a point in > x,y,z coordinates. I think the most convenient way to do it is to use > spherical coordinates. > > Pictures are at http://home.comcast.net/~cy56/ViewPoint.tiff and > http://home.comcast.net/~cy56/ViewPoint.png and a notebook file is at > http://home.comcast.net/~cy56/ViewPoint.nb. > > Below, the \[Function] is actually the "RightTeeArrow" symbol for pure > functions. See the "Functions" help page. I was trying to get a mesh > consisting of Villarceau circles or "Clifford Parallels" for the torus. > What I've got in fact produces two crossing Villarceau circles. > > I think the "tee-arrow" notation for pure functions is helpful as a > reminder just what parameters are available for each mesh function, and > that you can define as many of the mesh functions as you want whatever > combination of parameters in each one as you want to. > > torus[c_, a_, \[Theta]_, \[Phi]_] := ( { > {Cos[\[Theta]], -Sin[\[Theta]], 0}, > {Sin[\[Theta]], Cos[\[Theta]], 0}, > {0, 0, 1} > } ).((( { > {Cos[\[Phi]], 0, -Sin[\[Phi]]}, > {0, 1, 0}, > {Sin[\[Phi]], 0, Cos[\[Phi]]} > } ).( { > {a}, > {0}, > {0} > } ) + ( { > {c}, > {0}, > {0} > } ))) > > > Manipulate[ > Show[ > Graphics3D[ > { > {Gray, Sphere[{0, 0, 0}, sphereR]}, > {Red, Sphere[{c, 0, 0}, sphereR]} > } > ], > ParametricPlot3D[ > torus[c, a, u, v], {u, 0, 2 \[Pi]}, {v, 0, 2 \[Pi]}, > MeshFunctions -> > { > {x, y, z, \[Theta], \[Phi]} \[Function] x^2 + (y - a)^2 + c^2 > (* {x,y,z,u,v}\[Function]v-y *) > }, > Mesh -> mesh, > MeshStyle -> Tube[tubeR], > PlotStyle -> {Orange, Opacity[opac]}, > PlotPoints -> plotPts > ] , > > Axes -> True, > AxesLabel -> {"x", "y", "z"}, > PlotRange -> {{-4, 4}, {-4, 4}, {-3, 3}}, > PlotRangePadding -> 0.1, > BoxRatios -> {8, 8, 6}, > ViewPoint -> > Dynamic[ > { > viewR Cos[view\[Theta]] Sin[view\[Phi]], > viewR Sin[view\[Theta]] Sin[view\[Phi]], > viewR Cos[view\[Phi]] > } > ] > ], > {{c, 3}, 0, 4}, > {{a, 1}, 0, 3}, > {{sphereR, 0.1}, 0, 0.5}, > {{tubeR, 0.05}, 0, 0.5}, > {{opac, 0.5}, 0, 1}, > {{mesh, 2}, 0, 16, 1}, > {{plotPts, 100}, 0, 100, 1}, > {{viewR, 100}, 0, 100}, > {{view\[Theta], 0 \[Degree]}, 0 \[Degree], 360 \[Degree]}, > {{view\[Phi], 0 \[Degree]}, 0 \[Degree], 180 \[Degree]} > ] > > -- DrMajorBob at yahoo.com