# Plot 3D image of function

I'm (very!) new to Mathematica, and trying to use it plot a set in $\mathbb{R}^3$. In particular, I want to plot the set

$$\big\{ (x,y,z) : (x,y,z) = \frac{1}{u^2+v^2+w^2}(vw,uw,uv) \text{ for some } (u,v,w) \in \mathbb{R}^3\setminus\{0\} \big\}.$$ This is just the image of function from $\mathbb{R}^3\setminus\{0\} \to \mathbb{R}^3$. I haven't been able to make any of the plot functions display this. Any advice would be greatly appreciated.

If it makes it easier, the set above is also $$\big\{ (x,y,z) : (x,y,z) = \frac{1}{u^2+v^2+w^2}(vw,uw,uv) \text{ for some } (u,v,w) \in \mathbb{S}^2 \big\}.$$ Alternatively, one could plot the three sets $$\big\{ (x,y,z) : (x,y,z) = \frac{1}{1+v^2+w^2}(vw,w,v) \text{ for some } (v,w) \in \mathbb{R}^2 \big\},$$ $$\big\{ (x,y,z) : (x,y,z) = \frac{1}{1 +u^2+w^2}(w,uw,u) \text{ for some } (u,w) \in \mathbb{R}^2 \big\},$$ $$\big\{ (x,y,z) : (x,y,z) = \frac{1}{1+u^2+v^2}(v,u,uv) \text{ for some } (u,v) \in \mathbb{R}^2 \big\}.$$

-

Here are a couple more ways.

1. Parametrize $\mathbb S^2$ with latitude and longitude:

With[{u = Cos[lat] Cos[lon], v = Cos[lat] Sin[lon], w = Sin[lat]},
ParametricPlot3D[{v w, u w, u v}/(u^2 + v^2 + w^2), {lat, -Pi/2, Pi/2}, {lon, -Pi, Pi}]]


2. Parametrize $\mathbb R^2$ compactly using the $\tan$ function:

With[{u = Tan[a], v = Tan[b]},
ParametricPlot3D[{v, u, u v}/(1 + u^2 + v^2), {a, -Pi/2, Pi/2}, {b, -Pi/2, Pi/2}]]


-
The function is in fact a function on ${\bf RP^2}$, so one can just use half the sphere, e.g. {lon, 0, Pi}. –  Michael E2 Oct 1 '13 at 20:23
With[{eqn = Eliminate[{x, y, z} == 1/(u^2 + v^2 + w^2) {v w, u w, u v}, {u, v, w}]},
ContourPlot3D[eqn, {x, -0.6, 0.6}, {y, -0.6, 0.6}, {z, -0.6, 0.6}]
]


-

We can choose a sample and and visualize it. First we create a grid of values in the 3D-room:

sample = Select[
Tuples[Range[-10, 10, 0.8], 3],
Norm[#] > 0.5 &];


Select is used to remove points that are too close to the singularity. Now the plotting is easy using ListPointPlot3D:

f[{u_, v_, w_}] := {v w, u w, u v}/Norm[{u, v, w}]^2
ListPointPlot3D[f /@ sample]


-
Here's a nice way to create your grid of values. Tuples[Range[-10, 10, 0.8], 3] Bonus: no need to Flatten –  RunnyKine Oct 1 '13 at 20:19
@RunnyKine I wanted something like that! Thank you. –  Pickett Oct 1 '13 at 20:25
Glad you like it. I use Tuples a lot. –  RunnyKine Oct 1 '13 at 20:38