稍微复杂的自由体图

稍微复杂的自由体图

我想使用 TiZ 绘制如下图:

在此处输入图片描述

我是 Ti 的新手Z.我的第一次尝试是

\begin{tikzpicture}[>=Latex]

   \draw[thick] (0,0) rectangle (10mm,10mm);
\node at (0.5,0.5) {$M_{1}$};
   \draw[thick,->](0.5,0)--(0.5,-1)node[below]{$M_{1}g$};
   \draw[thick,->](0.5,1)--(0.5,2)node[above]{$T_1$};
  \draw[thick,->](1,0.5)--(2,0.5)node[right]{$N_{31}$};

\draw[thick] (2,0) rectangle (10mm,10mm);
\node at (4.5,0.5) {$M_{1}$};
   \draw[thick,->](4.5,0)--(4.5,-1)node[below]{$M_{1}g$};
   \draw[thick,->](4.5,1)--(4.5,2)node[above]{$T_1$};
  \draw[thick,->](4,0.5)--(3,0.5)node[above]{$N_{31}$};
\end{tikzpicture}

绘制前两个矩形。但是第二个矩形绘制在第一个矩形旁边(没有像 M1 和 M2 矩形之间的空间那样的空间)。我也不确定如何在 M3 中构建圆圈。任何指示都将不胜感激。

答案1

欢迎来到 TeX.SE!我认为 Ti 最大的优势之一Z 是,几乎可以用相对坐标做任何事情。下面的 MWE 说明了这一点,其中没有对象位于绝对坐标上(除了第一个框)。

\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{positioning,arrows.meta,angles,quotes}
\begin{document}
\begin{tikzpicture}[>=Latex,Box/.style={draw,thick,minimum width=10mm,minimum
height=10mm}]
   % first box
   \node[Box] (M1){$M_{1}$};
   \draw[thick,->](M1.south) -- ++(0,-0.5) node[below]{$M_{1}g$};
   \draw[thick,->](M1.north) --  ++(0,0.5) node[above]{$T_1$};
   \draw[thick,->](M1.east) -- ++(0.5,0) node[right] (N31){$N_{31}$};
   % second box
   \node[Box,right=1mm of N31] (M2){$M_{2}$};
   \draw[thick,->](M2.south) -- ++(0,-0.5) node[below]{$M_{2}g$};
   \draw[thick,->](M2.north) --  ++(0,0.5) node[above]{$N_{32}$};
   \draw[thick,->](M2.east) -- ++(0.5,0) node[right] (T1){$T_{1}$};
   % third box
   \node[Box,right=1.5cm of M2,minimum size=2cm] (M3){$M_{3}$};
   \draw[thick,->](M3.north) --  ++(0,0.5) node[above]{$N_{3}$};
   \draw[thick](M3.north east) --  ++(0.3,0.3) node[circle,draw,minimum
   size=3mm,fill=white] (Circ){};
   \draw[thick,->] (Circ.north) -- ++(-0.5,0) node[left]{$T_1$};
   \draw[thick,->] (Circ.east) -- ++(0,-0.5) node[below]{$T_1$};
   \draw[thick,->]([xshift=-4mm]M3.south) -- ++(0,-0.5) node[below]{$M_{3}g$};
   \draw[thick,->]([xshift=4mm]M3.south) -- ++(0,-0.5) node[below]{$N_{23}$};
   % fourth box
   \node[Box,right=1.5cm of M3,minimum size=1.5cm] (M4){$M_{4}$};
   \draw[thick,->](M4.south) -- ++(0,-0.5) node[below]{$M_{4}g$};
   \draw[thick,->](M4.north) --  ++(0,0.5) node[above]{$N_{4}$};
   \draw[dashed]([yshift=-3mm]M4.north east) coordinate (aux1) --  ++(0.7,0) coordinate (aux2);
   \draw[thick,->] (aux1) -- ++ (0.7,-0.7) coordinate (aux3) node[below]{$T_2$};
   \draw pic ["$\theta$",angle eccentricity=1.33,draw,-,angle radius=4mm] 
 {angle = aux3--aux1--aux2};
\end{tikzpicture}
\end{document}

在此处输入图片描述

让我尝试解释一下这里发生的事情。

  1. positioning库用于将对象(节点)相对于彼此定位。例如,\node[Box,right=1.5cm of M2,minimum size=2cm] (M3){$M_{3}$};表示框M3应位于 右侧 1.5 厘米处。这有一个很大的优势,如果您决定增加和M2之间的距离,您只需增加,其他一切都会自动移动。无需调整大量坐标。M2M31.5cm
  2. 如您所见,我使用节点来绘制这些框。除了我不必在文本周围绘制矩形之外,我还可以使用节点的锚点来绘制其他元素,例如。在这里,我从下边界的中间(即锚点)向负方向 0.5 厘米处\draw[thick,->](M1.south) -- ++(0,-0.5) node[below]{$M_{1}g$};绘制一个箭头,并在下面添加一个节点。southy
  3. 这也有助于绘制圆圈,我只需将箭头附加到北锚和东锚即可。
  4. Z 还具有一个允许人们绘制和注释角度的库,如中所示\draw pic ["$\theta$",angle eccentricity=1.33,draw,-,angle radius=4mm] {angle = aux3--aux1--aux2};

相关内容