如何在 TikZ 中创建花园

如何在 TikZ 中创建花园

如何使用 Ti 在 LaTeX 中制作如下花园Z?了解概念方法很有趣,例如使用带有图像或其他 tikz 元素的节点。

在此处输入图片描述

答案1

简单的。

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}

\node at (0,0) {\includegraphics{garden.png}};

\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

在评论中,Henri Menke 建议询问 ChatGPT。由于问题标签为“有趣”,所以我想试一试。

最初的提示是“编写 tikz 代码,生成一张带有一些花草的矩形花园图片”。它的第一个答案产生了一个错误,但在我将错误粘贴回 ChatGPT 后,它修复了错误并给了我这个(下面的代码):

在此处输入图片描述

我认为对于第一次尝试来说这还不错,所以我要求它为植物和花朵添加一些额外的细节,例如茎和叶。不幸的是,结果是这样的:

在此处输入图片描述

我尝试点击“重新生成响应”几次,但结果总是同样奇怪,我得出结论,ChatGPT 对植物和花朵的外观没有足够的了解,无法正确绘制它们。考虑到它只接受过文本训练,而不是图像训练,这也许并不奇怪。不过,如果有人有权限,我敢打赌 GPT 4 或 5 会做得更好。

这是它给我的代码。这 100% 是由 ChatGPT 编写的,我根本没有编辑过它。

第一张图片:

\documentclass[tikz]{standalone}

\begin{document}

\begin{tikzpicture}[scale=0.5]
  % Garden dimensions
  \def\gardenwidth{10}
  \def\gardenheight{8}

  % Draw the garden
  \draw[green!60!black, fill=green!20] (0,0) rectangle (\gardenwidth,\gardenheight);

  % Add some flowers
  \foreach \x/\y/\color in {{2/2/red},{4/6/blue},{8/4/yellow},{6/2/purple}}
    \draw[\color, fill=\color] (\x,\y) circle (0.3);

  % Add some plants
  \foreach \x/\y in {{1/6},{3/3},{7/7},{9/2}}
    \draw[brown!70!black, fill=green!60!black] (\x,\y) circle (0.5);
\end{tikzpicture}

\end{document}

第二张图片:

\documentclass[tikz]{standalone}

\begin{document}

\begin{tikzpicture}[scale=0.5]
  % Garden dimensions
  \def\gardenwidth{10}
  \def\gardenheight{8}

  % Draw the garden
  \draw[green!60!black, fill=green!20] (0,0) rectangle (\gardenwidth,\gardenheight);

  % Add some flowers
  \foreach \x/\y/\color in {{2/2/red},{4/6/blue},{8/4/yellow},{6/2/purple}}
    {
      \draw[brown!70!black, fill=brown!70!black] (\x,\y+0.3) circle (0.1);
      \draw[\color, fill=\color] (\x,\y) circle (0.3);
      \draw[\color, fill=\color] (\x-0.2,\y+0.2) circle (0.1);
      \draw[\color, fill=\color] (\x+0.2,\y+0.2) circle (0.1);
      \draw[\color, thick] (\x,\y+0.3) -- (\x,\y+0.7);
    }

  % Add some plants
  \foreach \x/\y in {{1/6},{3/3},{7/7},{9/2}}
    {
      \draw[brown!70!black, fill=green!60!black] (\x,\y) circle (0.5);
      \draw[green!60!black, thick] (\x,\y+0.5) -- (\x,\y+1.5);
      \draw[green!60!black, thick] (\x-0.3,\y+0.8) -- (\x,\y+1.5) -- (\x+0.3,\y+0.8);
      \draw[green!60!black, thick] (\x-0.2,\y+0.7) -- (\x,\y+1.5) -- (\x+0.2,\y+0.7);
    }
\end{tikzpicture}

\end{document}

答案3

这是实现此目的的一种方法。基本思想如下所示:

  • 准备具有透明背景的图像
  • 通过节点放置它们,即以图形而不是文本作为内容
  • 或者,您可以使用 tikz 的图片并通过 tikz 绘制向日葵等

细节:

  • 你需要\usetikzlibrary{backgrounds}
  • 背景设置通过background rectangle
  • 其他草地区域可以绘制closed pathrounded corners
  • 根据需要放置向日葵、鲜花、郁金香、草、灌木等(注意比例的变化)
  • 你可以使用一些节点的锚点进行更精确的定位(见草地和灌木丛)
  • 根据需要添加更多图像(我用到的在最后)

评论:

  • tikz 提供了更多的复杂功能,比如使用循环来放置灌木丛
  • 或者随机的东西,比如你可能需要前面的石头
  • ETC。

结果

\documentclass[10pt, border=3mm]{standalone}

\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usepackage{graphicx}

\begin{document}

\tikz[background rectangle/.style={fill=orange!45},show background rectangle]{

    % ~~~ orange meadows ~~~~~~~~~~~~~
    \definecolor{lo}{rgb}{.95,.83,.78}
    \draw [lo, fill=lo, rounded corners=20pt] (-7,-3) -- (-2,2) -- (0,1.3) -- (1.5,-1) -- (0,-1.5) -- (3,-2) -- (0,-3) -- cycle;

    % ~~~ sunflowers ~~~~~~~~~~~
    \node (S1) at (6,4) {\includegraphics[scale=1]{sunflower}};
    \node at (4.5,3.5)  {\includegraphics[scale=.9]{sunflower}};
    \node (S3) at (5,3) {\includegraphics[scale=.7]{sunflower}};
    
    % ~~~ flowers ~~~~~~~~~~~~~~~
    \node at (3,-4)     {\includegraphics[scale=1]{flower}};
    \node at (4.5,-2)   {\includegraphics[scale=.6]{flower}};
    \node at (6,-4.5)   {\includegraphics[scale=1.1]{flower}};
    
    % ~~~ tulips ~~~~~~~    
    \node at (-5,3.5)   {\includegraphics[scale=1]{tulip}};
    \node at (-4,4.5)   {\includegraphics[scale=.9]{tulip}};
    
    % ~~~ gras ~~~~~~~~~~~
    \node at (S3.south) {\includegraphics[scale=.7]{gras1}};
    \node at (S1.south) {\includegraphics[scale=.7]{gras2}};
    \node at (0,0)      {\includegraphics[scale=1]{gras1}};
    \node at (2,2)      {\includegraphics[scale=1.1]{gras2}};
    
    % ~~~ bushes ~~~~~~~~~~~~~~~~~~~~~
    \node (B1) at (-8,4)        {\includegraphics[scale=1]{bush}};
    \node (B2) at (B1.south) [yshift=-4mm]  {\includegraphics[scale=1]{bush}};
    \node (B3) at (B2.south) [yshift=-4mm]  {\includegraphics[scale=1]{bush}};
}

\end{document}

灌木丛花 gras1gras2 向日葵郁金香

相关内容