初中平面几何
Table of Contents
1. 欧几里德
tkz-euclide 用来画欧式几何的图是很方便的。 tkz-euclide 用的就是欧几里德的思路,来画欧式几何的图:先仔细计算、确定点,再连线,再构成面。其中点的计算,恰恰是尺规作图的思路。数学老师可以接受这套思路,未入门的初中生接受有些困难:能灵活运用意味着已经几何入门。
tkz-euclide 另一个负累是 \( \LaTeX{} \) 的学习和使用。“负累”用 AI 的话说:心智负担。\( \LaTeX{} \) 的心智负担由 slingshot tikz 负责去掉
slingshot tikz input.tikz output.png
Figure 1: Slingshot TikZ Architecture
Tectonic 也去了一部分 \( \LaTeX{} \) 安装,包维护的心智负担。
input.tikz 如何编辑呢?可以说随便一个编辑器就可以编辑,但这么说不解决实质问题。因此写了个 tikz-mode 在 Emacs 方便编辑。 tikz-mode 在
Emacs 甚至都没有存在必要,因为 Emacs 内置的 LaTeX-mode 完全可以胜任,实际 tikz-mode 也不过继承了 LaTeX-mode 的一个薄的封装。因此就给
tikz-mode 加了图片预览的能力:用 slingshot tikz 编译出来,用 Emacs
Buffer 展示图片,键绑定 C-c C-c ,仅此而已。加之 Emacs 的 org-mode
,对文档的理解深刻至极,甚至可以抵达 \( \LaTeX{} \) 的境界。因此增加
ob-tikz ,把 input.tikz 化身为 org-mode 里代码块,直接在 org 文档编辑,代码块执行输出 output.png ,输出后直接嵌入到文档里了。
Figure 2: Emacs org mode ob-tikz
这些后续会出一个 skill 给 AI 使用。
2. 画三角形
画一个三角形:
- 确定底边两点 A,B,
- 确定顶点 C,
- 连接 A,B,C,
- 标注 A,B,C。
\tkzDefTriangle[equilateral](A,B)
Figure 3: 正三角形
\begin{tkzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefTriangle[equilateral](A,B)
\tkzGetPoint{C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoint[left](A){$A$}
\tkzLabelPoint[right](B){$B$}
\tkzLabelPoint[above](C){$C$}
\end{tkzpicture}
\tkzDefPoint(15:4){B}
Figure 4: 倾斜 15 度的正三角形
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(15:4){B} % 极坐标定义点
\tkzDefTriangle[equilateral](A,B)
\tkzGetPoint{C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoint[left](A){$A$}
\tkzLabelPoint[right](B){$B$}
\tkzLabelPoint[above](C){$C$}
\end{tikzpicture}
\tkzDefTriangle[two angles=75 and 75](A,B)
Figure 5: 两角 75 度的等腰三角形
\begin{tikzpicture}
\tkzDefPoints{0/0/A, 4/0/B}
\tkzDefTriangle[two angles=75 and 75](A,B)
\tkzGetPoint{C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoint[left](A){$A$}
\tkzLabelPoint[right](B){$B$}
\tkzLabelPoint[above](C){$C$}
\tkzLabelAngle[pos=.6](B,A,C){$75$}
\tkzMarkAngle[size=0.3](B,A,C)
\tkzMarkAngle[size=0.3](C,B,A)
\tkzLabelAngle[pos=.6](C,B,A){$75$}
\tkzMarkAngle[size=0.5](A,C,B)
\tkzLabelAngle(A,C,B){$30$}
\end{tikzpicture}
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C)
Figure 6: 任意三角形
\begin{tikzpicture}
\tkzDefPoints{0/0/A, 4/0/B}
\tkzDefTriangle[two angles=50 and 60](A,B)
\tkzGetPoint{C}
\tkzDrawPolygon(A,B,C)
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C)
\end{tikzpicture}
3. 画几个圆
\tkzDrawCircle[option](O,C)
Figure 7: 圆心在 O, 圆周经过点 C 的圆
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(30:2){C}
\tkzLabelPoints[right](O,C)
\tkzDrawPoint(O)
\tkzDrawCircle(O,C)
\end{tikzpicture}
\tkzDefCircle[R](O,d) \tkzGetPoint{a}
\tkzDrawCircle(O,a)
Figure 8: 以 O 为圆心,d为半径作圆
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzLabelPoints(O)
\tkzDefCircle[R](O,2) \tkzGetPoint{a}
\tkzDrawCircle(O,a)
\tkzDrawPoint(O)
\end{tikzpicture}
\tkzDefCircle[circum](A,B,C) \tkzGetPoint{K}
\tkzDrawCircle(K,A)
Figure 9: 三角形 ABC 的外接圆
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,2.5){C}
\tkzDrawPolygon(A,B,C)
\tkzDefCircle[circum](A,B,C) \tkzGetPoint{K}
\tkzDrawCircle(K,A)
\tkzLabelPoints(B)
\tkzLabelPoints[left](A)
\tkzLabelPoints[above](C)
\end{tikzpicture}
\tkzDefCircle[in](A,B,C) \tkzGetPoint{I} \tkzGetSecondPoint{T}
\tkzDrawCircle(I,T)
Figure 10: 三角形 ABC 的内切圆
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,2.5){C}
\tkzDrawPolygon(A,B,C)
\tkzDefCircle[in](A,B,C) \tkzGetPoint{I} \tkzGetSecondPoint{T}
\tkzDrawCircle(I,T)
\tkzLabelPoints(B)
\tkzLabelPoints[left](A)
\tkzLabelPoints[above](C)
\end{tikzpicture}
4. 常用辅助线
绘制辅助线(如垂线、角平分线、平行线或中垂线)的核心思想是“先计算后绘制”。你需要先用 \tkzDefLine 等定义辅助线上的点,再 \tkzGetPoint 用获取坐标,最后用 \tkzDrawSegments 将其画出。
常用辅助线命令
- 垂线:
- 使用
\tkzDefLine[orthogonal=through P](A,B) - 或
perpendicular
- 使用
- 平行线:
- 使用
\tkzDefLine[parallel=through P](A,B)
- 使用
- 角平分线:
- 使用
\tkzDefLine[bisector](A,B,C)(平分 \( \angle{ABC} \) )
- 使用
- 中垂线(垂直平分线):
- 使用
\tkzDefLine[mediator](A,B)(生成两个点)
- 使用
- 点到直线投影(垂足):
- 使用
\tkzDefPointBy[projection = onto A--B](P)
- 使用
代码示例
Figure 11: 代码示例
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,3){C}
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C)
\tkzDrawPolygon(A,B,C)
\end{tikzpicture}
垂线
Figure 12: 做 AB 上垂线 CD
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,3){C}
\tkzDefLine[orthogonal=through C](A,B) \tkzGetPoint{P}
\tkzInterLL(P,C)(A,B) \tkzGetPoint{D}
\tkzLabelPoints[below](A,B,D)
\tkzLabelPoints[above](C,P)
\tkzDrawPolygon(A,B,C)
\tkzDrawSegments(C,D)
\tkzMarkRightAngle(B,D,C)
\end{tikzpicture}
平行线
Figure 13: 三角形拓展为平行四边形
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,3){C}
\tkzDefLine[parallel=through C](A,B) \tkzGetPoint{P}
\tkzDefLine[parallel=through B](A,C) \tkzGetPoint{Q}
\tkzInterLL(B,Q)(C,P) \tkzGetPoint{D}
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C,D)
\tkzDrawPolygon(A,B,C)
\tkzDrawSegments[dotted](C,D B,D)
\end{tikzpicture}
角平分线
Figure 14: 角平分线
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,3){C}
\tkzDefLine[bisector](B,A,C)
\tkzGetPoint{P}
\tkzInterLL(A,P)(C,B)
\tkzGetPoint{D}
\tkzLabelPoints[below](A,B)
\tkzLabelPoints[above](C)
\tkzLabelPoints[right](D)
\tkzDrawPolygon(A,B,C)
\tkzDrawSegment[dotted](A,D)
\end{tikzpicture}
垂直平分线
Figure 15: 垂直平分线
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,3){C}
\tkzDefLine[mediator](A,B)
\tkzGetFirstPoint{M}
\tkzGetSecondPoint{N}
\tkzInterLL(A,B)(M,N)
\tkzGetPoint{D}
\tkzDrawPolygon(A,B,C)
\tkzDrawSegment[dotted](M,N)
\tkzDrawPoint(D)
%\tkzMarkRightAngle(B,D,M)
\tkzLabelPoints(A,B,C,D)
\end{tikzpicture}
垂足
Figure 16: 垂足
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(4,0){B}
\tkzDefPoint(1.5,3){C}
\tkzDefPointBy[projection = onto A--B](C)
\tkzGetPoint{D}
\tkzDrawPolygon(A,B,C)
\tkzDrawSegment(C,D)
\tkzLabelPoints[below](A,B,D)
\tkzLabelPoints[above](C)
\end{tikzpicture}
5. 初中题
在正方形 ABCD 中,点 E 在射线 BD 上,点 M 在 BC 的延长线上,CN 为 \( \angle{DCM} \)的平分线,点 F 为射线 CN 上一点,且 CE=FE .
(1)如图,当点 E 在线段 BD 上时,补全图形,求证:\( 2\angle{BEC} + \angle{CEF} = 180^\circ \) ;
(2)在(1)的条件下,用等式表示线段 CF,DE,BE 之间的数量关系,并证明;
(3)若 AB = 4 ,BE = 3DE,直接写出线段 CF 的长度.
\begin{tikzpicture}
\tkzDefPoints{0/4/A,0/0/B,4/0/C,4/4/D}
\tkzDefPoint(45:4){E}
\tkzDrawPolygon(A,B,C,D)
%\tkzDrawLine(B,D)
\tkzLabelPoint[above](A){$A$}
\tkzLabelPoint[below](B){$B$}
\tkzLabelPoint[below](C){$C$}
\tkzLabelPoint[above](D){$D$}
\tkzLabelPoint[left](E){$E$}
\tkzDrawSegments(B,D)
\tkzDrawSegments(C,E)
\end{tikzpicture}
Figure 17: 图 M-12
5.1. AI 的解答
(1)补全图形,求证 \( 2\angle{BEC} + \angle{CEF} = 180^\circ \)
补全:点 \( M \) 在 \( BC \) 的延长线上;作 \( \angle{DCM} \) 的平分线 \( CN \),在射线 \( CN \) 上取点 \( F \),使 \( CE = FE \)。
\begin{tikzpicture}[scale=1.1]
\tkzDefPoints{0/4/A, 0/0/B, 4/0/C, 4/4/D}
\tkzDefPoint(3,3){E}
\tkzDefPoint(6,0){M}
\tkzDefPoint(7,3){N}
\tkzInterLC(C,N)(E,C) \tkzGetPoints{C1}{F}
\tkzDrawPolygon(A,B,C,D)
\tkzDrawLine[add=0 and 0.3](B,D)
\tkzDrawLine[add=0 and 0.3](B,C)
\tkzDrawLine[add=0 and 0.6, dashed](C,N)
\tkzDrawSegments(C,E E,F)
\tkzMarkAngle[size=0.35](N,C,D)
\tkzMarkAngle[size=0.5](M,C,N)
\tkzMarkAngle[size=0.8](B,E,C)
\tkzMarkAngle[size=0.6](F,C,E)
\tkzMarkSegment[mark=|](C,E)
\tkzMarkSegment[mark=|](E,F)
\tkzLabelPoints[above](A,D)
\tkzLabelPoints[below left](B)
\tkzLabelPoints[below](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[below right](F,N)
\tkzLabelPoints[right](M)
\end{tikzpicture}
Figure 18: 图 M-12 补全
证明:设 \( \angle{BEC} = \theta \)。
因为 \( CN \) 平分 \( \angle{DCM} \),而 \( \angle{DCM} = 90^\circ \),所以 \( \angle{DCF} = 45^\circ \),
\[ \angle{BCF} = \angle{BCD} + \angle{DCF} = 90^\circ + 45^\circ = 135^\circ . \]
又 \( E \) 在射线 \( BD \) 上,\( BD \) 平分 \( \angle{ABC} \),故 \( \angle{CBE} = 45^\circ \)。在 \( \triangle BCE \) 中,
\[ \angle{BCE} = 180^\circ - \angle{CBE} - \angle{BEC} = 135^\circ - \theta , \]
所以
\[ \angle{ECF} = \angle{BCF} - \angle{BCE} = 135^\circ - (135^\circ - \theta) = \theta = \angle{BEC} . \]
由 \( CE = FE \),\( \triangle CEF \) 为等腰三角形,顶角 \[ \angle{CEF} = 180^\circ - 2\angle{ECF} = 180^\circ - 2\angle{BEC} , \] 故 \( 2\angle{BEC} + \angle{CEF} = 180^\circ \)。∎
(2)线段 \( CF \),\( DE \),\( BE \) 之间的数量关系
\[ CF = BE - DE . \]
辅助线:在射线 \( DB \) 上取点 \( G \),使 \( CG = CE \)(\( G \) 与 \( E \) 关于 \( BD \) 的中点对称,位于 \( B \)、\( E \) 之间),连接 \( CG \)。
\begin{tikzpicture}[scale=1.1]
\tkzDefPoints{0/4/A, 0/0/B, 4/0/C, 4/4/D}
\tkzDefPoint(3,3){E}
\tkzDefPoint(6,0){M}
\tkzDefPoint(7,3){N}
\tkzInterLC(C,N)(E,C) \tkzGetPoints{C1}{F}
\tkzDefMidPoint(B,D) \tkzGetPoint{O}
\tkzDefPointBy[homothety=center E ratio 2](O) \tkzGetPoint{G}
\tkzDrawPolygon(A,B,C,D)
\tkzDrawLine[add=0 and 0.3](B,D)
\tkzDrawLine[add=0 and 0.3](B,C)
\tkzDrawLine[add=0 and 0.6, dashed](C,N)
\tkzDrawSegments(C,E E,F)
\tkzDrawSegment[dashed](C,G)
\tkzMarkAngle[size=0.35](N,C,D)
\tkzMarkAngle[size=0.5](M,C,N)
\tkzMarkAngle[size=0.8](B,E,C)
\tkzMarkAngle[size=0.6](F,C,E)
\tkzMarkSegment[mark=|](C,E)
\tkzMarkSegment[mark=|](E,F)
\tkzLabelPoints[above](A,D)
\tkzLabelPoints[below left](B)
\tkzLabelPoints[below](C)
\tkzLabelPoints[left](E)
\tkzLabelPoints[below right](F,N)
\tkzLabelPoints[below](M)
\tkzLabelPoints[above left](G)
\end{tikzpicture}
Figure 19: 图 M-12 辅助线
证明:
由(1)知 \( \angle{ECF} = \angle{BEC} \)。在 \( \triangle CEG \) 中, \( CE = CG \),且 \( G \) 在 \( BE \) 上,故
\[ \angle{CEG} = \angle{EGC} = \angle{BEC} , \qquad \angle{ECG} = 180^\circ - 2\angle{BEC} . \]
而由(1),\( \angle{CEF} = 180^\circ - 2\angle{BEC} \),所以 \( \angle{ECG} = \angle{CEF} \)。
在 \( \triangle ECG \) 与 \( \triangle CEF \) 中,\( CE = CE \),\( CG = CE = EF \),\( \angle{ECG} = \angle{CEF} \),故
\[ \triangle ECG \cong \triangle CEF \quad \text{(SAS)}, \]
得 \( EG = CF \)。
又 \( CE = CG \) 且 \( E \)、\( G \) 在直线 \( BD \) 上,而 \( C \) 到 \( BD \) 的垂足是 \( BD \) 的中点 \( O \)(正方形对角线互相垂直平分),故 \( E \)、\( G \) 关于 \( O \) 对称,\( DG = BE \)。
因此
\[ CF = EG = DG - DE = BE - DE . \quad ∎ \]
(3)若 \( AB = 4 \),\( BE = 3DE \),求 \( CF \)
\[ BD = \sqrt{2}\,AB = 4\sqrt{2} , \qquad BE + DE = BD . \]
由 \( BE = 3DE \) 得 \( 4DE = 4\sqrt{2} \),所以 \( DE = \sqrt{2} \), \( BE = 3\sqrt{2} \)。
\[ CF = BE - DE = 3\sqrt{2} - \sqrt{2} = 2\sqrt{2} . \]
答:\( CF = 2\sqrt{2} \)。
5.2. 人类的解答
(1)
\begin{tikzpicture}
\tkzDefPoints{0/4/A,0/0/B,4/0/C,4/4/D}
\tkzDefPoint(45:4){E}
\tkzDefPoint(8,0){M}
\tkzDefShiftPoint[C](45:5){N}
\tkzInterLC(C,N)(E,C)\tkzGetSecondPoint{F}
\tkzDrawPolygon(A,B,C,D)
\tkzDrawPoints(F)
\tkzLabelPoint[above](A){$A$}
\tkzLabelPoint[below](B){$B$}
\tkzLabelPoint[below](C){$C$}
\tkzLabelPoint[above](D){$D$}
\tkzLabelPoint[left](E){$E$}
\tkzLabelPoint[below](M){$M$}
\tkzLabelPoint[right](N){$N$}
\tkzLabelPoint[right](F){$F$}
\tkzDrawSegments(B,D)
\tkzDrawSegments(C,E)
\tkzDrawSegments[dotted](C,M C,N E,F)
\end{tikzpicture}
Figure 20: M-12-1
\( \because \angle{DCM} = 90^\circ \) 并且 CN 平分 \( \angle{DCM} \)
\( \therefore \angle{DCN} = 45^\circ \)
\( \because \angle{BDC} = 45^\circ \)
\( \therefore BD 平行 CN \)
\( \therefore \angle{DEF} = \angle{CFE} \) 并且 \( \angle{BEC} = \angle{ECF} \)
\( \because CE = EF \)
\( \therefore \angle{ECF} = \angle{EFC} \)
\( \therefore \angle{BEC} = \angle{DEF} \)
\( \therefore 2\angle{BEC} + \angle{CEF} = \angle{BEC} + \angle{CEF} + \angle{DEF} = 180^\circ \)
(2)
\begin{tikzpicture}
\tkzDefPoints{0/4/A,0/0/B,4/0/C,4/4/D}
\tkzDefPoint(45:4){E}
\tkzDefPoint(8,0){M}
\tkzDefShiftPoint[C](45:5){N}
\tkzInterLC(C,N)(E,C)\tkzGetSecondPoint{F}
\tkzDefLine[parallel=through C](E,F) \tkzGetPoint{P}
\tkzInterLL(P,C)(E,B)\tkzGetPoint{G}
\tkzDrawPolygon(A,B,C,D)
\tkzDrawPoints(F,G)
\tkzLabelPoint[above](A){$A$}
\tkzLabelPoint[below](B){$B$}
\tkzLabelPoint[below](C){$C$}
\tkzLabelPoint[above](D){$D$}
\tkzLabelPoint[left](E){$E$}
\tkzLabelPoint[below](M){$M$}
\tkzLabelPoint[right](N){$N$}
\tkzLabelPoint[right](F){$F$}
\tkzLabelPoint[left](G){$G$}
\tkzDrawSegments(B,D)
\tkzDrawSegments(C,E)
\tkzDrawSegments[dotted](C,M C,N E,F C,G)
\end{tikzpicture}
Figure 21: M-12-2
如图,过 C 做 EF 平行线,与 BE 相交于 G 点。
%% 过 C 做 EF 平行线
\tkzDefLine[parallel=through C](E,F)
%% 得到平行线上一点P
\tkzGetPoint{P}
%% PC与EB相交于G
\tkzInterLL(P,C)(E,B)
\tkzGetPoint{G}
可证
- \( \triangle{BGC} \triangleq \triangle{CED} \)
- \( \triangle{CEG} \triangleq \triangle{CEF} \)
\( \therefore BG = ED \)
\( \because GE = CF \)
\( \therefore CF = |BE - ED| \)
(3)
\( CF = 2\sqrt{2} \)