将 TikZ 中的矩形形状转换为梯形

将 TikZ 中的矩形形状转换为梯形

我有一些 TikZ 代码,我想在其中加宽输出的底部,同时保留顶部的宽度。(糟糕的表述,不知道如何很好地表述这一点。)

例如,假设我有一些正方形

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}

% Not my actual code snippet, but for simplicity, let's just draw a square
\draw (-1, -1) -- (1, -1) -- (1, 1) -- (-1, 1) -- cycle;

\end{tikzpicture}
\end{document}

现在,对于这个简单的例子,很容易加宽输出的底部,只需画一个等腰梯形,而不是像

\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}

% The top's width is preserved, while the bottom's width is stretched
\draw (-2, -1) -- (2, -1) -- (1, 1) -- (-1, 1) -- cycle;

\end{tikzpicture}
\end{document}

然而,对于更复杂的代码片段,我无法访问。

如何将一般的矩形输入转换为等腰梯形输出?环境scope有用吗?

答案1

以下是使用语句绘制和重复使用等腰梯形的方法\pic

  • \pic你定义在-style中绘制什么
  • 您使用的\pic非常类似于\node

解决方案分为两部分:

    1. 绘制固定梯形,展示基础知识
    1. 允许将参数传递给\pic,有点高级

结果

第 1 部分:固定梯形

基本思想很简单:

  • 定义 4 个坐标
  • 画一条闭合线(这就是它的cycle作用)
  • 将此图片风格称为trap

\pic如图所示调用,并设置一些选项。

\pic at (0,0) {trap};
第 2 部分:柔性梯形

这里的新内容是传递 3 个参数,我决定将它们用作/分隔符。这样做的开销trap有点不同,但您应该看到与上面相同的坐标和绘图。还请注意参数 #1、#2 和 #3 的替换。指定 pic 和参数:

\pic at (0,0) {trap={2/4/1}};
代码:
\documentclass[10pt,border=3mm,tikz]{standalone}

\begin{document}
 \begin{tikzpicture}[
    trap/.pic={
        \coordinate (A) at ( 3,0);
        \coordinate (B) at (-3,0);
        \coordinate (C) at (-2,1);
        \coordinate (D) at ( 2,1);
        %       
        \draw (A) -- (B) -- (C) -- (D) -- cycle;
    }
 ]
 \pic at (0,0) {trap};
 \pic[scale=.5,rotate=30] at (0,-2) {trap};
 \end{tikzpicture}
 

  \begin{tikzpicture}
  [
    pics/trap/.style args={#1/#2/#3}% bottom, top, height
    {
     code={
        \coordinate (A) at ( #1,0);
        \coordinate (B) at (-#1,0);
        \coordinate (C) at (-#2,#3);
        \coordinate (D) at ( #2,#3);
        %       
        \draw (A) -- (B) -- (C) -- (D) -- cycle;
     }
    }
 ]
 \pic at (0,0) {trap={2/4/1}};
 \pic[scale=.5,rotate=-30] at (0,-2) {trap={3/1/2}};
 \end{tikzpicture}
\end{document}

相关内容