在上面两篇(文末有链接)中,我们学习了了一些基本绘图命令,如直线、曲线、矩形、圆形、网格等,还学习了样式、循环语句及文字标注等,下面我们来看一个实例。
刚好最近在准备美赛,本来我没学TikZ时,有个受力分析图是用WPS画的。 怎么样?看上去其实还行,但有些细节就不好了,不如角度标注的弧没有完全贴合两条边,力的三角形也不是一个标准的直角三角形。如果用TikZ画就好看多了。 下面我们来学习如何进行绘制,用上面两篇的知识绰绰有余~ 文档类型我们当然可以随便挑,不过由于我最近在准备美赛,故直接使用美赛模板。
\documentclass{mcmthesis}
\usepackage{tikz,pgffor}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
...
\end{tikzpicture}
\end{document}
还记得这几个库有什么作用吗?tikz自不必说,有了pgffor可以使用for循环语句,arrow.meta有我喜欢的箭头样式。
下面的代码统统都是上面的...部分。
[scale=3,>=Stealth,line width=1pt]
首先设定比例、箭头样式、线宽,这都是作用于整个环境的。
\draw [ultra thick](-1,0) coordinate(C) circle[radius=1]; % 1
\draw (0,0)coordinate(O)+(0,2)--+(0,-2);
\draw (-2,0)+(0,2)--+(0,-2);
注释1的这一行是十分关键的一行,这关系到我们坐标系的选取,主要是确定原点(极点)。观察上文的最终效果图,我们发现圆的正东(右)侧是许多线条的聚集之处,所以用这个点作为原点(极点)最方便。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2021020219045651.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phc21pbmVGZW5n,size_16,color_FFFFFF,t_70)
\draw (C)[->]--node[fill=white,above right=2pt]{\Large $mg$}+(0,-1.2);
这步是用来标重力的,我们可以用\Large把字号调大一点 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210202190828593.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phc21pbmVGZW5n,size_16,color_FFFFFF,t_70)
\foreach \ang/\pos in {45/above right,-45/below right}
\draw (O)--(\ang:2)--(\ang:5pt)
arc[start angle=\ang,end angle={2*\ang},radius=5pt]
node[\pos=1.5pt]{$45^\circ$};
观察之前的效果图,我们可以看到受力分析图具有一定程度的上下对称性,故可以考虑循环语句。首先指定了两个变量,一个是角度(
4
5
∘
45^\circ
45∘和
−
4
5
∘
-45^\circ
−45∘),另一个是标注角度数字的位置(一个是右上方,一个是右下方);画弧的时候,起始是45度角,终边是90度角,刚好是两倍关系。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210202191235516.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phc21pbmVGZW5n,size_16,color_FFFFFF,t_70)
\draw [dashed](O)--+(2,0);
\draw (O)--(25:2);
\filldraw[fill=green!20,draw=orange](O)--+(25:10pt) arc [start angle=25,end angle=0,radius=10pt] node[above=4pt, left]{$\theta$}--(O);
这一步先画一条虚线,再画一条实线,然后标注了
θ
\theta
θ角。注意我最后没有以cycle结束,而是以(O)结束,本应该没区别,但是用放大镜还是能看出来细微的差别。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210202191749294.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0phc21pbmVGZW5n,size_16,color_FFFFFF,t_70)
上面的是(O)结尾,下面的是cycle结尾,大家可以看到后者虽然相交地更好,但是会出头;而前者虽然相交处较为粗糙,但好歹不出头,我更喜欢前者,糙有糙的好啊~
\draw (1.5,0.1) coordinate(F)[dashed]--+(0,-0.2);
\draw (F)[dashed]--+(-0.2,0)--+(0.6,0);
\draw[->] (F)--+(0,0.4)coordinate(A) node[below=16pt, left]{$F_y$};
\draw[->] (F)+(0.2,0)coordinate(B)--(F) node[fill=white,below=13pt, right]{$F_x$};
\draw[->] (B)--(A)node[below=15pt, right=10pt]{$F_{xy}$};
下面就是画力地三角形了,为了防止
F
x
F_x
Fx被虚线挡住,我设置了fill=white。 如此便大功告成啦~哦耶(我可以给我那个用WPS画的队友炫耀了哈哈哈)
相关链接: TikZ从零开始(一)——A Picture for Karl’s Students(上篇) TikZ从零开始(一)——A Picture for Karl‘s Students(下篇)
|