測地加速度を描く

測地加速度を描く

こんにちは。TikZ を使用して、互いに向かって加速する測地線をいくつか描画したいと思います。オンラインの例からいくつかのコードを盗用して、2 つの平面を上下に配置しました (上の平面は非表示です。測地線を開始するために使用しているだけです)。

私が抱えている問題は、2 つの平面の間に線 (または測地線) を描くことです。曲線が必要な場合は問題なく機能しますが、曲線にする必要があります。具体的には、下側の平面でそれぞれの終点に近づくにつれて、互いに向かって曲がるようにしたいのです。

これまでの私のコードは次のとおりです:

\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

ここに 1 つのアイデアがあります。提供された例はコンパイルできず、必要なコードを追加した後にいくつかのエラーが含まれていたため、基本的にコードを最初からやり直しました。

図面のビューは、環境x={(<x-dim>,<y-dim>)}に適用される単位ベクトル設定などによって決まります。全体を通してすべてのポイントに Z 座標が追加されていることに注意してください。これは、、、tikzpictureを調整するよりも使いやすく、視覚化しやすいと思いますxslantyslantrotate

緑色の線の曲率は、曲線の制御点を変更することで調整できます。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}

ここに画像の説明を入力してください

あなたの求めているものができたと思いますが、もしそうでない場合はコメントを残していただければ、希望する結果に近づくよう努力します。

関連情報