答案1
作为起点:
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
positioning}
\begin{document}
\begin{tikzpicture}[
node distance = 5mm and 7mm,
box/.style = {draw, text width=22mm, minimum height=11mm, align=center},
pics/adjbox/.style = {
code = {\node (@adjbox) [box] {#1};
\coordinate[below=3mm of @adjbox.south west] (-adjb);
\coordinate[above=3mm of @adjbox.north east] (adjt);
\draw[->] (-adjb) -- (adjt);
\coordinate (-in1) at ([yshift=+3mm] @adjbox.west);
\coordinate (-in2) at ([yshift=-3mm] @adjbox.west);
\coordinate (-out) at (@adjbox.east);}
},
sum/.style = {circle, draw, node contents={}},
> = Stealth
]
\node (n1) [box] {Reference Model};
\pic (n2) [below left=of n1.south] {adjbox=Controller};
\coordinate[left=of n2-in1] (aux1);
\coordinate[left=of aux1] (in);
\draw[->] (in) -- node[above] {$r$} (aux1) -- (n2-in1);
\draw[->] (aux1) |- (n1);
\node (n3) [box,below right=of n1.south] {Uncertain Plant};
\coordinate[right=of n3] (aux2);
\coordinate[below=of aux2 |- n3.south] (aux3);
\draw[->] (aux3) -- (aux3 -| aux1) |- (n2-in2);
\draw[->] (n2-out) -- (n3);
\node (n4) [sum,right=of aux2];
\draw[->] (n1) -| (n4) node [pos=0.9, right] {$x_m$}
node [pos=0.9, left] {$+$};
\draw[->] (n3) -- (aux2) -- node[above] {$x$} (n4)
node [below left] {$-$};
%
\node (n5) [box, below=of n1 |- aux3] {Addaptive Law};
\draw[->] (aux2) |- ([yshift= 3mm] n5.east);
\draw[->] (n4) |- ([yshift=-3mm] n5.east) node[pos=0.05,right] {$e$};
\draw(n5) -| node[pos=0.1,above] {$\theta$} (n2-adjb);
\end{tikzpicture}
\end{document}
编辑:
- 基础教程,如何使用 TikZ 在第章中描述2 教程:Karl 的学生照片从第 31 页开始,TikZ 和 PGF 手册,v. 3.1.5.b。
- 第三部分值得一读:TikZ 不是一个绘画程序从第 123 页开始。特别章节16支箭(第 191 页)13 指定坐标(第 136 页),17 节点和边(第 224 页)和18 张图片:路径上的小图片(第 263 页)。
- 节点形状在第五部分:库中描述。所有方案元素都定义了样式(
box
、adjbox
和>
)。对于adjbox
使用小图片\pic
,这比其他基本形状更棘手一些。 - 的定义
adjbox
定义了一个内部坐标()adjt
和四个用于连接adjbox
到其他架构元素的坐标(-in1
、、-in2
和-out
)-adjtb
- 在方案绘制中采用相对坐标系,其中节点之间的距离由决定
node distance = <vertical> and <horizontal>
。 - 方案从上到下、从左到右绘制。每个节点后都绘制已知坐标的连接线。
- 对于一些没有通过节点定义的坐标,是通过命令定义的
coordinate[<relative position>] (<name of coordinate>)
。其中一些使用正交坐标|-
,例如\coordinate[below=of aux2 |- n3.south] (aux3);
。 \draw (coordinate 1>) -- (coordinate 2);
当线是直线或\draw (<coordinate 1>) |- (coordinate 2>);
线先<coordinate 1
垂直然后正交时,使用命令绘制连接线<coordinae 2>
。