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$
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$
  • $\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 '14 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$
  • $\begingroup$ Thank you very much for your answer! :) $\endgroup$ – user 3 50 Feb 9 '14 at 20:20

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.