Zeichnen Sie einen Kreis in einem Koordinatensystem eines Pfeils auf einer Halbkugel

Zeichnen Sie einen Kreis in einem Koordinatensystem eines Pfeils auf einer Halbkugel

Ich versuche, eine Halbkugel mit mehreren Pfeilen darauf zu zeichnen. Auf jedem dieser Pfeile sollte ein Kreis positioniert sein, der in einem lokalen Koordinatensystem des Pfeils gezeichnet ist. Ich habe es geschafft, die Kugel und die Pfeile zu zeichnen, aber ich bekomme die Kreisperspektive nicht richtig hin.

Irgendwelche Vorschläge?

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

Aktuelles Ergebnis. Die gezeichneten Kreise sehen momentan nicht richtig aus.

Bildbeschreibung hier eingeben

Antwort1

Am Ende habe ich eine Transformationsmatrix geschrieben und die Punkte manuell transformiert.

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

Halbkugel

verwandte Informationen