Re: Explicitly specifying the 3d viewing options (pan, rotate, etc.)

*To*: mathgroup at smc.vnet.net*Subject*: [mg123235] Re: Explicitly specifying the 3d viewing options (pan, rotate, etc.)*From*: Chris Young <cy56 at comcast.net>*Date*: Mon, 28 Nov 2011 05:53:42 -0500 (EST)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*References*: <j6e684$ke8$1@smc.vnet.net>

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]} ]