news 2026/3/9 4:32:15

利用齐次坐标系证明各种几何定理【射影几何】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
利用齐次坐标系证明各种几何定理【射影几何】

符号约定

  • 齐次坐标\(a,b\)等价(\(\exists \lambda, a = \lambda b\))记作\(a\sim b\)
  • 所有的齐次坐标都记录为用圆括号包裹的三元组。(有的资料会把直线的齐次坐标记录为方括号包裹的三元组)(使用本文的记录方法可以更突显点、线的代数共性而非几何区别)

Disargues 定理

题目描述

有不重合的\(6\)\(A_1,A_2,B_1,B_2,C_1,C_2\)满足两两不三点共线,则下面两个命题等价:

  • \(p_1:\)线\(A_1\times A_2, B_1\times B_2, C_1\times C_2\)三线共点。
  • \(p_2:\)设线\(a_i = B_i\times C_i, b_i = C_i\times A_i, c_i = A_i\times B_i\ (i\in\{1,2\})\),则点\(a_1\times a_2, b_1\times b_2, c_1\times c_2\)三点共线。

证明

观察发现,\(p_1\Rightarrow p_2\)\(p_1\Leftarrow p_2\)对偶,所以只需证\(p_1\Rightarrow p_2\).

现证\(p_1\Rightarrow p_2\).

\(A_1\times A_2,B_1\times B_2,C_1\times C_2\)的交点为\(P\),则\(A_1,B_1,C_1,P\)两两不三点共线(若\(A_1,B_1,P\)三点共线,由\(A_1,A_2,P\)三点共线,则\(A_1,A_2,B_1\)三点共线,与题目条件矛盾),所以可设

\[\begin{gathered} A_1 = (1, 0, 0)\\ B_1 = (0, 1, 0)\\ C_1 = (0, 0, 1)\\ P = (1, 1, 1) \end{gathered} \]

由于\(P\)不与\(A_2,B_2,C_2\)重合(否则将会出现三点共线),所以设\(\lambda_1,\lambda_2,\lambda_3\)使得

\[\begin{gathered} A_2 = P + \lambda_1A_1 = (1 + \lambda_1,\ 1,\ 1)\\ B_2 = P + \lambda_2B_1 = (1,\ 1 + \lambda_2,\ 1)\\ C_2 = P + \lambda_3C_1 = (1,\ 1,\ 1 + \lambda_3)\\ \end{gathered} \]

\[\begin{gathered} a_1 = B_1 \times C_1 = (1, 0, 0)\\ b_1 = C_1 \times A_1 = (0, 1, 0)\\ c_1 = A_1 \times B_1 = (0, 0, 1)\\ a_2 = B_2 \times C_2 = (\lambda_2\lambda_3 + \lambda_2 + \lambda_3,\ -\lambda_3,\ -\lambda_2)\\ b_2 = C_2\times A_2 = (-\lambda_3,\ \lambda_1\lambda_3 + \lambda_1 + \lambda_3,\ -\lambda_1)\\ c_2 = A_2\times B_2 = (-\lambda_2,\ -\lambda_1,\ \lambda_1\lambda_2 + \lambda_1 + \lambda_2) \end{gathered} \]

于是

\[\begin{gathered} a_1\times a_2 = (0, \lambda_2, -\lambda_3)\\ b_1\times b_2 = (-\lambda_1,0,\lambda_3)\\ c_1\times c_2 = (\lambda_1, -\lambda_2, 0) \end{gathered} \]

观察发现\(a_1\times a_2 + b_1\times b_2 + c_1\times c_2 = 0\),它们三个线性相关,\(p_2\)得证。

额外

可以将\(\triangle A_2B_2C_2\in\)平面\(\beta\)看做\(\triangle A_1B_1C_1\in\)平面\(\alpha\)以点\(P\)为中心在\(\beta\)上的投影,即可直观证明。

Menelaus 定理和 Ceva 定理

符号约定

设点\(P_1 = a, P_2 = b, Q_1 = a + \lambda_1b, Q_2 = a + \lambda_2 b\),记

\[(P_1P_2, Q_1Q_2) = \frac{\lambda_1}{\lambda_2} \]

实际上就是\(P_1,P_2,Q_1,Q_2\)交比

