我是新手TikZ
,正在研究使用相对点的 FBD。我想为每个新的方向变化添加新的 x、y 轴。我尝试过类似以下方法:使用 PGFplots/tikz 的抛射运动图?
但是,这似乎不适用于相对点(当然我可能遗漏了一些显而易见的东西)。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{scopes}
\begin{document}
\def\fangle{148}
\def\llangle{38}
\def\ulangle{185}
\def\ubangle{31}
\def\flength{1.6cm}
\def\lllength{3.5cm}
\def\ullength{3.8cm}
\def\ublength{5.6cm}
\begin{tikzpicture}[
% force lines
force/.style={>=latex,draw=blue,fill=blue},
% axis lines
axis/.style={densely dashed,gray,font=\small},
% foot
F/.style={thick}
% lower leg
LL/.style={thick}
% upper leg
UL/.style={thick}
% upper body
UB/.style={thick}
]
\draw[blue,line width=2pt] (0,0) -- (\fangle:\flength) -- ++ (\llangle:\lllength) -- ++ (\ulangle:\ullength) -- ++ (\ubangle:\ublength);
%\draw[axis,->] (0,0) -- (1,0);
\end{tikzpicture}
\end{document}
编辑 2:我尝试使用相对坐标将点更改为坐标,这样我就可以将轴移出坐标点。但是,即使排版成功,也没有出现任何内容。
\coordinate (O) at (0,0);
\coordinate (F) at (O) -- ++ (\fangle:\flength);
\coordinate (LL) at (F) -- ++ (\llangle:\lllength);
\coordinate (UL) at (LL) -- ++ (\ulangle:\ullength);
\coordinate (UB) at (UL) -- ++ (\ubangle:\ublength);
\draw[blue, line width = 2pt] (O) -- ++ (F) -- ++ (LL) -- ++ (UL) -- ++ (UB);
编辑 3:这可以命名坐标。但是,现在我需要弄清楚如何使用它们将轴添加到每个方向的变化中。FBD 看起来类似于下面的图片。因此,如果能帮助我如何标记等,我将不胜感激!不过,我相信一旦我能让轴工作起来,我就能弄清楚。
\draw[blue,line width=2pt] (0,0) coordinate (O) node[red]{.} -- ++ (\fangle:\flength) coordinate (F) node[red]{.} -- ++ (\llangle:\lllength) coordinate (LL) node[red]{.} -- ++ (\ulangle:\ullength) coordinate (UL) node[red]{.} -- ++ (\ubangle:\ublength) coordinate (UB)node[red]{.};
答案1
欢迎来到 TeX.SE!
作为起点....我把完成的图像留给你:-)
\documentclass[margin=3mm]{standalone}
\usepackage{siunitx} % new
\usepackage{tikz}
\usetikzlibrary{angles, arrows.meta, % new
quotes, % new
scopes} % where is needed?
\begin{document}
\def\fangle{148}
\def\llangle{38}
\def\ulangle{185}
\def\ubangle{31}
\def\flength{1.6cm}
\def\lllength{3.5cm}
\def\ullength{3.8cm}
\def\ublength{5.6cm}
\begin{tikzpicture}[auto=right,
every edge quotes/.append style = {font=\footnotesize},
my angle/.style = {draw, densely dotted,
angle radius = 5mm,
angle eccentricity=1.4,
font=\tiny},
> = Latex, % new
% force, vertical
Fv/.style = {->, draw=#1, thick}, % changed
% axis lines
axis/.style={densely dashed,gray,font=\small},
% foot
F/.style={thick}
% lower leg
LL/.style={thick}
% upper leg
UL/.style={thick}
% upper body
UB/.style={thick}
]
\draw[blue,line width=2pt]
(0,0) coordinate (S)
-- ++ (\fangle:\flength/2) coordinate (Am)
-- ++ (\fangle:\flength/2) coordinate (A)
-- ++ (\llangle:\lllength/2) coordinate (Bm)
-- ++ (\llangle:\lllength/2) coordinate (B)
-- ++ (\ulangle:\ullength/2) coordinate (Cm)
-- ++ (\ulangle:\ullength/2) coordinate (C)
-- ++ (\ubangle:\ublength/2) coordinate (Dm)
-- ++ (\ubangle:\ublength/2) coordinate (D);
% "axis" /dashed lines)
\draw[axis] (-3,0) coordinate (aux) -- (aux -| D);
\draw[axis] (aux |- A) -- (A -| D) coordinate (Ad);
\draw[axis] (aux |- B) -- (B -| D);
\draw[axis] (aux |- C) -- (C -| D);
\draw[axis] (aux |- Dm) coordinate (Dam) -- (Dm -| D);
% angles
\pic [my angle, "\ang{148}"] {angle = A--S--aux};
\pic [my angle, "\ang{38}"] {angle = Ad--A--B};
\pic [my angle, "\ang{5}"] {angle = C--B--A};
\pic [my angle, "\ang{31}"] {angle = B--C--D};
% forces
\draw[Fv=brown] (S) to["$F_N$"] ++ (0,+0.8);
\draw[Fv=blue] (Am) to["$W_F$"] ++ (0,-0.8);
\draw[Fv=purple] (Bm) to["$W_{LL}$" '] ++ (0,-0.8);
\draw[Fv=orange] (Cm) to["$W_{UL}$"] ++ (0,-0.8);
\draw[Fv=red] (Dm) to["$W_{UL}$" '] ++ (0,-0.8);
\draw[Fv=red] (C) ++ (\ubangle:-1.2) coordinate (Fsb) to["$W_{SB}$" ', sloped] (C);
\draw[axis] (Fsb) ++ (-1,0) -- (Fsb -| C) coordinate (Fsbc);
\pic [my angle, "$31$"] {angle = Fsbc--Fsb--C};
\draw[Fv=green] (Dm) to["$F_{M}$" ', sloped] ++ (195:5) coordinate (Fm);
\pic [my angle, "$\theta$"] {angle = Dam--Dm--Fm};
\end{tikzpicture}
\end{document}