Vetores tangentes a um anel em tikz

Vetores tangentes a um anel em tikz

Estou tentando criar uma imagem com Tikz semelhante a esta

t

e eu escrevi esse código, parcialmente baseado no códigoeste tópicocomo

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc}

\begin{document}

\newcommand{\xangle}{7}
\newcommand{\yangle}{137.5}
\newcommand{\zangle}{90}

\newcommand{\xlength}{1}
\newcommand{\ylength}{0.5}
\newcommand{\zlength}{1}

\pgfmathsetmacro{\xx}{\xlength*cos(\xangle)}
\pgfmathsetmacro{\xy}{\xlength*sin(\xangle)}
\pgfmathsetmacro{\yx}{\ylength*cos(\yangle)}
\pgfmathsetmacro{\yy}{\ylength*sin(\yangle)}
\pgfmathsetmacro{\zx}{\zlength*cos(\zangle)}
\pgfmathsetmacro{\zy}{\zlength*sin(\zangle)}

\begin{tikzpicture}
[   x={(\xx cm,\xy cm)},
    y={(\yx cm,\yy cm)},
    z={(\zx cm,\zy cm)},
]

\draw[dashed] (0,0,0) circle (4.5);


\draw[blue!80!black,->] (240:4.5) -- (240:5.5);
\node[blue!80!black] at (240:5.8) {y};
\draw[green!80!black,->] (240:4.5) -- ++(0,0,1);
\node[green!80!black] at ($(240:4.5)+(0,0,1.2)$) {z};
\draw[red!80!black,->] (240:4.5) -- ++ (240+90:1);
\node[red!80!black] at ($(240:4.5)+(240+90:1.3)$) {x};
\fill[black!50!gray,draw=black!50!black] (240:4.5) circle (0.05cm);

\foreach \d in {0,60,120,180,240,300}
{
    \draw[thick, black,->] (\d:4.5) -- ++(1,1,1);
}

\end{tikzpicture}

\end{document}

insira a descrição da imagem aqui

Mas obtenho todos os vetores apontando na mesma direção. Como posso corrigi-lo para que fique semelhante à primeira figura? E também como posso somar os ângulos \alpha e \beta como na primeira figura?

Responder1

Você pode usar tikz-3dplotaqui. Ele permite que você mude para coordenadas giradas. Minha opinião é que você realmente deseja transportar em paralelo umgiradovetor, como na captura de tela. O transporte paralelo da tangente seria muito mais fácil, bastando usar o plano xy. (Por favor, deixe-me saber se é isso que você deseja.)

Os ângulos de rotação do vetor que será transportado paralelamente são armazenados nas "funções" alphae beta. Eles podem ser ajustados à vontade, assim como os ângulos de visão.

\documentclass[tikz,border=3mm]{standalone}
\usepackage{tikz-3dplot}
\begin{document}
\tdplotsetmaincoords{70}{00}%<- set view angles
\begin{tikzpicture}[>=stealth,line cap=round,
    tdplot_main_coords,%<- install 3d view
    declare function={R=4;alpha=-40;beta=-50;}%<- radius of the circle and angles
    ]
 \begin{scope}[canvas is xy plane at z=0]
  \draw[semithick] (0,0) circle[radius=R];
  \draw[thick,->,blue] (-1.5,-R) -- ++ (3,0) node[right]{$t$};
  \draw (1,-R) arc[start angle=0,end angle=alpha,radius=1];
  \path foreach \X in {0,...,5}
  {(-90+\X*60:R) coordinate (p\X)}; % points along the circle
 \end{scope}
 % rotated plane at p0
 \tdplotsetrotatedcoords{alpha}{0}{0}
 \begin{scope}[tdplot_rotated_coords,canvas is xz plane at y=0,shift={(p0)}]
  \draw (0,0) rectangle ++ ((90+beta:{1/abs(cos(alpha))}) (1,0) node[right]{$\alpha$};
  \draw[thick,->,red]  (-90+beta:{1/abs(cos(alpha))})
     -- ++ (90+beta:{2/abs(cos(alpha))});
  \draw[->] (0,-1) -- (0,1) node[above]{$z$};    
  \draw (0,0.5) arc[start angle=90,end angle=90+beta,radius=0.5]
      node[midway,above right] {$\beta$};
 \end{scope}
 % other planes
 \foreach \X in {1,...,5}
 {\tdplotsetrotatedcoords{alpha}{0}{\X*60}
 \begin{scope}[tdplot_rotated_coords,canvas is xz plane at y=0,shift={(p\X)}]
  \draw[thick,->,red]  (-90+beta:{1/abs(cos(alpha))})
     -- ++ (90+beta:{2/abs(cos(alpha))});
 \end{scope}}
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

informação relacionada