Geodätische Beschleunigung zeichnen

Geodätische Beschleunigung zeichnen

Hallo, ich möchte mit TikZ einige aufeinander zu beschleunigende Geodäten zeichnen. Ich habe Code aus einem Online-Beispiel geklaut, um zwei Ebenen übereinander zu platzieren (die obere ist unsichtbar – ich verwende sie nur, um die Geodäten dort zu starten).

Das Problem, das ich habe, ist das Zeichnen der Linien (oder Geodäten) zwischen den beiden Ebenen. Es funktioniert gut, wenn ich gekrümmte Linien möchte, aber ich brauche sie gekrümmt – genauer gesagt, ich möchte, dass sie aufeinander zu gekrümmt sind, wenn sie sich ihren jeweiligen Endpunkten auf der unteren Ebene nähern.

Bisher ist mein Code der folgende:

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

Das Ergebnis ist:

Wie Sie sehen, sind die Linien nicht schön aufeinander zu gekrümmt - ich möchte, dass sie sich immer mehr aneinander annähern, wenn sie die schwarze Oberfläche erreichen, und nicht auf diese seltsame parabolische Weise. Das Problem ist offensichtlich, dass ich den Parabelbefehl verwendet habe. Ich habe versucht, mit einer Vielzahl anderer verfügbarer Kurven herumzuspielen, aber ich bekomme es einfach nicht zum Laufen.

Weiß jemand, wie das geht? Ist das überhaupt möglich?

Es wäre auch schön, Pfeile in der Mitte der eingehenden Zeilen zu haben, wenn das möglich ist?

Vielen Dank.

Antwort1

Hier ist eine Idee. Ich habe im Grunde genommen mit dem Code von vorne begonnen, da das bereitgestellte Beispiel nicht kompilierbar war und nach dem Hinzufügen des erforderlichen Codes mehrere Fehler enthielt.

Die Ansicht der Zeichnung wird durch die Einheitsvektoreinstellungen x={(<x-dim>,<y-dim>)}usw. bestimmt, die auf die tikzpictureUmgebung angewendet werden. Beachten Sie die Hinzufügung der Z-Koordinate zu allen Punkten. Ich finde dies einfacher zu verwenden und zu visualisieren, als xslant, yslant, und anzupassen rotate.

Die Krümmung der grünen Linien kann durch Ändern der Kontrollpunkte für die gekrümmten Linien angepasst werden. Ich verwende die calcBibliothek, um diese Kontrollpunkte bequem anhand der Start- und Endkoordinaten der Kurven zu berechnen.

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

Bildbeschreibung hier eingeben

Ich glaube, ich habe das gewünschte Ergebnis erzielt. Falls nicht, hinterlassen Sie bitte einen Kommentar und ich werde versuchen, dem gewünschten Ergebnis näher zu kommen.

verwandte Informationen