如何绘制冲击障碍物的水流线

如何绘制冲击障碍物的水流线

动机

我正在学习流体力学课程,我正在制作包含真实流体示例图像的幻灯片。我想画出水撞击障碍物(例如立方体)的流线,但我做不到这一点。

问题

由于不知道如何表示它,我最初询问 ChatGPT 是否可以给我一个可以表示它的代码,但经过几次尝试后(我发誓我试图让他这样做至少 20 次,但他创建了一系列毫无意义的图画)这是它能给我的最好的结果(在我要求它绘制的内容旁边):

在此处输入图片描述在此处输入图片描述

我无法修复的 4 个错误是:

  1. 事实上,我不想要两个独立的向量,而是一条带有更多“^”的实线
  2. 线路不得穿过障碍物
  3. 线条不得平行,但必须向上加粗以指示更大的水流量,并且必须在障碍物前后消散
  4. 我无法让它产生涡流

有人可以帮帮我吗?

作为答案,我还会接受另一个能够生成此类代码的 AI(可能是免费的)(只是为了不在这里打扰你)

我保留 ChatGPT 生成的代码:

\begin{tikzpicture}
\filldraw[gray!40] (2,0) rectangle (6,5);

\foreach \y in {0.5,1,1.5,2,2.5,3,3.5,4,4.5,5} {
    \draw[->] (0,\y) .. controls (2,\y+0.8) and (4,\y+1.2) .. (6,\y);
    \draw[->] (6,\y) .. controls (7,\y+0.2) and (7.5,\y-0.2) .. (8,\y);
}

\end{tikzpicture}

答案1

以下是一种方法:

  • 在手绘草图中引入一些坐标
  • 画出第一幅非常粗略的图画
  • 第二步,引入一些改进

从你的绘图来看:

草图

第一和第二个结果:

结果

代码:

  • 装饰是从以前的解决方案中复制而来的,因此可能有点过度或不平衡
  • 你会明白的
  • 直线被曲线取代,使用outin角度
\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{decorations.markings}

\begin{document}
 % === 1st sketch from your manual drawing ===
 \begin{tikzpicture}
    \node at (0,3.5) {1st sketch};
    \draw[help lines] (-3,0) grid (3,3);;
    % ~~~ box ~~~~~~~~~~~~~~~~
    \draw (-1,0) rectangle (1,1.7); 
    
    % ~~~ flow lines ~~~~~~~~~~~~
    \draw (-3,3) -- (3,3);                  % A
    \draw (-3,2.5) -- (0,2.8) -- (3,2.5);   % B
    \draw (-3,1.8) -- (0,2.5) -- (3,1.8);   % C
    \draw (-3,.7) -- (0,2) -- (3,.7);       % D
    
    % ~~~ vortices ~~~~~~~~~~~~~~~
    \draw (-2.8, 0) -- (-1.5,.6) -- (-1.8, 1) -- (-1.8,.5);
    \draw (-1.5, 0) -- (-1.3,.4) -- (-1.5,.5) -- (-1.4,.4);
    \draw (1.5,1.1) -- ( 1.8,.5) -- ( 1.3,.3) -- ( 1.5,.5);
 \end{tikzpicture}


 % ~~~ 2nd: refinements ~~~
 \begin{tikzpicture}
    [decoration={
        markings,
        mark=between positions 0.06 and .5 step 5.3mm with {\arrow{stealth}} ,
        mark=between positions 0.6 and .8 step 6mm with {\arrow{stealth}} ,
        mark=between positions 0.835 and 1 step 6mm with {\arrow{stealth}}
    }]
    \draw[help lines] (-3,0) grid (3,3);
    \node at (0,3.5) {2nd: refinements};
    % ~~~ box ~~~~~~~~~~~~~~~~
    \draw[fill=gray!30] (-1,0) rectangle (1,1.7);
    
    % ~~~ flow lines ~~~~~~~~~~~~
    \draw[postaction={decorate}] (-3,3) -- (3,3);                   % A
    \draw[postaction={decorate}] (-3,2.5) to[out=7,in=180] 
                                 ( 0,2.8) to[out=0,in=173] (3,2.5); % B
    \draw[postaction={decorate}] (-3,1.8) to[out=15,in=180] 
                                 ( 0,2.5) to[out=0,in=165] (3,1.8); % C
    \draw[postaction={decorate}] (-3,.7) to[out=20,in=180] 
                                 ( 0,2) to[out=0,in=160] (3,.7);    % D
    
    % ~~~ vortices ~~~~~~~~~~~~~~~
    \draw[postaction={decorate}] (-2.8, 0) to[out=20,in=220] 
                                 (-1.5,.6) to[out=60,in=50] 
                                 (-1.8, 1) to[out=230,in=210] (-1.8,.5);
    \draw[postaction={decorate}] (-2.1, 0) to[out=10,in=0]
                                 (-1.3,.4)  -- (-1.4,.4);
    \draw[postaction={decorate}] (1.5,1.1) to[out=-40,in=90]
                                 ( 1.8,.5) to[out=270,in=-65] 
                                 ( 1.3,.3) to[out=115,in=100] ( 1.5,.5);
 \end{tikzpicture}
%  to[out=,in=]

 % ~~~ drawn by Artificial Incompetence ~~~~~~~~~~~~~~~
 \begin{tikzpicture}
    \node at (4,6.5) {coded via Artificial Incompetence:};
    \filldraw[gray!40] (2,0) rectangle (6,5);
    
    \foreach \y in {0.5,1,1.5,2,2.5,3,3.5,4,4.5,5} {
        \draw[->] (0,\y) .. controls (2,\y+0.8) and (4,\y+1.2) .. (6,\y);
        \draw[->] (6,\y) .. controls (7,\y+0.2) and (7.5,\y-0.2) .. (8,\y);
}

 \end{tikzpicture}
\end{document}

相关内容