1
$\begingroup$

I would like to create a region defined by the volume inside (or outside) a surface of revolution, and am struggling with understanding how the ParametricRegion function works. The help documentation only gives 2D examples unfortunately.

For example I would like to take the surface defined by:

ParametricPlot3D[{Cos[s] (1 + t^2), Sin[s] (1 + t^2),t}, {t, -2, 2}, {s, 0, 2 \[Pi]}]

and then us this to define one of my region boundaries.

If I define a 3D region like:

reg = ParametricRegion[{Cos[s] (1 + t^2), Sin[s] (1 + t^2), t}, {{t, -2, 2}, {s, 0, 2 \[Pi]}}]

and then try to plot this using RegionPlot[reg]

I get errors related that say such a region cannot be automatically discretised and that this is not a valid region to plot.

As far as I understand this code should give me the surface ? But does anyone know how one can define the volume inside, and then visualise this using RegionPlot or DiscretizeRegion ?

$\endgroup$
  • $\begingroup$ It's not a closed surface. What you mean by "inside"? $\endgroup$ – Michael E2 Oct 17 '16 at 22:40
  • $\begingroup$ @MichaelE2. Sorry, perhaps this was unclear. By inside I mean the region close to the z-axis. I would also like to cap the region eventually, to make a closed shape (i.e. constraining to -a<z<a for "a" being some numerical value. In 2D it seems that it is not important whether surfaces are closed or not (i.e. one can define regions such that x<0) $\endgroup$ – Dunlop Oct 18 '16 at 3:09
  • $\begingroup$ @MichaelE2. I just saw this post link, which I guess is related (could be that my question somewhat duplicates that one). I also realised I was using RegionPlot (defined only for 2D) and not RegionPlot3D. In the end I guess the question comes down to whether parametric regions can be plotted using RegionPlot3D or not? $\endgroup$ – Dunlop Oct 18 '16 at 3:33
3
$\begingroup$

The first thing to notice is that you have defined isn't a 3D region:

In[1]:= reg = ParametricRegion[{Cos[s] (1 + t^2), Sin[s] (1 + t^2), t},
         {{t, -2, 2}, {s, 0, 2 \[Pi]}}];
In[2]:= RegionDimension[reg]
Out[2]= 2

It's a 2D region, because you've defined a surface of revolution. What's not very well documented, unfortunately, is that RegionPlot(3D) only support full dimensional regions. I presume what you're interested in is the volum of revolution which is swept out by a ray from the z-axis, which is the following:

In[3]:= reg = ParametricRegion[{u Cos[s] (1 + t^2), u Sin[s] (1 + t^2), t}, 
          {{t, -2, 2}, {s, 0, 2 \[Pi]}, {u, 0, 1}}];
In[4]:= RegionDimension[reg]
Out[4]= 3

This can now be plotted using RegionPlot3D. For example, the following looks reasonably nice:

RegionPlot3D[reg, MaxRecursion -> 3, PlotPoints -> 35, 
    PlotRange -> {{-5, 5}, {-5, 5}, {-2, 2}}]
$\endgroup$
  • $\begingroup$ Thanks for pointing that out. Exactly what I was looking for. $\endgroup$ – Dunlop Oct 18 '16 at 5:21
2
$\begingroup$

I am not exactly sure what region is required.

region1 = 
  ImplicitRegion[
   0 < x^2 + y^2 < (z^2 + 1)^2, {{x, -5, 5}, {y, -5, 5}, {z, -2, 2}}];
region2 = 
  ImplicitRegion[
   x^2 + y^2 > (z^2 + 1)^2, {{x, -5, 5}, {y, -5, 5}, {z, -2, 2}}];
opts = Sequence[Background -> Black, Boxed -> False, ImageSize -> 400]
Column[{RegionPlot3D[region1, PlotPoints -> 40, PlotStyle -> LightRed,
    Evaluate@opts],
  RegionPlot3D[region2, PlotPoints -> 40, 
   PlotStyle -> {LightBlue, Opacity[0.5]}, Evaluate@opts],
  RegionPlot3D[{region1, region2}, PlotPoints -> 40, 
   PlotStyle -> {LightRed, {LightBlue, Opacity[0.5]}}, Evaluate@opts]

  }]

enter image description here

$\endgroup$
  • $\begingroup$ The First image was the one I was looking for, although in fact either of the surfaces is usable for my calculations. Many thanks! $\endgroup$ – Dunlop Oct 18 '16 at 10:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.