使用 TikZ 进行应力分布

使用 TikZ 进行应力分布

我正在尝试使用 TikZ 绘制应力分布。它应该如下图所示:

enter image description here

到目前为止,我刚刚完成三角分布:

\documentclass{article}
\usepackage{tikz}             
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{center}
\setlength\PreviewBorder{10pt}

\begin{document}
\begin{center}
  \begin{tikzpicture}
    \draw (-0.2,0) -- ++(0,4);
    \foreach \i in {0.5,0.75,...,4} {
      \draw[-latex] (-2*\i/4-0.2,\i) -- (-0.2,\i);
    }
    \draw (-0.2,0) -- ++(-2,4);
  \end{tikzpicture} %
\end{center}
\end{document}

我需要代码方面的帮助。

答案1

你的方法很好,唯一的小挑战是抑制箭头太短的区域。使用一些max技巧min,你可以在屏幕截图的右侧绘制形状。以下是两个示例。

\documentclass{article}
\usepackage{tikz}             
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{center}
\setlength\PreviewBorder{10pt}

\begin{document}
\begin{center}
  \begin{tikzpicture}
    \draw (-1,0) -- ++(0,4);
    \foreach \i in {0.25,0.5,...,4} {
      \pgfmathtruncatemacro{\Sign}{sign(int(4*(-0.8+2*\i/4)))}
      \ifnum\Sign=0
      \else
      \draw[latex-] (-2*\i/4-0.2,\i) -- (-1,\i);
      \fi
    }
    \draw (-0.2,0) -- ++(-2,4);
    \begin{scope}[xshift=4cm]
    \draw (0,0) -- ++(0,4);
    \foreach \i in {0,0.25,...,4} {
      \pgfmathsetmacro{\X}{min(max(-\i+2,-1),1)}
      \pgfmathtruncatemacro{\Sign}{sign(int(4*\X)))}
      \ifnum\Sign=0
      \else
      \draw[latex-] (\X,\i) -- (0,\i);
      \fi
    }
    \draw (0,2) -- ++(-1,1) -- ++(0,1);
    \draw (0,2) -- ++(1,-1) -- ++(0,-1);
    \end{scope}
  \end{tikzpicture} %
\end{center}
\end{document}

enter image description here

答案2

使用库可以相对容易地完成此操作intersections。只有当箭头太短时,我们才需要此方法\ifnum\i=来取消它。此方法适用于所有其他形状,我只选择了第三个。

\documentclass{article}
\usepackage{tikz}             
\usetikzlibrary{intersections}
\begin{document}

\begin{tikzpicture}[>=latex]
\draw (0,0)--(0,5);
\draw[name path=line 1] (1,0)--(1,1)--(-1,3)--(-1,5);
\foreach [count=\i] \p in {0,.5,...,5}{
  \path [name path=line 2] (-3,\p)--(3,\p);
  \path [name intersections={of=line 1 and line 2}];
  \ifnum\i=5\else\draw[->] (0,\p)--(intersection-1);\fi
}
\end{tikzpicture}

\end{document}

enter image description here

相关内容