梯形,如何计算角度?

梯形,如何计算角度?

我喜欢画下面的画:

在此处输入图片描述

它是用以下代码生成的:

    \documentclass[12pt,tikz,border=3mm]{standalone}
    %    \usepackage{zfc-book-standalone}
    \usetikzlibrary{arrows.meta,positioning,shapes}
    %---------------------------------------------------------------%
            \begin{document}
    \begin{tikzpicture}[
    node distance = 0mm and 0mm,
L/.style = {line width=1mm, draw=gray,
            arrows={-Stealth[fill=gray,inset=0pt,length=0pt 1.2,angle'=90]},
            },
T/.style 2 args = {name=n#1,
                   draw=#2, fill=#2!20,% draw and fill color
            trapezium, 
            trapezium stretches body,
            trapezium left angle=105, trapezium right angle=75,
            inner sep=0mm, outer sep=0mm, 
            text width=33mm, text height=4mm,
            rotate=-15,
                   }
                        ]
%-------- 
\node[T={1}{teal}]                          {}  (0,0); 
\node[T={2}{teal},  below right=of n1.bottom left corner,
            anchor=top left corner]  {};
\node[T={3}{teal},  below right=of n2.bottom left corner,
            anchor=top left corner]  {};
%-------- 
\node[T={4}{cyan},  trapezium left angle=75, trapezium right angle=105,
            text height=3mm, %text width=33mm + 2.8977/2 mm,
            rotate=30,
            below left =of n3.bottom right corner,
            anchor=top right corner]         {};
%-------- 
    \foreach \i [count=\xi from 4]  in {5,6,7}
\node[T={\i}{teal},below right=of n\xi.bottom left corner,
            anchor=top left corner]  {};
%-------- 
    \foreach \i in {1,2,...,7}
\draw[L,shorten <=11mm,shorten >=11mm]    
            \ifnum\i=4
(n4.east) -- (n4.west)
            \else
(n\i.west) -- (n\i.east)
            \fi;          
%--------
\draw[red,ultra thin]   (n1.top  left corner) |- (n7.bottom  left corner)
                        (n1.top right corner) |- (n7.bottom right corner);
%----------------
    \end{tikzpicture}
            \end{document}

我阅读了这里所有相关的问题,但没有找到解决方案,如何确定梯形中的角度,使得左形状边框对齐(参见堆栈左侧红线指出的差异)。

问题: 除了猜测之外,有没有办法根据给定的旋转角度、梯形宽度和高度确定左、右梯形,使得左(和右)形状边框对齐,即位于垂直线上?

编辑: 再次阅读后绘制具有固定角度、宽度和高度的平行四边形?,正如“percusse”所建议的,我意识到,如果我用通过文本宽度和文本高度获得的固定测量值来改变上述 MWE 最小宽度和高度,我就能解决大多数问题: 在此处输入图片描述

以下仍开放问题

如何确定文本宽度,使其独立于文本高度?

答案1

为什么不直接画出来呢?这样可以得到:

在此处输入图片描述

代码更简单:

\documentclass[12pt,tikz,border=3mm]{standalone}
\usetikzlibrary{arrows.meta,positioning,shapes}
\begin{document}

\begin{tikzpicture}[scale=0.5,T/.style={draw=#1,fill=#1!20},
      L/.style = {line width=1mm, draw=gray,
                  arrows={-Stealth[fill=gray,inset=0pt,length=0pt 1.2,angle'=90]}}]
   \draw[T=teal](0,10)--(8,9)--(8,6)--(0,7)--cycle;
   \draw[T=cyan](8,6)--(8,5)--(0,4)--(0,5)--cycle;
   \draw[T=teal](0,4)--(8,3)--(8,0)--(0,1)--cycle;
   \foreach \ht in {9,8,3,2} {
     \draw[teal] (0,\ht)--++(8,-1);
   }
   \foreach \ht in {1.25,2.25,3.25,7.25,8.25,9.25} {
      \draw[L](2,\ht)--++(4,-0.5);
   }
   \draw[L](6,5.25)--++(-4,-0.5);
   \draw[step=5mm] (0,0) grid (10);

   \draw[red](0,0)--(0,10);% for comparing the LHS
\end{tikzpicture}

\end{document}

当然,如果这是更普遍的东西的一部分,那么这可能不合适......也许我对你的尺寸做出了错误的猜测,但它看起来很接近你想要的 MWE。

对于“具有一般角度的梯形”,我会使用该calc库进行计算,然后以相同的方式绘制相应的坐标。

相关内容