在 Tikz 上绘制复杂轮廓

在 Tikz 上绘制复杂轮廓

问题

我想在我目前正在写的一篇论文中包含三个轮廓。不幸的是,我几乎没有使用 Tikz 的经验,而且截止日期很快就要到了。我真的很感激这些轮廓的简洁代码。如果可能的话,请在代码中包含以下内容:

  • C 轮廓应该大小相等
  • R 轮廓中的轴不太长
  • 红线到 H+ 和 H- 的距离与欧米茄半圆的半径相同
  • Gamma+ 定义为从 gamma+iT 到 H+ 起点的“四分之一”椭圆,其中心为 gamma+it 线,但高度为 H+(类似于 Gamma-)

请将代码中的参数写清楚,以便我可以轻松调整它们。最重要的是红线到 H+ 和 H- 的距离(这也是小圆圈的半径)。谢谢。

在此处输入图片描述

我的解决方案

感谢 MS-SPO 的回答,我才能够编写 Tikz 代码:

\begin{tikzpicture}[scale=0.5]
\draw[->] (-12,0) -- (12,0) node[right] {$\text{Re}$};
\draw[->] (0,-12) -- (0,12) node[above] {$\text{Im}$};
%\node at (2.2,0) {R};
%\node at (0,2.2) {I};


\newcommand\g{2}
\newcommand\T{10}
\newcommand\e{0.5}
\newcommand\Rp{1}
\newcommand\Ip{2}
\newcommand\ly{(\T-\Ip-\e)}
\coordinate (A) at (\g,\T);
\coordinate (B) at (-\T+\Rp,\Ip+\e);
\coordinate (C) at (\Rp,\Ip+\e);
\coordinate (D) at (\Rp,\Ip-\e);
\coordinate (E) at (-\T+\Rp,\Ip-\e);
\coordinate (F) at (\g,-\T);
\draw (A) -- (F) ;
\draw (B) -- (C);
\draw (D) -- (E);
\draw (\Rp,\Ip+\e) arc (90:-90:\e);
\draw (\g,\T) arc(90:180:\T cm+\Rp cm and \T cm - \Ip cm -\e cm);
\draw (\g,-\T) arc(-90:-180:\T cm +\Rp cm and \T cm + \Ip cm -\e cm);
\end{tikzpicture}



\newpage


\begin{tikzpicture}[scale=0.5]
\draw[->] (-12,0) -- (12,0) node[right] {$\text{Re}$};
\draw[->] (0,-12) -- (0,12) node[above] {$\text{Im}$};
%\node at (2.2,0) {R};
%\node at (0,2.2) {I};


\newcommand\g{2}
\newcommand\T{10}
\newcommand\e{0.5}
\newcommand\Rp{1}
\newcommand\Ip{2}
\newcommand\ly{(\T-\Ip-\e)}
\coordinate (A) at (\g,\T);
\coordinate (B) at (-\T+\Rp,\Ip+\e);
\coordinate (C) at (\Rp,\Ip+\e);
\coordinate (D) at (\Rp,\Ip-\e);
\coordinate (E) at (-\T+\Rp,\Ip-\e);
\coordinate (F) at (\g,-\T);
\draw (B) -- (C);
\draw (D) -- (E);
\draw (\Rp,\Ip+\e) arc (90:270:\e);
\draw (-\T+\Rp,\Ip+\e) arc (90:270:\e);
\end{tikzpicture}

答案1

对于像这样的一般性问题,特别是没有任何代码显示您的尝试,这里有一个类似一般性水平的答案。

我假设您已经掌握了创建tikzpicture编译环境的技能。所有注释都发生在这个环境中。

让我们把焦点集中在路径上。

指定这 6 个坐标,例如:

 \coordinate (A) at (7,8);

小路

接下来开始画一条封闭的路径,像这样;先从线段开始看,结果是正确的:

   \draw (A) -- (B) -- (C) -- (D) -- (E) -- (F) -- cycle;

手册,包括其 4 个教程。

将从 (C) 到 (D) 的线段替换为arc

如果另外两个曲线路径不需要与圆匹配,请寻找[out= .., in=...]语句来引入一些弯曲。

为了改进箭头,您可能需要看一下图书馆decoration

放置所有这些文本,使用\node at (..,..) {$\gamma$};

或多或少,就是这样。

附言:为了更灵活地创建和放置 3 幅图纸,您可以考虑将它们放入 中\pic。简而言之,这很像宏。

答案2

\begin{tikzpicture}
    % load your figure, and adjust opacity
    \node[opacity=0.1](fig){\includegraphics[width=.94\textwidth]{handscript.jpeg}};
    % draw coordiate system
    \draw[thin, gray, step=0.2](fig.north west) grid (fig.south east);
    \draw[thick](fig.north west) grid (fig.south east);
    \draw[->, thick](fig.west) -- (fig.east)node[below]{$x$};
    \draw[->, thick](fig.south) -- (fig.north)node[above]{$y$};
    \foreach \x in {-7,...,-1,1,2,3,4,5,6,7}
        {
            \node[below left] at (\x, 0) {\x};
            \node[below left] at (0, \x) {\x};
        }
    % pick points manually and connect them
    \begin{scope}[line width=2pt, decoration={markings, mark=at position 0.5 with {\arrow{>}}}]
        \draw[postaction={decorate}](-1.4, 7.4) to[out=175, in=45] (-6.5, 6);
        \draw[postaction={decorate}](-6.5, 6) -- (-3.2, 6);
        \draw(-3.2, 6) to[out=335, in=25, looseness=1.8](-3.2, 5.4);
        \draw[postaction={decorate}](-3.2, 5.4) -- (-6.5, 5.4);
        \draw[postaction={decorate}](-6.5, 5.4) to[out=290, in=170] (-1.4, 1.4);
    \end{scope}
    \draw[line width=2pt, decoration={markings, mark=between positions 0.25 and 0.75 step 0.5 with {\arrow{>}}},postaction={decorate}](-1.4, 1.4) -- (-1.4, 7.4);
    % TODO

\end{tikzpicture}

在此处输入图片描述

相关内容