繪製測地加速度

繪製測地加速度

您好,我想使用 TikZ 繪製一些相互加速的測地線。我從一個線上範例中竊取了一些程式碼來設定兩個平面,一個位於另一個之上(頂部的一個不可見 - 我只是用它來啟動測地線)。

我遇到的問題是在兩個平面之間繪製線條(或測地線)。如果我想要曲線,它工作得很好,但我需要它們是彎曲的 - 具體來說,我希望它們在接近下平面上各自的端點時彼此彎曲。

到目前為止我的程式碼如下:

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

這會產生以下結果:

正如你所看到的,這些線並沒有以一種很好的方式相互彎曲——我希望它們在到達黑色表面時彼此越來越接近,而不是以這種奇怪的拋物線方式進行。顯然問題是我使用了拋物線命令。我嘗試過使用各種其他可用曲線,但我根本無法讓它工作。

有人知道怎麼做這個嗎?有可能嗎?

如果可能的話,在傳入線的中間有箭頭也很好嗎?

多謝。

答案1

這是一個想法。我基本上從程式碼開始,因為提供的範例不可編譯,並且在添加必要的程式碼後包含幾個錯誤。

繪圖的視圖由x={(<x-dim>,<y-dim>)}應用於tikzpicture環境的單位向量設定等決定。請注意整個過程中所有點都添加了 z 座標。我發現這比調整xslantyslant和 更容易使用和視覺化rotate

可以透過更改曲線的控制點來調整綠線的曲率。我正在使用該calc庫根據曲線的起點和終點座標方便地計算這些控制點。

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

在此輸入影像描述

我想我已經實現了您想要的結果,但如果沒有,請發表評論,我會盡力接近所需的結果。

相關內容