Latex-TiKZ绘制数学平面几何图教程

Latex-TiKZ绘制数学平面几何图教程

你好china

基本图形

辅助网格

直线

矩形

椭圆

曲线

坐标轴

图形控制

点的偏移

两个点定义出一个点

平移

缩放

旋转

倾斜变换

定点旋转

函数图形

两直线或曲线的交点

示意图

立体

参考资料

本文专注于Latex 文档中的 数学图形 绘制 ,更准确一点的说法是 平面几何图形 绘制。

Latex常用语法请参考我的另一篇文章《中文版Latex常用语法大全教程》

Latex上画 平面几何图形 的包是 \usepackage{tikz} ,本文所有的示例都是基于该宏包演示的,演示用的Latex 环境配置,请参考我的另一篇文章《ubuntu20.04下vim+vimtex编写latex的利器》。

要是想绘制三维图,请参考我的另外一篇文章《Latex-pgfplots绘制3维曲线图》

这里再啰嗦几句,数学上的平面几何图形主要有以下 4 大类:

线

立体

这几大类,在本文都会介绍,我会实时更新,请广大道友,持续关注……

你好china

这里的“hello world”,我准备以画点并标注上标识来演示。 我们先来分析下这个“hello world”:

\usepackage{tikz} 使用tikz画图时,先来导入宏包

\coordinate(china) at (0,0); 有人说这是画点语法,而我却认为,这是一个标记点的语法,或者说是给“点”定义一个变量,下面根据变量名来引用点。

\fill (china) circle (.1); 这是一个填充的语法,语义是填充一个点,圆形,半径是0.1cm(这里有没有感觉到奇怪?)。 我认为这才是画点的语句,在点“china”坐标处画点,画的是一个圆点。

\node at (china) [right]{你好china}; 这个语句是在点“china”坐标的 右边 写上一个标识,来说明这个点,可以是“A”、“B”等其他的,或者是你想标注的其他一个字符。 通过这个示例,大家是不是清晰了,更有趣的还在后面,请大家尽情期待吧……

基本图形

辅助网格

在介绍所有图形的绘制前,我认为应该先介绍下辅助网格的绘制,这个在以后的图形绘制中帮助很大,也便于各位同学在绘制时的理解。

绘制辅助网格的语法:

\draw[help lines [,color=颜色值!该色百分比[,step=网格大小]]] (左下角坐标坐标) grid (右上角坐标) ;

颜色值 辅助网格的颜色值

该色百分比 表示辅助网格颜色值的深浅明暗,如:!50 表示该色的50%

网格大小 表示网格以多大尺寸绘制,不写的话,会默认以1cm大小绘制,如:10pt,指的是以10像素大小绘制,也可以使用实数,如1.5cm,不过不能写成1.5pt,因为像素已经是最小单位,只能用整数。

左下角坐标 辅助网格是个矩形(正方形),需要先填写左下角坐标

右上角坐标 与“左下角坐标坐标”同理。

比如“hello world”中的语句 “ \fill (china) circle (.1);”,其中 “.1” 指的就是0.1cm,如果把 “.1” 写成 “1pt” ,表示的就是1像素,下面通过示例来演示我本机电脑上的 1cm 跟 1pt 的关系。

演示之前,再来介绍下node的语法,也就是做标记,标注:

\node at (坐标点) [方位] {标注内容};

坐标点 就是准备对哪个点做标注,就填写哪个点的坐标

方位 标注的文字要放在标注点的哪个方向(上下左右),above、below、left、right

标注内容 就是要标注什么内容?可以是中文字符,也可以是西文字符

示例及效果 从上图可以看出,本机上的“1cm” 稍微小于 “30pt”,我当时核对过本机数据,1cm ≈ 28.5pt,机器不同,或许这个数据也不同,大家不要太纠结。

示例中使用到了 fill 语法,这个就是填充语法,不单独介绍,在后文中用到哪一点就演示哪一点。

画点也叫描点,其语法我认为有2种,一种是:

\fill (0,0) circle (.1); %在坐标(0,0)点,绘制圆点

\draw[fill] (1,1) circle (.1); %在坐标(1,1)点,绘制圆点

不过,这两种方式在实现上有一点区别:

fill 在指定点,进行 点 的填充,并需指定填充的形状和范围大小

draw 在指定点,进行 画图并填充,也需绘制的形状和范围大小,并配置是否填充,带 fill 参数,表示绘图并填充,不带时表示,绘图不填充。

示例及效果如下:

直线

绘制直线的语法:

\draw [option] (起点坐标) - - (终点坐标) ;

option 是绘制直线的样式,比如,颜色,粗细等,多个option间用逗号 “,” 隔开

起点坐标 绘制一个线段就要有起点和终点,指定了2点,才能在2点间画直线

终点坐标 与起点坐标同理

- - 看到公式中的2个短划线了,在实际绘制时,2个短划线之间没有空格,这个写上空格,以便于阅读。

知道了直线的基础语法,我们再来说下,直线有哪些样式,或者说是属性:颜色、粗细、箭头、形状。

其中颜色、粗细、形状,这个几个属性是所有的平面几何图形所共有的属性:

颜色 使用 color 关键字指定

粗细 可使用关键字 line width 指定线宽值,也可使用粗细关键字“thin、thick”,程度关键字“ultra 、very”相互组合