问题描述

有点\(P_1,P_2,P_3,Q_1,Q_2,Q_3,Q_1',Q_2',Q_3'\)两两不重合,点\(P_1,P_2,P_3\)三点共线,点\(Q_1,Q_2,Q_3\)三点共线,点\(Q_1,Q_1'\)在线\(P_2\times P_3\)上,点\(Q_2,Q_2'\)在线\(P_3\times P_1\)上,点\(Q_3,Q_3'\)在线\(P_1\times P_2\)上。

\[\begin{gathered} k_1 = (P_2P_3,Q_1Q_1')\\ k_2 = (P_3P_1,Q_2Q_2')\\ k_3 = (P_1P_2,Q_3Q_3') \end{gathered} \]

则有

  • Menelaus 定理:\(Q_1',Q_2',Q_3'\)三点共线\(\Leftrightarrow k_1k_2k_3 = 1\).
  • Ceva 定理:\(P_1\times Q_1', P_2\times Q_2', P_3\times Q_3'\)三线共点\(\Leftrightarrow\)\(k_1k_2k_3 = -1\).

证明

设点\(P_1 = (1, 0, 0), P_2 = (0, 1, 0), P_3 = (0, 0, 1)\),线\(Q_1\times Q_2 = (u, v, w)\).

\[\begin{gathered} P_1\times P_2 = (0, 0, 1)\\ P_2\times P_3 = (1, 0, 0)\\ P_3\times P_1 = (0, 1, 0) \end{gathered} \]

求交点得

\[\begin{gathered} Q_1 = (0,-w,v) \sim P_2 - \frac{v}{w}P_3\\ Q_2 = (-w,0,u) \sim P_3 - \frac{w}{u}P_1\\ Q_3 = (-v,u,0) \sim P_1 - \frac{u}{v}P_2 \end{gathered} \]

需要注意的是,\(u,v,w\)均非\(0\),否则\(Q_1,Q_2,Q_3,P_1,P_2,P_3\)将会出现重合。

Menelaus 定理正定理证明

可设\(Q_1'\times Q_2' = (u',v',w')\),同理可得\(u',v',w'\)均非\(0\),且

\[\begin{gathered} Q_1' \sim P_2 - \frac{v'}{w'}P_3\\ Q_2' \sim P_3 - \frac{w'}{u'}P_1\\ Q_3' \sim P_1 - \frac{u'}{v'}P_2 \end{gathered} \]

于是

\[k_1k_2k_3 = \frac{(-\frac{v}{w})(-\frac{w}{u})(-\frac{u}{v})}{(-\frac{v'}{w'})(-\frac{w'}{u'})(-\frac{u'}{v'})} = 1 \]

得证。

Menelaus 逆定理证明

\(t_1,t_2,t_3\)使得

\[\begin{gathered} Q_1' = (0,1,t_1) \sim P_2 + t_1P_3\\ Q_2' = (t_2,0,1) \sim P_3 + t_2P_1\\ Q_3' = (1,t_3,0) \sim P_1 + t_3P_2 \end{gathered} \]

\[k_1k_2k_3 = \frac{(-\frac{v}{w})(-\frac{w}{u})(-\frac{u}{v})}{t_1t_2t_3} = 1 \]

\[t_1t_2t_3 = -1 \]

计算

\[\det(Q_1',Q_2',Q_3') = \left|\begin{matrix} 0 & t_2 & 1\\ 1 & 0 & t_3\\ t_1 & 1 & 0 \end{matrix}\right| = t_1t_2t_3 + 1 = 0 \]

所以\(Q_1',Q_2',Q_3'\)三点共线。

得证。

Ceva 定理正定理证明

\(P_1\times Q_1',P_2\times Q_2',P_3\times Q_3'\)交点为\(E = (1, 1, 1)\)(因为\(P_1,P_2,P_3,E\)不三点共线,否则将出现\(Q_1',Q_2',Q_3',P_1,P_2,P_3\)之间的重合,所以存在射影变换将\(P_1,P_2,P_3,E\)映射为\((1,0,0),(0,1,0),(0,0,1),(1,1,1)\)),则

\[\begin{gathered} P_1\times Q_1' \sim P_1\times E = (0, -1, 1)\\ P_2\times Q_2' \sim P_2\times E = (1, 0, -1)\\ P_3\times Q_3' \sim P_3\times E = (-1, 1, 0)\\ \end{gathered} \]

求直线交点(例如\(Q_1' \sim (P_2\times P_3)\times (P_1\times E)\))可得

\[\begin{gathered} Q_1' = (0, 1, 1) = P_2 + P_3\\ Q_2' = (1, 0, 1) = P_3 + P_1\\ Q_3' = (1, 1, 0) = P_1 + P_2\\ \end{gathered} \]

于是

\[k_1k_2k_3 = \frac{(-\frac{v}{w})(-\frac{w}{u})(-\frac{u}{v})}{1\times 1\times 1} = -1 \]

得证。

Ceva 定理逆定理证明

\(t_1,t_2,t_3\)使得

\[\begin{gathered} Q_1' = (0,1,t_1) \sim P_2 + t_1P_3\\ Q_2' = (t_2,0,1) \sim P_3 + t_2P_1\\ Q_3' = (1,t_3,0) \sim P_1 + t_3P_2 \end{gathered} \]

\[k_1k_2k_3 = \frac{(-\frac{v}{w})(-\frac{w}{u})(-\frac{u}{v})}{t_1t_2t_3} = -1 \]

\[t_1t_2t_3 = 1 \]

于是设

\[\begin{gathered} l_1 = P_1 \times Q_1' = (0, -t_1, 1)\\ l_2 = P_2 \times Q_2' = (1, 0, -t_2)\\ l_3 = P_3 \times Q_3' = (-t_3, 1, 0)\\ \end{gathered} \]

于是\(\det(l_1,l_2,l_3) = -t_1t_2t_3 + 1 = 0\),故\(l_1,l_2,l_3\)交于一点。

得证。

额外

Melelaus 定理可以利用相似轻松证明,Ceva 定理可以利用面积法轻松证明。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/5 10:58:15

基于vue的健身房系统的设计与实现_nhj67au7_springboot php python nodejs

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

作者头像 李华
网站建设 2026/3/10 1:42:49

2025年夸克网盘不限速教程:速度可达70MB/s实测有效

2025年12月最新今天教大家一招能解决夸克网盘限制的在线工具。这个工具也是完全免费使用的。下面让大家看看我用这个工具的下载速度咋样。地址获取:放在这里了,可以直接获取 这个速度还是不错的把。对于平常不怎么下载的用户还是很友好的。下面开始今天的…

作者头像 李华
网站建设 2026/3/4 4:57:11

调试功能的说明-–-behaviac

原文 behaviac提供了离线调试以及连调功能。 离线调试 离线调试功能是指在编辑器里加载运行时产生的 _behaviac_$_.log 文件,如下图,可以加载 _behaviac_$_.log 文件: _behaviac_$_.log 是运行游戏时产生的log文件。一般都是产生在exe所在…

作者头像 李华
网站建设 2026/3/7 22:27:52

unity3d scene窗口选中物体, 在 hierarchy高光显示

在 Unity 中实现 “Scene 窗口选中物体时 Hierarchy 面板高光显示”,核心思路是监听 Scene 窗口的选择事件,并通过 Unity 的EditorGUIUtility和EditorWindow相关 API 主动高亮 Hierarchy 面板中对应的物体条目。以下是完整的实现方案:using U…

作者头像 李华
网站建设 2026/3/9 3:14:05

FOC开发工具学习

FOC开发工具使用 ST 提供的 FOC 开发套件——“X-CUBE-MCSDK”,来帮助我们生成 FOC 控制代码 。 X-CUBE-MCSDK:ST 推出的电机控制软件开发套件。其中包括永磁同步电机(PMSM)固件库(FOC 控制)以及 STM32 电机…

作者头像 李华
网站建设 2026/3/7 0:47:28

HyperLPR3 车牌识别(python3)

HyperLPR已经更新到了v3的版本,该版本与先前的版本一样都是用于识别中文车牌的开源图像算法项目,最新的版本的源码可从github中提取:https://github.com/szad670401/HyperLPR一、安装扩展 python -m pip install hyperlpr3 https://pypi.tuna…

作者头像 李华