Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I make a simple 3D graphic as in the following image? Figure
I know it is simply a sphere and a circle with several joining lines but I dont know how to make such simple one. I can use ParametricPlot3D to draw the sphere $(\cos[u]\cos[v],\cos[u]\sin[v],\sin[u])$ for $-\pi\leq u,v\leq\pi$ and the circular orbit which can be taken as the intersection of the sphere with a twice radius and the plane $y+z=0$ or $x-y+z=0$. But I can not simplify the figure, i.e., making the sphere transparent so that the data can be put inside it and etc.

share|improve this question
Possible duplicate: – Vitaliy Kaurov Dec 19 '12 at 19:07
Related (partial solution): – R. M. Dec 19 '12 at 19:13

Do a "Satellite" search on Demonstrations Project. You can find things like these:

The Effect of the Spherical Harmonic Gravitational Potential on Satellite Orbits, by Pradipto Ghosh

Also take a look at this post.

enter image description here

share|improve this answer
up vote 0 down vote accepted

This is the simple figure I was looking for.

(* Parametric form of the unit sphere in 3D *)
\[Alpha][t_, s_] = {Cos[s] Cos[t], Cos[s] Sin[t], Sin[s]};
(* Scale $\[Alpha]$ with $r$ and rotate in such a way that it is perpendicular to the vector $n$ *)
(* This will help in setting the position of the orbit of the satellite *)
\[Beta][t_, r_, n_] = r*RotationMatrix[{Cross[\[Alpha][0, 0], \[Alpha][\[Pi]/2, 0]], n}].\[Alpha][t, 0];
(* Parametric form of the orbit of the satellite *)
orbit[t_] = \[Beta][t, Sqrt[2], {1, -2, 1}];
(* The initial and the current position of the satelite*)
ip = orbit[0];
cp = orbit[\[Pi]/2];
(* The projection of the current position of the satellite onto the plane $z=0$ *)
cpp = {cp[[1]], cp[[2]], 0};
(* The angle between the projection point and the $x$-axis *)
cppa = VectorAngle[cpp, {1, 0, 0}];
(* Plot in 3D*)
    ParametricPlot3D[{\[Alpha][u, 0], \[Alpha][\[Pi]/2, u], orbit[u]}, {u, -\[Pi], \[Pi]}, AxesOrigin -> {0, 0, 0}, Boxed -> False, PlotStyle -> {{Black}, {Black}, {Black}}, Ticks -> None, ViewPoint -> {2, 1, 1}, ImageSize -> 400], 
    Graphics3D[{{PointSize[Large], Gray, Point[ip]}, {PointSize[Large], Point[cp]}, {PointSize[Small], Point[cpp]}}], 
    Graphics3D[{Dashed, Line[{{0, 0, 0}, cp, cpp, {0, 0, 0}}]}], 
    Graphics3D[{Text[Style["x", Italic, 14], {1.5, 0, 0}], Text[Style["y", Italic, 14], {0, 1.2, 0}],  Text[Style["z", Italic, 14], {0, 0, 1.5}], Text[Style["Initial position", 14], ip + {0, 0, -0.25}], Text[Style["Current position", 14], cp + {0, 0, 0.25}], Text[Style["\[ScriptL]", 16], cp/2 + {0, 0, 0.1}], Text[Style["\[Theta]", 14], {0.4*Cos[cppa/2], 0.4*Sin[cppa/2], 0}], Text[Style["\[Rho]", 14], cpp/2 + {0.1, 0.1, 0}]}], 
    ParametricPlot3D[0.2*\[Alpha][u, 0], {u, 0, cppa}, PlotStyle -> Directive[Dashed]]
(* See for traditional axes style in 3D - *)


share|improve this answer
However, I have a little problem with the positioning of the image. How can I make it fit the Image box (which appears in orange color when the image is selected) with everything visible? When I click on the image and select Trim Bounding Box some parts become missing. – bkarpuz Dec 21 '12 at 9:46
Using Ctrl + Drag works for cropping the output figure but it is the original size when exported. This therefore didn't work for me. – bkarpuz Dec 21 '12 at 11:19
Crtl + Shift helps in repositioning the output figure manually, and it applies to the exported file too unlike Ctrl + Drag. – bkarpuz Dec 22 '12 at 14:29

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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