资讯动态

射影几何核心概念详解:齐次坐标、交比与极点极线

发布时间:2026/10/16 9:37:15 来源:尧图企业网站定制
1. 射影平面不是“欧氏平面加一条线”那么简单1.1 从中心投影说起为什么两条平行线会“相交”我先说一个很多初学者都有的困惑明明初中就说平行线不相交为什么到了射影几何平行线忽然相交了这个问题的关键不在“相交”本身而在你观察“相交”的方式。你站在铁轨中间往远处看两条轨道在地平线处看起来是汇聚的。这不是视觉错觉这是中心投影的必然结果。中心投影的意思是有一个投影中心用一束从中心发出的光线把三维场景投到二维平面上。人眼就是这么工作的。在这个模型里一组平行线在画面上的像并不是始终平行的它们会汇聚于一个点。欧氏几何讨论的是“长度”“角度”这些度量性质平行线当然不相交。但在射影几何里我们研究的不是度量而是“点和直线在投影下保持不变的关系”。注意中心投影下线的“平直性”保持住了直线投过去还是直线。但平行关系丢掉了距离也丢掉了角的度数更是面目全非。唯一稳如泰山的是“相交关系”两条直线如果相交投影之后它们还是相交如果没相交投影之后还是不相交。这里有个例外就是当交集跑到无穷远时在有限平面上看起来它们“不相交”但从射影几何的立场看它们在无穷远点相交。所以“加上一条无穷远直线”这件事并不是为了强行让平行线有交点、制造一个看起来很酷的概念而是为了把中心投影下的所有情况统一处理。有了无穷远点平行线就不再是特例而是一般相交情形在无穷远处的极限。这个统一性是整个射影几何的出发点。1.2 齐次坐标的直觉三个数决定一个点欧氏平面里的点用两个坐标 (x, y) 表示射影平面里的点我用三个数表示写成 [x : y : z]。这里必须强调冒号表示的是比例不是除法。什么意思[1 : 2 : 3] 和 [2 : 4 : 6] 是同一个点。这跟用分数表示有理数很像1/2 等于 2/4它们都表示同一个数量。[x : y : z] 只要 z 不等于 0就可以对应到欧氏平面上的点 (x/z, y/z)。如果 z 0这个点就在无穷远。这个设计很聪明。你想啊在中心投影下同一个欧氏点在不同观察角度下会投出不同的位置但用齐次坐标描述时这些变换只需要做一次线性变化就能统一表示不需要分“有限点”和“无穷远点”两种情况去讨论。所以齐次坐标不是“三维坐标在二维平面上的投影”而是“把二维射影平面嵌入三维向量空间后取比例类”。这层理解到位以后后面所有计算都顺了。具体来说一条直线在齐次坐标下也有三个数 [a : b : c]表示方程 a x b y c z 0。点 [x : y : z] 在直线 [a : b : c] 上当且仅当 ax by cz 0。你看点和直线的地位完全对称。这个对称性到了后面极点极线理论那里会发挥巨大作用。1.3 无穷远元带来的第一个认知转换我第一次接触无穷远直线时犯过一个错误总想给它找一个具体几何位置比如“在画面的某个边缘”。后来才意识到无穷远点不是一个固定位置而是一个方向类。你可以把它理解成一个“方向的极限”所有平行线共用同一个方向因此共用同一个无穷远点而所有方向的无穷远点就组成了那条无穷远直线。这里有一个非常实用的判别技巧一条直线 [a : b : c] 与无穷远直线 [0 : 0 : 1] 的交点就是 [b : -a : 0]。虽然这个坐标看起来不直观但它正好对应这条直线的方向。你要求两条直线平行在射影几何里就可以换成“两条直线在无穷远直线上相交”这个条件。很多欧氏几何里要分情况讨论的题用这个观点就统一了。不过我也要提醒一句齐次坐标 [0 : 0 : 0] 是无效的它不是任何点。这个细节看似无关紧要但在做坐标变换或者写程序调用几何库的时候如果不对它做合法性检查很容易出现除零错误。我在看好几个开源几何库的 issue 时相当一部分 bug 都是因为在处理退化情形时把 [0 : 0 : 0] 当普通点传进去了。2. 交比与调和点列射影几何里唯一值得信赖的度量2.1 交比的定义与计算四个共线点到底怎么比较进入射影几何之后你会发现一个尴尬的问题长度没了角度没了那我们还能测量什么答案是一个叫“交比”的东西。给你共线上的四个点 A、B、C、D射影几何里唯一保持不变的数量关系就是交比。它定义成有向线段比值的比值(A, B; C, D) (AC/BC) / (AD/BD)注意这里 AC、BC、AD、BD 都是带方向的有向长度。也就是说先把 C 点相对于 A、B 的位置比率算出来再把 D 点相对于 A、B 的比率算出来两个比率再相除。这个值在中心投影下不变。我自己的理解方式是交比不是“长度”而是“两个比例之间的比例”。你在日常生活中其实用过类似的东西比如比较两支股票涨幅能不能用绝对涨跌额而是用收益率绝对的涨跌额因为价格基准不同没法比收益率是相对量才可以跨股比较。交比就是那个“相对量的比值”。算交比的时候有个顺序敏感问题。同一个四点组交换其中两个点的位置交比的值会变。比如 (A, B; C, D) 2但是 (B, A; C, D) 1/2。所以任何涉及交比的定理写的时候都必须明确点的顺序否则结果完全对不上。这就像你写除法被除数和除数不能随便换一样。2.2 调和点列最常见的特殊交比交比的特殊值里最常用的是 -1对应的情况叫调和点列。它满足 (A, B; C, D) -1。名字叫“调和”其实也是历史遗留名词你可以直接理解为“最标准的比例关系”。调和点列在几何里到处都是。比如三角形一边上取中点 M再做一条过另一个顶点的中线那么这条中线与对边的交点以及这个交点关于端点的“对称点”就构成一个调和点列。再比如圆外一点作两条切线切点连线和这个点的连线相交后相关的四个点也构成调和点列。为什么调和点列这么常用因为在中心投影下中点这个“度量概念”会被破坏但调和关系不会被破坏。你从旁边斜着看一条线段中点看起来可能不再是中点但“四个点构成调和点列”这个射影性质还在。所以我们做题时如果题目里给出了中点通常的思路就是把中点翻译成“某个调和点列”然后只用交比来做推理避开所有度量计算。2.3 用交比解题的一个完整示例我举个具体例子。给定一个完全四边形就是四条直线两两相交出四个顶点那种构型在一条不过顶点的直线上取六个交点。有一类经典结论是这条直线上某些三点组总是构成调和点列无论你怎么移动原来四边形的形状这个调和关系都不变。证明思路可以这样走。第一步选择一条合适的直线作为投影方向做中心投影把其中一个顶点送到无穷远点也就是把一对平行边变成“真正平行”。第二步在新坐标系下原本复杂的交叉构型被化简成梯形或者平行四边形里的简单比例问题。第三步用普通的比例计算直接验证调和关系。第四步因为交比是射影不变量投影回去之后调和关系依然成立。这个思路几乎可以套用到一整类问题里。你先挑一个无穷远点作为“角度变换工具”把问题转换到容易算的设定中做完计算再投影回来。很多看似复杂的射影定理证明的本质就是这个流程。我自己在做题时遇到要证明“三点共线”或“四点调和”的题第一反应都是能不能把一个点送到无穷远点去让它们在欧氏图里看起来像平行线。3. 对合与配极二次曲线的射影灵魂3.1 极点极线的坐标算法极点极线是射影几何里处理二次曲线的最锋利的工具。它的定义听上去有点绕给定一条二次曲线 C 和一个点 P过 P 的两条切线切点连成的直线就是 P 关于 C 的极线。而这条极线上任意一点都可以作为某个“过它作切线”的极点。先说怎么算。假设二次曲线用齐次对称矩阵 M 表示比如说圆的矩阵是 [[1,0,0],[0,1,0],[0,0,-1]]。点 P 的坐标是 [x0 : y0 : z0]那么它的极线坐标可以直接用 M 乘以 P 算出来得到的就是直线方程的三个系数。我第一次接触这个算法时觉得莫名其妙怎么一个矩阵乘一下就得到一条直线后来才理解这其实是“代入”操作你先把点的坐标代入曲线的二次型表达式得到一个关于直线系数的线性表达式再把所有含 x、y、z 的项整理成直线的形式。因为二次曲线本质上是一个对称双线性函数所以“点代入曲线方程”和“直线作为极线”天然就通过这个矩阵联系起来。3.2 对合一条直线上成对的点如果一条直线 l 是某点 P 的极线那么反过来P 就是 l 关于这条二次曲线的极点。P 和 l 形成一对“配极对应”。但更神的是下面这个结构在一条不过二次曲线中心的直线上任取一点 Q过 Q 作两条切线的切点连成一条线那这条线与 Q 所在的直线交于另一点 Q。这样每个点 Q 就对应了一个点 Q并且再做一次这个操作Q 又回到 Q。这种“两次操作回到原样”的对应叫对合。说人话就是射影几何里的对合就像是直线上的一个“对称配对”每个点都有一个配偶点配偶的配偶是它自己。这个关系完全由二次曲线决定不需要依赖任何度量。对合的坐标计算也很简单。选定直线 l 作为坐标轴设二次曲线的限制形式是某个二次函数。直线上任意一点 P 对应一个参数 t对合对应的配偶点参数 t 可以通过线性分式变换得到t (a t b) / (c t - d)。注意这个变换一定满足“对合性质”也就是平方等于恒等变换。3.3 为什么配极原理能统一处理切线和弦一个很常见的应用二次曲线上有一点 P过 P 的切线怎么求传统做法是求导或者联立判别式。在射影几何里切线就是“极线的一种极限情况”当点 P 落在曲线上时P 关于曲线的极线正好就是曲线在 P 处的切线。更一般地说过曲线外一点 P 作两条切线切点为 A、B那么直线 AB 就是 P 的极线。反过来如果一条直线和曲线交于 A、B 两点它的极点就是过 A、B 的两条切线的交点。这个“交与切的互换”就是配极原理。我们中学里学过的很多二次曲线题目其实都能用配极原理重写而且会变得异常简洁。比如“过一点作两条切线证明切点弦过定点”这种题传统解法要设直线、联立、消元、韦达定理射影几何的解法只需要做一次配极变换把问题变成“某个点的极线经过某个定点”然后完全对称地换一下角色。我在实际解题过程中这类题的运算量至少节省一半以上。4. 二次曲线上的射影结构退化情形才是分水岭4.1 帕斯卡定理与布里安香定理帕斯卡定理是射影几何里最有名气的定理之一六点 A、B、C、D、E、F 在一条二次曲线上那么 AB 与 DE 的交点、BC 与 EF 的交点、CD 与 FA 的变点这三个交点共线。这条共线的直线称为帕斯卡线。布里安香定理是它的“对偶版本”六条直线 a、b、c、d、e、f 同时与一条二次曲线相切那么由相邻切线构成的三个顶点a∩b 和 d∩eb∩c 和 e∩fc∩d 和 f∩a的连线共点。别看名字很唬人这两个定理其实是同一件事的两面。在射影几何里点和直线的地位是对称的把“点”换成“直线”把“交点”换成“连线”帕斯卡定理就变成布里安香定理。对偶性在这里不是比喻是严谨的数学事实它的根基是齐次坐标下点和直线都只有三个参数那件事。我第一次理解这个对偶关系时最大的顿悟是原来定理不是被“发明”出来的而是被“看见”的——你有了一个定理对偶一下就自动得到一个定理。这比死记硬背一堆孤立结论有用得多。4.2 退化情形当两个点重合时发生了什么帕斯卡定理最精彩的部分其实在退化情形。如果 A 和 B 重合那么 AB 这条线就不再是“六点形的一边”而是“二次曲线在 A 点处的切线”。这样一来帕斯卡定理就从六个点退化成五个点加上一条切线得到的结论自动变成一个关于切线和交点共线的定理。类似地可以让两对点重合定理就变成关于两条切线的笛沙格式的共线性结论。这个“退化”过程在射影几何里是被完全允许的而且正是做题时的主力技巧。因为退化后的定理往往更容易应用题目给你的条件可能根本不是六个点而是一个点处的切线、一个交点、一个中点之类的混合信息。你只要把帕斯卡定理里的点适当“做重”——让两个点落在同一个位置——就可以把定理套上去。我自己写过一个练习用帕斯卡定理去证明圆锥曲线内接六边形中对边交点共线这个结论然后退化成“三组对边分别平行”的情形。退化完成之后这个纯射影定理自动变成了一个欧氏几何里的“平行线共点”结论。整个过程只需要三步写出帕斯卡定理的原始形式令某对点重合得到切线再令另一对点重合得到平行条件。非常流畅。4.3 通过退化解题实例看一个真实可复现的构造。给一条抛物线二次曲线上五个点 A、B、C、D、E要求作出在 A 处的切线与 CD 的交点以及 AB 与 DE 的交点证明这两个点和某个固定点共线。第一步在帕斯卡定理里取 F A也就是让 A 和 F 重合。这样 AF 边就变成切线FA 边也是切线六点形退化成了“五点加一切线”的结构。第二步定理给出的三个共线点里第一个是 AB 与 DE 的交点第二个是 BC 与 EA 的交点第三个是 CD 与“A 点切线”的交点。第三步如果你能证明其中一个点是已知定点剩下两点连线必然经过第三个点。第四步完成。这个例子很典型原始帕斯卡定理有六个点看起来跟你手里五个点没关系但一旦允许重合它立刻变成了“五点切线”的武器。几何题里那种“明明条件够了却不知道从哪里下手”的状态往往就是因为没有把退化情形用上。5. 实操中反复踩的坑符号、退化与无穷远5.1 齐次坐标比例与符号陷阱我在前面提到过 [1 : 2 : 3] 和 [2 : 4 : 6] 是同一个点这个比例等价最容易让人忽略。真正到了做计算时这个等价关系会带来很多符号问题。比如说你算出点 P 的坐标是 [4 : -6 : 2]可以化成 [2 : -3 : 1]但如果你粗心把符号写反了变成 [-2 : 3 : 1]那完全就是另一个点了。更危险的是在判断“点在直线上”时等式 ax by cz 0 的两边同时乘负号不变但在取交点的表达式中某一行乘负号会导致结果差一个比例因子而这个比例因子如果恰好是零就会引入无效坐标。我自己的习惯是所有齐次坐标始终使用规范化的形式也就是最后一个非零分量统一调成 1 或者某个固定值。在做中间计算时每得到一个新点立刻做一次规范化再继续往下算。虽然多几步除法但能避免大量追不上的错误。有些几何库的内部实现也是这么做的为了数值稳定性还会额外做一个“最大分量归一化”。5.2 无穷远点参与构造时的注意事项无穷远点参与构造时最容易出错的场景是求两个点的连线而这两个点的连线恰好在无穷远方向。具体来说如果你有两个点比如 [1 : 2 : 0] 和 [3 : 4 : 0]它们都在无穷远直线上那么它们的连线就是无穷远直线这是对的。但如果一个是有限点一个是无穷远点它们的连线是一条平行于某个方向的直线这个也不算坑。真正的坑在于你无法预先直观判断两条直线的交点在有限远处还是在无穷远处但你的计算代码却必须处理两种情况的返回值。我做数值实验时踩过这个坑。当时用一个几何库调“两条直线求交点”传入两条几乎平行的直线输出结果是个坐标分量非常大的点看着像有限点但它的 z 分量趋近于 0。然后下一步用这个点去计算某个二次曲线的极线得到的结果数值不稳定。查了老半天才发现问题不在算法而在输入的那两条直线确实在数值意义上“几乎”平行交点离无穷远非常近用浮点数表示时精度爆了。解决方案其实很简单在求交点之后判断 z 分量的大小如果太小就当作无穷远点处理而不是继续用有限坐标去算。在竞赛解题时也有对应的注意点——算出来的“第三个交点”如果落在了无穷远你需要回去检查原始条件里是不是有平行关系那个平行关系不是偶然它是互相蕴含的。5.3 计算交比时顺序敏感性交比 (A, B; C, D) -1 和 (A, B; D, C) 1/2 是两种完全不同的情况。只要点序换一下整个结论就变了。我在读一些射影几何资料时经常看到作者不写清楚顺序只看符号直接就说某四点“成调和比”。其实这种省略是很危险的因为实际验证时你必须明确每个点对应的是哪个字母。举个例子如果题目说“D 是 A、B、C 的第四调和点”那意思是 (A, B; C, D) -1。你要是把它理解成 (A, B; D, C) -1那就找错点了。我的做法是每个结论都写完整形式和对应顺序。写博文时也一样凡是涉及交比、调和点列的地方一律带括号写明顺序。这是一个好习惯也是泡在几何题目里最值得养成的几个习惯之一。6. 用射影几何重看欧氏经典题三个省力思路6.1 平行线变成相交线之后欧氏几何里最麻烦的情况往往和平行有关平行线没有交点所以很多优美的共线、共点结论在欧氏框架下无法表述。射影几何的处理办法很简单把一个无穷远点加进来平行线就变成相交线于是所有共线共点类结论全部可以正常书写。举一个常见的例子。三角形三条中线为什么共点欧氏证明要用重心坐标或者向量法那当然也不难。但如果你先把三角形的一条边上的中点对应的无穷远点构造出来再应用笛沙格定理的逆定理整个过程就变成了一个纯射影证明。它不需要计算长度不需要知道“中点”的度量定义只需要知道“调和关系”这个射影性质就够了。这样做的好处是当你把三角形换成任意曲线切三角形时中线共点版本的结论也自动成立因为原来的证明完全没依赖欧氏度量。6.2 中点与调和点列我个人觉得平面射影几何里最有价值的翻译是把“中点”视为“某个点关于一对端点构成调和点列”。为什么这样翻译有效因为“中点”在中心投影下会变掉但“调和点列”不会变。这意味着一个涉及中点的定理如果写成调和形式就可以被整体平移到另一个视角用投影后的图形来证明而原来的中点版本只是投影的一个特例。具体操作上我现在遇到一个题条件里有“M 是 AB 的中点”第一反应就是找是否存在一个二次曲线或完全四边形能让 M 变成某个调和点列的中间点。如果有立刻把“中点”剔除掉换成射影语言。如果没有就自己构造。这个转换一旦成功题目往往瞬间从“不知道怎么下手”变成“只剩一个交比验证”。6.3 圆作为特殊二次曲线圆在射影几何里只是无数二次曲线中的一条但它保留了很多欧氏直觉。圆的极点极线有一个很好的性质如果点 P 在圆内那么它的极线是一条实直线但这条直线和圆没有实交点如果点 P 在圆外那么极线是两个切点的连线。这个“内和外”的区别在射影坐标下其实就看点的坐标代入二次型是正还是负。用射影几何来做圆的题最省力的一点是你完全可以把一个圆经过中心投影变成一个椭圆甚至是一条抛物线原本的圆的某些切线问题转化之后可能变成更简单的坐标运算。做完再投影回来。因为这个变换是保交比的所以原题的射影结论在变换后依然正确。不过要注意一点圆特有的“圆心”性质通常不是射影性质角度的东西也都不是射影性质。翻译之前要检查题目里的条件有没有涉及角度、垂直这类度量概念。如果全是点、线、切线、交点那几乎肯定可以用射影方法处理如果有角平分线、垂直、相等长度那就得小心里面的度量成分可能需要额外构造一个配极结构把度量藏进去。结尾写到这里我想说一个个人体会射影几何真正难的不是它的定理而是你愿不愿意放弃“度量的拐杖”。一开始用齐次坐标算一个简单的共线题我总觉得不如用解析几何直接做来得痛快。但用多了以后逐渐体会到“把平行看成相交”“把中点看成调和关系”的视角转换确实能把一批题目从“计算题”变成“结构题”眼光完全不一样。如果这篇“平面射影几何 2”对你有帮助我由衷建议你找一道以前只会联立方程硬算的二次曲线题试一试用极点极线或者帕斯卡退化定理重做一遍。哪怕一开始磕磕绊绊做完一次以后你对射影几何的整体框架会有一种“原来如此”的通透感。这是单靠背定理拿不到的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