# Change position and orientation of 3D object

I was trying to understand how 3D objects work in Mathematica, but I run into a problem I am not able to solve by myself. I have the following 3D plot:

f1=SphericalPlot3D[1 - Sin[t], {t, 0, Pi/2}, {f, 0, 2 Pi}]


What I would like is to change the position and orientation of this object, so that if $\vec a$ and $\vec b$ are any two vectors, I would get something like

Is this possible?

Maybe its even easier than this, becuase what I actually need is to place that figure into another (previously generated) plot, at a specific position specified by $\vec a,\vec b$. I thought I could use Epilog, together with some placing command or something like that, but Im unable to make it work. My intention is to do something like Plot3D[...,Epilog->Placed[f1,{a,b}]] (this is obvioulsy schematic, because the notation makes no sense), but I have no clue as to how to proceed.

f1 =  First @ SphericalPlot3D[1 - Sin[t], {t, 0, Pi/2}, {f, 0, 2 Pi}];

a = {2, 2, 1};
b = {0, 2, 3};

Graphics3D[{
Thick, Arrow[{{0, 0, 0}, a}], Arrow[{{0, 0, 0}, b}],

GeometricTransformation[
Translate[Scale[f1, {1, 1, 1} Norm[a - b], {0, 0, 0}], a],
RotationTransform[{{0, 0, 1}, -a + b}, a]
]
},
Axes -> True, BoxRatios -> Automatic
]


x = {0, 0, 1};
a = {1, 1, .5};
b = {0, 1, 2};
Graphics3D[{
Red, Thick, Arrow[{{0, 0, 0}, a}],
Blue, Arrow[{{0, 0, 0}, b}],
Green, Arrow[{{0, 0, 0}, x}],
{Opacity[.1], f1},
GeometricTransformation[
f1,
{Norm[b - a] RotationMatrix[{x, b - a}], a}
]
},
Axes -> True, BoxRatios -> Automatic
]


• When I execute this, I get the arrows, but the "tear" is not displayed, and I get the error Graphics is not a Graphics3D primitive or directive.. How can I fix this? This looks perfect by the way. – AccidentalFourierTransform Nov 20 '15 at 20:23
• @qftishard sorry, forgot First. – Kuba Nov 20 '15 at 20:24