function t = arrow(u)
%
%  ARROW draws arrow
%     U  direction of arrow in space
%


[x y z] = cylinder(0.02);
h(1) = surface(x,y,z,'FaceColor','blue');
[x y z] = cylinder([0.3 0]);
h(2) = surface(x,y,z,'FaceColor','blue');
% Create group object and parent surfaces
t = hgtransform('Parent',gca);
t2 = hgtransform('Parent',t);
set(h(1),'Parent',t);
set(h(2),'Parent',t2);

S = makehgtform('scale',0.2);
T = makehgtform('translate',[0 0 0.9]);
set(t2,'Matrix',T*S);

if nargin>0
    up = [0 0 1];
    ux = u/norm(u); % convert to unit vector
    pn = cross(up,ux);
    pn = pn/norm(pn);
    qn = cross(pn,up);
    z = complex(dot(ux,up),dot(ux,qn));
    phi = angle(z);
    R = makehgtform('axisrotate',pn,phi);
    set(t,'Matrix',R);
end