箭头 一般使用 “-” 、 “>” 和 “<” 相互组合成不同的箭头的形状

形状 这里的形状指的是:实线、点状虚线、线状虚线、点画线等

下面画了一个表格,来对以上option做个介绍,以供参考。

下面的演示示例,会组合以上option做演示,但有演示不到的情况请大家自己实践。

备注:画线的演示程序都使用thick来指定线宽,太细时,不容易看清,大家可自己实现其他线宽。 绘制多个线段,可是其闭合,其关键字就是 cycle,示例:

\draw (1,3)–(2,2)–(4,5)–cycle;

矩形

绘制矩形的语法:

\draw [option] (起点坐标) rectangle (终点坐标) ;

option 是绘制线段的属性,但是没有箭头

起点坐标 矩形左下角坐标

终点坐标 矩形右上角坐标

示例及效果如下 矩形还有一个 圆角 的属性,“rounded corners”,示例:

\draw[rounded corners] (0,0) rectangle (4,2);

语法:

\draw [option] (圆点坐标) circle (半径);

option 同矩形解释

圆点坐标 画圆时需要先指定圆心坐标

半径 再指定圆半径

椭圆

语法:

\draw [option] (圆点坐标) ellipse (长轴 and 短轴);

option 同矩形解释

圆点坐标 画椭圆时需要先指定圆心坐标

长轴 画椭圆时需要指定长轴大小

短轴 画椭圆时需要指定短轴大小

弧分为 圆弧 和 椭圆弧,语法:

圆弧

\draw [option] (圆心坐标) arc (起始度 : 终止度 : 半径);

option 同矩形解释

圆心坐标 画弧时也需要指定,该弧所在圆心坐标

起始度 弧也会分起始所在度数 和 终止所在度数

终止度 弧也会分起始所在度数 和 终止所在度数

半径 弧所在圆的半径大小

椭圆弧

\draw [option] (圆心坐标) arc (起始度 : 终止度 : 长轴 and 短轴);

option 同矩形解释

圆心坐标 画弧时也需要指定,该弧所椭圆的圆心坐标

起始度 弧也会分起始所在度数 和 终止所在度数

终止度 弧也会分起始所在度数 和 终止所在度数

长轴 弧所在椭圆的长轴和短轴大小

短轴 弧所在椭圆的长轴和短轴大小

注意:上述起始度、终止度 和半径之间是冒号 “:”分割,椭圆弧也是一样。

下面做个示例,演示圆、椭圆、弧的效果

曲线

说到曲线,就不得不提 贝塞尔曲线,由起始点、终止点(也称锚点)、控制点组成。通过调整控制点,贝塞尔曲线的形状会发生变化。对贝塞尔曲线感兴趣的,可查看《贝塞尔曲线的数学原理》。

tikz绘制曲线时把直线的短线 - - 换成点 . . ,就得到贝塞尔曲线,它需要至少一个控制点,最多2个控制点,如果要画复杂的曲线时,可以使用多段曲线实现。

而抛物线用parabola 操作,bend 操作可以指明顶点。

语法如下:

贝塞尔曲线

\draw [option] (起点坐标) . . controls (控制点1) and (控制点2)… (终点坐标) ;

option 同矩形解释

起点坐标 既然要画曲线,就会有起点和终点坐标

控制点 tikz绘制一段贝塞尔曲线,需要至少1个,最多2个控制点

抛物线

\draw [option] (起点坐标) parabola bend (顶点) (终点坐标) ;

option 同矩形解释

起点坐标 抛物线也需要起点和终点坐标

顶点 抛物线也需要顶点坐标

示例及效果如下 示例中使用了符合“++”,这个属于图形平移,会在后面介绍。

坐标轴

其实坐标轴的绘制是直线绘制的综合,因为坐标轴是有多个直线段组成的,直接上示例: 这里演示的是2维坐标轴,当然也可以绘制3维坐标轴,里面使用了一个命令 foreach,这个以前没有说过,用于引用循环变量及其文本格式。语法:

\foreach var in {

list}

* 使用变量var从list中遍历

当然也可以同时遍历2个变量,格式

\foreach a/b in {

list}

* 这里把a/b作为一个整体,用“/”分割,所以list的元素也必须是形为“a/b”,用“/”分割。

图形控制

这里主要说下点的偏移、缩放(scale)、平移(shift)、倾斜(slant) 、旋转(rotate)、定点旋转(rotate around) 等。

先来补充一个知识点,极坐标,在上面的图形绘制中,除了可以使用平面坐标,也可以使用极坐标。tikz中的点也支持极座标表示,(30:1cm),第一个参数是极座标里面的角度,第二个参数是半径。

我们一般画直线时,使用的时 2维平面坐标,当然也可以填写 3维坐标。

\draw[color=red] (0,2,0) – (0,0.5,0); %大家可以自行实现该效果

点的偏移

先来看下如下程序段

7 \begin{

tikzpicture}[scale=2]

8 \draw[step=1,color=gray!40] (-2,-2) grid (2,2);

9 \draw[latex-latex, red] (0,-2) -- ++(-1,1) -- ++(-1,-1);

10 \draw[dashed, blue] (0,1) -- +(-1,1) -- +(-2,0