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$
3
  • $\begingroup$ It's not a closed surface. What you mean by "inside"? $\endgroup$
    – Michael E2
    Oct 17, 2016 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, 2016 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, 2016 at 3:33

2 Answers 2

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$
1
  • $\begingroup$ Thanks for pointing that out. Exactly what I was looking for. $\endgroup$
    – Dunlop
    Oct 18, 2016 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$
1
  • $\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, 2016 at 10:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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