Desenhando esfera com 6 pontos usando TiKz

Desenhando esfera com 6 pontos usando TiKz

Então, estou tentando obter uma imagem usando o TiKz, o que tenho em mente é o seguinte

insira a descrição da imagem aqui

O que me falta são os rótulos corretos, principalmente as letras gregas eta, xi e zeta, também estou procurando setas apontando para 0, 1 e $\infty$ com elas parecendo estar na superfície da esfera, eu pensei um pouco sobre isso e poderia ser parte de uma elipse mas como é óbvio não sei como fazer.

Aqui está o código que tenho até agora, bem como a imagem renderizada:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{3d}

\begin{document}
\begin{tikzpicture}[scale=2]
    % Define sphere
    \draw (0,0) circle [radius=1];
    % Draw equator
    \draw[dashed] (90:1) arc (90:270:1);
    % Draw ellipse
    \draw[dashed] (1,0) arc (0:180:1 and 0.3);
    \draw (-1,0) arc (180:360:1 and 0.3);
    % Draw points
    \foreach \angle/\label/\pos in {30/A/above left, 150/B/above left, 90/C/above, -30/X/below left, -150/Y/below left, -90/Z/below} {
        \node (\label) at (\angle:1) [circle, fill, inner sep=0.03cm, label=\pos:\label] {};
    }
    % Draw arrows
    \foreach \from/\to in {A/B, B/C, C/X} {
        \draw[->] (\from) -- (\to);
    }
    % Draw dashed lines for perspective
    \draw[dashed] (1,0) -- (B);
    \draw[dashed] (1,0) -- (C);
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Praticamente apenas o ponto C está na posição correta, quando tento colocar $\infty$ nele recebo o erro

Missing \endcsname inserted.                                                  
<to be read again>                                                              
                   \infty                                                       
l.17     }                

Qualquer conselho ou sugestão seria muito apreciado.

Responder1

Esta é uma maneira de desenhar à mão, enquanto a cópia da tela segue de maneira semelhante. Algumas observações:

  • em geral, não tente muito de uma só vez; loops têm dificuldade aqui, porque você tenta combinar coisas diferentes
  • você não nos deu a biblioteca 3D, então eu larguei
  • o raio pode ser uma constante, mas com um pouco mais de paciência calcpode ser introduzido aqui
  • estilos são seus amigos, ou seja, para tornar o código mais fácil de entender
  • dotsaqui estão apenas nós preenchidos, que têm um círculo como forma
  • na elipse coloquei dois nós extras em lugares diferentes pos, onde seus nomes são realmente relevantes
  • sintaticamente, um caminho começa com \, termina com ;e tudo o que está entre eles são ações a serem executadas (portanto, esses nós não começam com \)
  • os outros pontos também poderiam ser coordenadas; nomes é o que eu procuro
  • veja a notação polar, que mais uma vez indica algumas idéias necessárias para a constante do raio
  • agora colocar rótulos e desenhar linhas dobradas é quase óbvio

resultado

\documentclass[border=3mm]{standalone}  % adding some border
\usepackage{tikz}
%\usetikzlibrary{3d}                    % it's not used
\usetikzlibrary{arrows.meta}            % for nicer arrow tips

% ~~~ constants ~~~~~~~~~~~~~~~~~~~~~
\newcommand\rd[0]{2}
\newcommand\rdm[0]{(-2,0)}  % can be done better with calc

\begin{document}
\begin{tikzpicture}%[scale=2] % that's not too good to do
    [
        dot/.style={fill=black,circle,inner sep=1pt},
        as/.style={anchor=south},
        ae/.style={anchor=east},
        aw/.style={anchor=west},
        >={Stealth},            % replacing all arrow tips
    ]
    % Define sphere
    \draw (0,0) circle [radius=\rd{}];
    % Draw equator
    \draw[dashed] (90:\rd{}) arc (90:270:\rd{});
    % Draw ellipse + adding some nodes (with names)
    \draw[dashed] (\rd{},0) arc (0:180:\rd{} and 0.3);
    \draw \rdm{} arc (180:360:\rd{} and 0.3) 
            node[pos=.55,dot] (Zero) {}
            node[pos=.70,dot] (One) {};
    
    % ~~~ other points ~~~~~~~~~
    \node[dot] (Inf) at (0,\rd{}) {};
    \node[dot] (Eta) at (130:1.5) {};
    \node[dot] (Ksi) at (220:1.0) {};
    \node[dot] (Zet) at (340:1.6) {};
    
    % ~~~ putting labels ~~~~~~~
    \node[as] at (Inf) {$\infty$};
    \node[as] at (Zero){$0$};
    \node[as] at (One) {$1$};
    
    \node[ae] at (Eta) {$\eta$};
    \node[ae] at (Ksi) {$\xi$};
    \node[aw] at (Zet) {$\zeta$};
    
    % ~~~ arrows: bender was here ~~~~~
    \draw[->] (Zet) -- (One);               % start this way
    \draw[->] (Eta) to[bend left] (Inf);    % refine later
    \draw[->] (Ksi) to[bend right] (Zero);

    
%    % Draw points
%    \foreach \angle/\label/\pos in {30/A/above left, 150/B/above left, 90/C/above, -30/X/below left, -150/Y/below left, -90/Z/below} {
%        \node (\label) at (\angle:1) [circle, fill, inner sep=0.03cm, label=\pos:\label] {};
%    }
%    % Draw arrows
%    \foreach \from/\to in {A/B, B/C, C/X} {
%        \draw[->] (\from) -- (\to);
%    }
%    % Draw dashed lines for perspective
%    \draw[dashed] (1,0) -- (B);
%    \draw[dashed] (1,0) -- (C);
\end{tikzpicture}
\end{document}

informação relacionada