5
$\begingroup$

This is a follow up question to RevolutionPlot3D: but NOT revolving about the z axis so please check that for the context.

It seems that RevolutionAxis requires the axis of revolution to pass thru the origin. Suppose I want to use an axis of revolution that does not pass through the origin, e.g., the line $y=-1$ in the example above. What is a good way to accomplish this?

I do realize that RegionPlot3D may be appropriate here, but even with seemingly simple examples such as the one above, it can struggle:

Show[
  RegionPlot3D[1 <= Sqrt[(y + 1)^2 + z^2] <= 1 + x^2, {x, 0, 1}, 
    {y, -3, 3}, {z, -3, 3}, PlotRange -> All, PerformanceGoal -> "Quality", 
    Mesh -> False, AxesLabel -> {x, y, z}, PlotPoints -> 100, 
    ViewPoint -> {0.87, 0.44, 1.76}, ViewVertical -> {0.32, 0.67, 0.67}],
  Graphics3D[{Thickness[.01], Black, Line[{{0, -1, 0}, {1.15, -1, 0}}]}]
]

enter image description here

Bumping PlotPoints up to 200, 300, 400 doesn't alleviate the problem and gets really slow.

$\endgroup$
2
$\begingroup$

Generate the plot and then apply a translation:

RevolutionPlot3D[{Sin[t], t, Cos[t]}, {t, 0, 4 Pi}, RevolutionAxis -> {0, 0, 1}, 
                 PlotRange -> All] /. 
 GraphicsComplex[p_List, rest__] :> GraphicsComplex[TranslationTransform[{5, 5, 0}][p], rest]

enter image description here

$\endgroup$
  • $\begingroup$ I am not sure I understand this approach. How would I use it to generate the solid of revolution in the question? Thanks. $\endgroup$ – JohnD Dec 16 '12 at 1:50
2
$\begingroup$

Just want to give yet another example of how Simon Woods's contourRegionPlot3D can produce flawless results:

Show[
 contourRegionPlot3D[
  1 <= Sqrt[(y + 1)^2 + z^2] <= 1 + x^2, {x, 0, 1}, {y, -3, 
   3}, {z, -3, 3}, Mesh -> None],
 Graphics3D[{Thickness[.01], Black, 
   Line[{{0, -1, 0}, {1.15, -1, 0}}]}]
]

Mathematica graphics

$\endgroup$

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.