# ParametricPlot3D with tube and arrow

I have this:

f[x_, y_] = x y/(x^2 + y^2);
ParametricPlot3D[{t, 2 t, f[t, 2 t]}, {t, -1/2, Sqrt[0.002]},
PlotStyle -> Directive[Red, Thick]] /. Line -> Tube

Which works, but I would like an arrowhead at the end of the tube. What do I have to add?

And maybe I want the arrow of the tube? I do want a three dimensional tubular arrowhead which is normally done with Graphics3d[{Arrow[Tube[ ....

Difficulty with Composition:

f[x_, y_] = x y/(x^2 + y^2);
Show[
Plot3D[f[x, y], {x, -1, 1}, {y, -1, 1},
PlotStyle -> Opacity[0.5],
MeshStyle -> Opacity[0.5],
MeshFunctions -> Function[{x, y, z}, z],
RegionFunction -> Function[{x, y, z}, x^2 + y^2 > 0.01],
AxesLabel -> {"x", "y", "z"},
ViewPoint -> {2.3, -2.4, 0.7}],
ParametricPlot3D[{t, 2 t, f[t, 2 t]}, {t, -1/2, -Sqrt[0.002]},
PlotStyle -> Directive[Red, Thickness[0.02]]] /.
Line -> Composition[Arrow, Tube],
Graphics3D[{
Blue, Arrow[Tube[{{1, 0, 0}, {0.1, 0, 0}}, 0.02]],
Blue, Arrow[Tube[{{0, -1, 0}, {0, -0.1, 0}}, 0.02]]
}]
]

Which produces:

Apparently, I can't control the thickness this way?

Difficulty with Graphics3D Method:

f[x_, y_] = x y/(x^2 + y^2);
Show[
Plot3D[f[x, y], {x, -1, 1}, {y, -1, 1},
PlotStyle -> Opacity[0.5],
MeshStyle -> Opacity[0.5],
MeshFunctions -> Function[{x, y, z}, z],
RegionFunction -> Function[{x, y, z}, x^2 + y^2 > 0.01],
AxesLabel -> {"x", "y", "z"},
ViewPoint -> {2.3, -2.4, 0.7}],
Graphics3D[{
Blue, Arrow[Tube[{{1, 0, 0}, {0.1, 0, 0}}, 0.02]],
Blue, Arrow[Tube[{{0, -1, 0}, {0, -0.1, 0}}, 0.02]],
Arrow[Tube[
Table[{t, 2 t,
f[t, 2 t]}, {t, -1/2, -Sqrt[0.002]}], .02], {0, -0.1}]
}]
]

Which produces:

For some reason, the red arrow is not showing up. My Bad: Turns out I had only one point produced by my table.

• Use Composition[Arrow, Tube] instead in the replacement rule. Commented Jul 10, 2015 at 5:53
• Change Tube to Arrow@*Tube Commented Jul 10, 2015 at 5:53
• Also the same, change the replacement rule by /. Line[x__] :> Arrow[Tube[x]] Commented Jul 10, 2015 at 6:05
• @Szabolcs Could you please comment, what does this construct @* do? Commented Jul 10, 2015 at 7:30
• @AlexeiBoulbitch In version 10 and later, f @* g is short for Composition[f,g]. Commented Jul 10, 2015 at 7:35

My experiments with this question indicate that something more than simple composition of Arrow and Tube is needed. What I came up with is

ParametricPlot3D[{Cos[t], Sin[t], t/4}, {t, 0, 2 π},
PlotRange -> All,
Line[pts_] :> Arrow[Tube[pts, .04], {0, -.1}]

which produces

Of course, this can also be reproduced directly and I think even more easily, with Graphics3D.

Graphics3D[{
Arrow[Tube[Table[{Cos[t], Sin[t], t/4}, {t, 0, 2 π, π/20}], .04], {0, -.1}]}]

### Update

Now that the OP has given us a definition of f, I can work with his real problem, for which I recommend

f[x_, y_] = x y/(x^2 + y^2);

Show[
Plot3D[f[x, y], {x, -1, 1}, {y, -1, 1},
PlotStyle -> Opacity[0.5],
MeshStyle -> Opacity[0.5],
MeshFunctions -> Function[{x, y, z}, z],
RegionFunction -> Function[{x, y, z}, x^2 + y^2 > 0.01],
AxesLabel -> {"x", "y", "z"},
ViewPoint -> {2.3, -2.4, 0.7}],
Graphics3D[{
Blue, Arrow[Tube[{{1, 0, 0}, {0.1, 0, 0}}, 0.02]],
Arrow[Tube[{{0, -1, 0}, {0, -0.1, 0}}, 0.02]],