# Draw arrows around an ellipsoid

I want a thin ellipsoid-like figure with an arrow around the ellipsoid. To draw an ellipsoid I used the following code:

 With[{a = 5, c = 1},
ParametricPlot3D[{3 a Cos[u] Sin[v], 2 a Sin[u] Sin[v], 4 c Cos[v]},
{u, 0, 2 π}, {v, -π, π}, Boxed -> False, Axes -> False, Mesh -> None,
ColorFunction -> "BlueGreenYellow", ImageSize -> 728]]


This gives me the following output:

Now, I want to draw arrows that come out from all around (horizontally) this ellipsoid. For example, if the left end is xmin and right end is xmax, I want to draw arrows on the edges of the curve that connects xmin and xmax. So, every arrow is coming from a black dot and it is directed away from it.

It will be great if anybody can help me with this issue.

a = Graphics3D[Ellipsoid[{0, 0, 0}, {3, 1, 2}]]

b = Graphics3D[ Arrow /@ Table[{{2 Cos[θ], Sin[θ], 0}, 2 {2 Cos[θ], Sin[θ], 0}},
{θ, 0, 2 π, π/10}]]

Show[a, b]


It is unclear whether you'd prefer this:

a = Graphics3D[Ellipsoid[{0, 0, 0}, {3, 1, 2}]];

b = Graphics3D[
Table[Arrow[{{3.05 Cos[\[Theta]], Sin[\[Theta]],
0}, {3.05 Cos[\[Theta] + \[Pi]/10], Sin[\[Theta] + \[Pi]/10],
0}}], {\[Theta], 0, 2 \[Pi], \[Pi]/10}]];

Show[a, b]


Using the parametric equation and calculating the normal as the cross product of the partial derivatives:

f[u_, v_]      := {3 a Cos[u] Sin[v], 2 a Sin[u] Sin[v], 4 c Cos[v]}
normal[u_, v_] := Evaluate[Normalize@Cross[D[f[x, y], x], D[f[x, y], y]]] /.
{x -> u,  y -> v}
Block[{a = 5, c = 1},
Show[ParametricPlot3D[f[u, v], {u, 0, 2 Pi}, {v, 0, Pi},  PlotRangePadding -> 4],
Graphics3D[Arrow /@
Table[{#, # - 3 normal[u, Pi/2]} &@f[u, Pi/2], {u, 0, 2 Pi, 2 Pi/20}]]]


Many thanks for your replies, which helped me a lot. I finally ended up with the following:

a = Graphics3D[{Opacity[.8], EdgeForm[], Cyan,
Cylinder[{{0, 0, 0}, {0, 0, 0.1}}, 0.8]}, Boxed -> False,
ImageSize -> Large, ViewPoint -> Above];
b = Graphics3D[{Red,
Arrow /@
Table[{0.8 {Cos[\[Theta]], Sin[\[Theta]], 0}, { Cos[\[Theta]],
Sin[\[Theta]], 0}}, {\[Theta], 0, 2 \[Pi], \[Pi]/15}]},
Boxed -> False, ViewPoint -> Above];
Show[a, b]


This gives me the output as follows (without the hand-made curved arrow below):

I would like to seek another help from you. Is there any way to make these arrows curvy? Instead of plain arrows, is it possible to draw curved arrows shown in the figure. The curve may be similar to the sine curve, for example.

Once again, many thanks in advance.

• "I would like to seek another help from you" - I suggest asking a new question instead, with maybe a link to this one. Commented Jul 14, 2015 at 9:24