我正在绘制一些力图,并且非常希望能够在一条线上绘制一个小直角三角形,就像下面的快照一样。
现在我正在像这样绘制力矢量:
\draw[force,->] (O) -- (C)
node[below] {$F_1 = \SI{850}{\newton}$};
我尝试创建另一个节点node[midway] (midPoint) {}
,\draw (midPoint) -- ++(0,-3mm) -- ++(4mm,0)
但是,矢量和这个小三角形之间却存在一些难看的间隙。
有没有我不知道的库可以帮助创建这样的注释?或者也许是更惯用的 tikz 方式?
谢谢你的时间!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
编辑:所以我重新利用了一个与之相关的答案(结构工程中的三角形约束) 在某种程度上:
RightAngle/.style=
{
decoration={
markings,
mark=at position 0.5 with {
\draw[-, thin] (0,0) -- (0,-3mm)
node[midway, left] {\tiny 3};
\draw[-,thin] (0,-3mm) -- (4mm, 0)
node[midway, below] {\tiny 4};
}
},
postaction=decorate
}
\draw[force,->, RightAngle] (O) -- (C)
node[below right] {$F_1 = \SI{850}{\newton}$};
这让我几乎到达了目标!但是我仍然缺少一些与新局部坐标系有关的东西。我如何让那 3 条腿垂直向下(相对于标准坐标系)?
答案1
这里有tikz
一种方法可以做到:选择矢量本身的起点和终点:
\coordinate (Start Point) at ($(O)!0.3!(C)$);
\coordinate (End Point) at ($(O)!0.5!(C)$);
在上图中,(Start Point)
是0.3
沿长度方向的,是(End Point)
沿0.5
路径方向的,使用|-
连接它们,画出一条垂直线,然后是一条水平线:
代码:
\documentclass{article}
\usepackage{siunitx}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (O) at (0,0);
\coordinate (B) at (3,4);
\coordinate (C) at (3,-2);
\draw[ultra thick, red, -latex] (O) -- (B) node[above] {$F_1 = \SI{950}{\newton}$};
\coordinate (Start Point) at ($(O)!0.3!(B)$);
\coordinate (End Point) at ($(O)!0.5!(B)$);
\draw [red] (Start Point) |- (End Point);
\draw[ultra thick, blue, -latex] (O) -- (C) node[below] {$F_1 = \SI{850}{\newton}$};
\coordinate (Start Point) at ($(O)!0.3!(C)$);
\coordinate (End Point) at ($(O)!0.5!(C)$);
\draw [blue] (Start Point) |- (End Point);
\end{tikzpicture}
\end{document}
答案2
仅用于使用 PSTricks 进行打字练习。
选项1
\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-eucl}
\psset
{
PointName=none,
PointSymbol=none,
shortput=nab,
linewidth=2pt,
linecap=1,
}
\usepackage{siunitx}
\begin{document}
\begin{pspicture}(5,-4)
\pstGeonode
{A}
(4,-3){B}
([nodesep=1]{B}A){A'}
([offset=-30pt]A'){C}
([nodesep=40pt]C){B'}
\ncline[linestyle=none]{A'}{B'}^{5}
\ncline[linecolor=gray]{A'}{C}_{3}
\ncline[linecolor=gray]{C}{B'}_{4}
\ncline{->}{A}{B}
\uput[-90](B){$F_1=\SI{850}{\newton}$}
\end{pspicture}
\end{document}
选项 2
\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-eucl}
\psset
{
PointName=none,
PointSymbol=none,
shortput=nab,
linewidth=2pt,
linecap=1,
}
\usepackage{siunitx}
\begin{document}
\begin{pspicture}(5,-4)
\pstGeonode{A}(4,-3){B}([nodesep=1]{B}A){A'}([nodesep=50pt]{B}A'){B'}(A'|B'){C}
\ncline[linestyle=none]{A'}{B'}^{5}
\ncline[linecolor=gray]{A'}{C}_{3}
\ncline[linecolor=gray]{C}{B'}_{4}
\ncline{->}{A}{B}
\uput[-90](B){$F_1=\SI{850}{\newton}$}
\end{pspicture}
\end{document}
答案3
另一个 PSTricks 解决方案。运行xelatex
:
\documentclass[pstricks,border=12pt]{standalone}
\usepackage{pst-node}
\begin{document}
\begin{pspicture}[shortput=nab,arrowscale=1.5](5,-4)
\pnodes(0,0){A}(4,-3){B}
\pcline[linewidth=1.5pt,arrows=->](A)(B)
\psLNode(A)(B){0.15}{C} \psLNode(A)(B){0.4}{D}
\pcline[linewidth=0.5pt](C)(C|D)_3
\pcline[linewidth=0.5pt](C|D)(D)_4
\pcline[linestyle=none](C)(D)^5
\uput[-90](B){$F_1=850\,\textrm{N}$}
\end{pspicture}
\end{document}