8
$\begingroup$
Manipulate[
 SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, 
  Mesh -> None, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], {n, 0, 
  1}]

I cant' seem to be able to make a filling between two spheres. I've already tried the obvious Filling -> {1 -> {2}} but Mathematica doesn't seem to like that option. Is there any easy way around this or ...

$\endgroup$
1

2 Answers 2

9
$\begingroup$

There is no built-in filling in SphericalPlot3D. One option is to use ParametricPlot3D to draw the surfaces between the two shells:

Manipulate[
 Show[SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, 
  PlotPoints -> 15, PlotRange -> {-2.2, 2.2}],
  ParametricPlot3D[{
    r {Sin[t] Cos[1.5 Pi], Sin[t] Sin[1.5 Pi], Cos[t]},
    r {Sin[t] Cos[0 Pi], Sin[t] Sin[0 Pi], Cos[t]}},
   {r, 1, 2 - n}, {t, 0, Pi}, PlotStyle -> Yellow, Mesh -> {2, 15}]],
  {n, 0, 1}]

enter image description here

$\endgroup$
1
  • $\begingroup$ It's a real bumer that there is no built in function, but thanks to kind and skillful people like you there is always a solution! :) $\endgroup$
    – user 3 50
    Feb 9, 2014 at 20:21
7
$\begingroup$

Using RegionPlot3D is the easiest way to do it.

Manipulate[
Show[RegionPlot3D[1 <= x^2 + y^2 + z^2 <= (2 - n)^2 && (y >= 0 || x <= 0), {x, -2.2, 
2.2}, {y, -2.2, 2.2}, {z, -2.2, 2.2}, Mesh -> None, 
PlotPoints -> 50]], {n, 0, 1}];

enter image description here

You may want to render it before manipulating to avoid the recalculation, specially if you want better resolution.

$\endgroup$
1
  • $\begingroup$ Thank you very much for your answer! :) $\endgroup$
    – user 3 50
    Feb 9, 2014 at 20:20

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.