表示二维变换

表示二维变换

我看过这个关于线性变换和矩阵的视频我也想在我的论文中用同样的方式表示矩阵。如下所示:

矩阵

如您所见,x 轴和 y 轴以白色表示,而变换域则以蓝色表示。背景显示标准域。

我习惯使用 tikzpicture 来表示简单的形状,但我不知道如何创建像图像中那样的网格,怎么做?

答案1

让我们从背景网格开始:本网站创建一个像这样的简单网格:

\draw[step=1cm,gray,very thin] (-2,-2) grid (6,6);

您的背景网格具有小步长和大步长,因此我们绘制两个网格:

\draw[step=0.5cm, gray!20!white, very thin] (-7, -3) grid (7, 3);
\draw[step=1cm, gray!60!white, thin] (-7, -3) grid (7, 3);

在此处输入图片描述

下一步是新基础网格,即蓝色平行四边形。您可以使用循环\foreach来制作给定线的平移副本,如下所示:

\foreach \x in {-4,...,4} {
    \draw[color=blue, thick] (-1 + 1.5*\x, -3) -- (1 + 1.5*\x, 3);
}

第二个基础方向非常相似。

在此处输入图片描述

新的轴应该是不同的颜色,但我们可以通过使它们稍微粗一点来将它们绘制在蓝色轴上:

\draw[color=green!80!black, line width=1.05pt] (-1, -3) -- (1, 3);
\draw[color=green!80!black, line width=1.05pt] (-7, -1) -- (7, 1);

\draw[color=red!80!black, line width=1.10pt, ->] (0, 0) -- (1/3, 1);
\draw[color=red!80!black, line width=1.10pt, ->] (0, 0) -- (2, 2/7);

网格已完成;您所要做的就是添加矩阵。

在此处输入图片描述

这是完整的代码。如果你想调整图表,或者使用不同的基向量,最好定义控制线斜率的快捷方式,而不是对所有内容进行硬编码。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}

\draw[step=0.5cm, gray!20!white, very thin] (-7, -3) grid (7, 3);
\draw[step=1cm, gray!60!white, thin] (-7, -3) grid (7, 3);

\foreach \x in {-4,...,4} {
    \draw[color=blue, thick] (-1 + 1.5*\x, -3) -- (1 + 1.5*\x, 3);
}
\foreach \y in {-2,...,2} {
    \draw[color=blue, thick] (-7, -1 + \y) -- (7, 1 + \y);
}

\draw[color=green!80!black, line width=1.05pt] (-1, -3) -- (1, 3);
\draw[color=green!80!black, line width=1.05pt] (-7, -1) -- (7, 1);

\draw[color=red!80!black, line width=1.10pt, ->] (0, 0) -- (1/3, 1);
\draw[color=red!80!black, line width=1.10pt, ->] (0, 0) -- (2, 2/7);

\end{tikzpicture}
\end{document}

答案2

您实际上可以实时看到变换对基本网格的影响。PDF 规范允许编写仿射变换。如果您限定变换的范围,它将是该范围的本地变换。

\documentclass[tikz,margin=5mm]{standalone}
\begin{document}
\begin{tikzpicture}
\fill (-2,-2) rectangle (6,6);
\draw[very thin,draw=gray!70] (-2,-2) grid[step=5mm] (6,6);
\draw[thick,draw=gray!50] (-2,-2) grid[step=1cm] (6,6);

\begin{scope}[]
  \clip (-2,-2) rectangle (6,6);
  \begin{scope}[cm={1,2,3,1,(0,0)}]
    \draw[draw=blue!50] (-2,-2) grid[step=1cm] (6,6);
  \end{scope}
\end{scope}

\draw[ultra thick,draw=red,latex-latex] (1,2) -- (0,0) -- (3,1);
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容