绘制测地加速度

绘制测地加速度

嗨,我想使用 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 坐标。我发现这比调整 、 和 更容易使用和xslant可视yslantrotate

可以通过更改曲线的控制点来调整绿线的曲率。我使用该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}

在此处输入图片描述

我想我已经制作出了您想要的东西,但如果没有,请留下评论,我会尝试更接近预期的结果。

相关内容