Dibuja un círculo en un sistema de coordenadas de una flecha en una media esfera.

Dibuja un círculo en un sistema de coordenadas de una flecha en una media esfera.

Estoy intentando dibujar una media esfera con varias flechas. Cada una de esas flechas debe tener un círculo colocado sobre ella, dibujado en un sistema de coordenadas local de la flecha. Logré dibujar la esfera y las flechas, pero no logro lograr la perspectiva del círculo correctamente.

¿Alguna sugerencia?

\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}

    \newcommand{\quadrant}[2]{
        \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;
    }

    %Quadrants
    \quadrant{130,140,...,310}{gray!2}
    \quadrant{-50,-40,...,130}{gray!2}

    %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}

Resultado actual. Los círculos dibujados no se ven bien en un cajero automático.

ingrese la descripción de la imagen aquí

Respuesta1

Al final escribí una matriz de transformación y transformé manualmente los puntos.

\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}

    \newcommand{\quadrant}[2]{
        \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}[6]{
        \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});
    }

    %Quadrants
    \quadrant{130,140,...,310}{gray!2}
    \quadrant{-50,-40,...,130}{gray!2}

    \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}][1]

media esfera

información relacionada