# Draw a circle in a coordinate system of an arrow on a half-sphere

I am trying to draw a half sphere with several arrows on it. Each of those arrows should have a circle positioned on it, drawn in a local coordinate system of the arrow. I managed to draw the sphere and the arrows, but I cannot get the circle perspective right.

Any suggestions?

\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%

%: isometric  South West : X , South East : Y , North : Z
\tikzset{isometricXYZ/.style={x={(-0.866cm,-0.5cm)}, y={(0.866cm,-0.5cm)}, z={(0cm,1cm)}}}

%% document-wide tikz options and styles
\begin{document}
\begin{tikzpicture} [scale=4, isometricXYZ, line join=round,
opacity=.75, text opacity=1.0,%
>=latex,
inner sep=0pt,%
outer sep=2pt,%
]
\def\h{5}

\foreach \f in {85,75,...,5}
\foreach \t in {#1}
\draw [dotted, fill=#2]
({sin(\f - \h)*cos(\t - \h)}, {sin(\f - \h)*sin(\t - \h)}, {cos(\f - \h)})
-- ({sin(\f - \h)*cos(\t + \h)}, {sin(\f - \h)*sin(\t + \h)}, {cos(\f - \h)})
-- ({sin(\f + \h)*cos(\t + \h)}, {sin(\f + \h)*sin(\t + \h)}, {cos(\f + \h)})
-- ({sin(\f + \h)*cos(\t - \h)}, {sin(\f + \h)*sin(\t - \h)}, {cos(\f + \h)})
-- cycle;
}

%View arrows
\def\l{1.15}
\foreach \f in {0,10,...,90}
\foreach \t in {95}
\draw [black, ->, thick]
({\l*sin(\f)*cos(\t)},{\l*sin(\f)*sin(\t)},{\l*cos(\f)})
-- ({sin(\f)*cos(\t)},{sin(\f)*sin(\t)},{cos(\f)});

% Circles in local coordinate system of the arrows
\foreach \f in {0,10,...,90}
\foreach \t in {95}
{
\def\PosX{{\l*sin(\f)*cos(\t)}}
\def\PosY{{\l*sin(\f)*sin(\t)}}
\def\PosZ{{\l*cos(\f)}}
\def\Pos{(\PosX, \PosY, \PosZ)}

\begin{scope}[rotate around={\f:\Pos}]
\draw[->,red,thick] \Pos circle (0.07);
\end{scope}
};
\end{tikzpicture}
\end{document}


Current result. The drawn circles dont look right atm. I the end I wrote a transformation matrix and manually transformed the points.

\documentclass[11pt]{article}
\usepackage{tikz}
\usepackage{tikz-3dplot}
%%%<
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}%
%%%>

\tikzset{isometricXYZ/.style={x={(-0.866cm,-0.5cm)}, y={(0.866cm,-0.5cm)}, z={(0cm,1cm)}}}

%% document-wide tikz options and styles
\begin{document}
\begin{tikzpicture} [scale=4, isometricXYZ, line join=round,
opacity=.75, text opacity=1.0,%
>=latex,
inner sep=0pt,%
outer sep=2pt,%
]
\def\h{5}

\foreach \f in {85,75,...,5}
\foreach \t in {#1}
\draw [dotted, fill=#2]
({sin(\f - \h)*cos(\t - \h)}, {sin(\f - \h)*sin(\t - \h)}, {cos(\f - \h)})
-- ({sin(\f - \h)*cos(\t + \h)}, {sin(\f - \h)*sin(\t + \h)}, {cos(\f - \h)})
-- ({sin(\f + \h)*cos(\t + \h)}, {sin(\f + \h)*sin(\t + \h)}, {cos(\f + \h)})
-- ({sin(\f + \h)*cos(\t - \h)}, {sin(\f + \h)*sin(\t - \h)}, {cos(\f + \h)})
-- cycle;
}

\newcommand{\arrowarc}{
\draw[domain=0:320,smooth,variable=\x,->, dashed] plot
({0.07 * (cos(#2)*cos(#3) * cos(\x) + (cos(#3)*sin(#1)*sin(#2) - cos(#1)*sin(#3)) * sin(\x)) + #4},
{0.07 * (cos(#2)*sin(#3) * cos(\x) + (cos(#1)*cos(#3) + sin(#1)*sin(#2)*sin(#3)) * sin(\x)) + #5},
{0.07 * (-sin(#2) * cos(\x) + cos(#2)*sin(#1)* sin(\x)) + #6});
}

\foreach \f in {20,30,...,90}
\foreach \t in {-40,-20,...,120}
{
%Movement arrows
\def\l{1.15}
\draw [black, ->, thick]
({\l*sin(\f)*cos(\t)},{\l*sin(\f)*sin(\t)},{\l*cos(\f)})
-- ({sin(\f)*cos(\t)},{sin(\f)*sin(\t)},{cos(\f)});

% Circles
\def\l{1.12}
\arrowarc{(\f)}{0}{(\t + 90)}{\l*sin(\f)*cos(\t)}{\l*sin(\f)*sin(\t)}{\l*cos(\f)}
};
\end{tikzpicture}
\end{document}] 