news 2026/2/7 4:49:53

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

作者头像

张小明

前端开发工程师

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/2/4 20:33:41

小程序基于springboot的乡镇普法知识科普宣传系统 律师预约系统设计与实现_qf4cwws6(java毕业设计项目源码)

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

作者头像 李华
网站建设 2026/2/6 14:11:40

面向对象编程三大特性:封装、继承、多态的核心要义

封装 封装是面向对象编程的基本原则,封装要求在编写类时,对外隐藏内部的数据状态和实现细节,仅对外暴露接口,用于外部调用访问。 类的封装,通常类的属性私有(用private修饰符),不对外…

作者头像 李华
网站建设 2026/2/6 3:03:53

leetcode 2147. 分隔长廊的方案数 困难

在一个图书馆的长廊里,有一些座位和装饰植物排成一列。给你一个下标从 0 开始,长度为 n 的字符串 corridor ,它包含字母 S 和 P ,其中每个 S 表示一个座位,每个 P 表示一株植物。在下标 0 的左边和下标 n - 1 的右边 已…

作者头像 李华
网站建设 2026/2/6 10:09:49

学生党必备!这款桌面课表工具太省心了

上课前翻遍手机找课表?担心走神错过上课时间?对于学生党和老师来说,一款顺手的课表工具能省不少事!今天电脑天空要给大家安利的「桌面课表 Class Widget」,就是这样一款精准解决课程管理痛点的桌面小工具。它最戳人的点…

作者头像 李华
网站建设 2026/2/4 20:33:41

深度学习实验14代码

实验前准备 数据集 # make data import random import numpy as np import os # 固定随机种子 random.seed(0) np.random.seed(0)def generate_data(length, k, save_path):if length < 3:raise ValueError("The length of data should be greater than 2.")if k …

作者头像 李华
网站建设 2026/2/5 15:18:41

优化及性能-–-behaviac

原文 优化及性能 宏BEHAVIAC_RELEASE定义的时候是最终版&#xff0c;BEHAVIAC_RELEASE没有定义的时候是为开发版。 在debug版中&#xff0c;BEHAVIAC_RELEASE缺省下没有定义的。诸如logging、socketing、热加载等开发功能是有效的。可以通过behaviac::Config::IsLogging和be…

作者头像 李华