If you go to the documentation page for RegionPlot3d, in the Scope/Presentation section you will find this code:

RegionPlot3D[
z^2 - 1 <= x^2 + y^2 <= z^2 + 1, {x, -2.3, 2.3}, {y, -2.3,
2.3}, {z, -2, 2}, PlotLabel -> z^2 - 1 <= x^2 + y^2 <= z^2 + 1,
PlotStyle ->
Directive[Specularity[White, 10], Opacity[0.85], Purple],
PlotPoints -> 20, AxesLabel -> Automatic,
AxesEdge -> {{-1, 0}, {1, 0}, {-1, 0}}, Mesh -> False]


which looks cool and works well. A little further down you will find:

RegionPlot3D[
z^2 - 1 <= x^2 + y^2 <= z^2 + 1, {x, -2.3, 2.3}, {y, -2.3,
2.3}, {z, -2, 2}, PlotTheme -> "Business"]


and immediately afterwards:

RegionPlot3D[
z^2 - 1 <= x^2 + y^2 <= z^2 + 1, {x, -2.3, 2.3}, {y, -2.3,
2.3}, {z, -2, 2}, PlotTheme -> "Monochrome"]


As you can see both these last two examples do not work so well. The solid looks "chipped".

Can somebody explain this? Is this a known bug?

• try adding the option PlotPoints -> 100?
– kglr
Commented Apr 15, 2020 at 0:26
• @kglr yes! mistery solved! As a matter of fact PlotPoints -> 18 is enough and indeed the first example uses PlotPoints -> 100. I still wonder why Wolfram does not correct those last two examples. If you like to post an answer, I will accept it. Commented Apr 15, 2020 at 0:40

Default setting for PlotPoints is 15 as can be seen using Trace:

Trace[RegionPlot3D[z^2 - 1 <= x^2 + y^2 <= z^2 + 1,
{x, -2.3, 2.3}, {y, -2.3,  2.3}, {z, -2, 2}, PlotTheme -> "Monochrome"],
HoldPattern[ PlotPoints -> _Integer], TraceInternal -> True] // Flatten

{PlotPoints -> 15, PlotPoints -> 15}


Using a larger value, say 50, gives a better picture:

RegionPlot3D[ z^2 - 1 <= x^2 + y^2 <= z^2 + 1,
{x, -2.3, 2.3}, {y, -2.3, 2.3}, {z, -2, 2},
PlotTheme -> "Monochrome", PlotPoints -> 50]


and with PlotTheme -> "Business" we get