Desenhe aceleração geodésica

Desenhe aceleração geodésica

Olá, quero desenhar algumas geodésicas acelerando uma em direção à outra usando TikZ. Roubei um código de um exemplo on-line para configurar dois planos, um em cima do outro (um de cima invisível - só estou usando-o para iniciar a geodésica ali).

O problema que estou tendo é desenhar linhas (ou geodésicas) entre os dois planos. Funciona bem se eu quiser linhas curvas, mas preciso que elas sejam curvas - especificamente, quero que elas se curvem uma em direção à outra à medida que se aproximam de seus respectivos pontos finais no plano inferior.

Até agora meu código é o seguinte:

\begin{tikzpicture}[scale=.9,every node/.style={minimum size=1cm},on grid]       
\begin{pgfonlayer}{bottom}
    \begin{scope}[ 

    % Lower layer
    yshift=0,every node/.append style={
        yslant=0.5,xslant=-1,rotate=-10},
        yslant=0.5,xslant=-1,rotate=-10] 
    \fill[black,fill opacity=0.9] (0,0) rectangle (5,5);

    \draw[black] (0,0) rectangle (5,5);
    \node[name=B,draw,scale=0.4,black,very thick,text width=0.95,text height=0.95,inner sep=0pt,] at (2.525,2.525) {};
\end{scope}![enter image description here][1]\end{pgfonlayer}

\begin{scope}[  % Upper layer
    yshift=105,every node/.append style={
    yslant=0.5,xslant=-1,rotate=-10},yslant=0.5,xslant=-1,rotate=-10
                 ]
    \fill[fill=none,fill opacity=0.5, opacity=0.5] (0,0) rectangle (5,5);

    \node[scale=.9,draw,fill=none,draw=none, fill opacity=0.9,opacity=0,very thick,name=A,text width=3cm,text height=3cm,inner sep=0pt] at (2.5,2.5) {};

    \begin{pgfonlayer}{bottom}
  \foreach \i in {north east, north west, south east, south west}
      \draw[green,very thick] (A.\i) parabola (B.\i);
         \end{pgfonlayer}

\end{scope}

\end{tikzpicture}

Isso produz o seguinte:

Como você pode ver, as linhas não se curvam uma em direção à outra de uma maneira agradável - quero que elas se aproximem cada vez mais uma da outra à medida que alcançam a superfície preta e não dessa forma parabólica estranha. Obviamente, o problema é que usei o comando parábola. Eu tentei mexer com uma variedade de outras curvas disponíveis e simplesmente não consigo fazer isso funcionar.

Alguém sabe como fazer isto? É mesmo possível?

Também seria bom ter setas no meio das linhas recebidas, se isso fosse possível?

Muito obrigado.

Responder1

Aqui está uma ideia. Basicamente, comecei com o código, pois o exemplo fornecido não era compilável e continha vários erros após adicionar o código necessário.

A visualização do desenho é determinada pelas configurações do vetor unitário x={(<x-dim>,<y-dim>)}, etc., conforme aplicado ao tikzpictureambiente. Observe a adição da coordenada z a todos os pontos. Acho isso mais fácil de usar e visualizar do que ajustar xslant, yslant, e rotate.

A curvatura das linhas verdes pode ser ajustada alterando os pontos de controle das linhas curvas. Estou usando a calcbiblioteca para calcular convenientemente esses pontos de controle com base nas coordenadas inicial e final das curvas.

\documentclass[tikz]{standalone}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}[x={(0.935cm,0.126cm)},y={(-0.354cm,0.312cm)},z={(0cm,1cm)}]
  \draw[fill,fill opacity=0.9] (0,0,0) -- ++(5,0,0) -- ++(0,5,0) -- ++(-5,0,0) -- cycle;
  \draw[very thick] ( 2.3,2.3,0) coordinate (B1)
               -- ++( 0.4,0.0,0) coordinate (B2)
               -- ++( 0.0,0.4,0) coordinate (B3)
               -- ++(-0.4,0.0,0) coordinate (B4) -- cycle;
  \fill[opacity=0.1] (0,0,2) -- ++(5,0,0) -- ++(0,5,0) -- ++(-5,0,0) -- cycle;
  \path ( 1.15,1.15,2) coordinate (A1)
   -- ++( 2.70,0.00,0) coordinate (A2)
   -- ++( 0.00,2.70,0) coordinate (A3)
   -- ++(-2.70,0.00,0) coordinate (A4) -- cycle;
  \foreach \i in {1,...,4}
    \draw[green,very thick] (A\i) .. 
      controls ($(A\i)!0.5!(2.5,2.5,1)$) and ($(B\i)+(0,0,0.4)$) .. (B\i);
\end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

Acho que produzi o que você procura, mas caso não, deixe um comentário que tentarei chegar mais perto do resultado desejado.

informação relacionada