多边形面积的容斥证明

巧妙的容斥,但学长没讲证明,我又没找到非归纳的证明,于是和同学一起口胡了一个。

思考+讨论约 \(1.5h\),在三位同桌(大雾)的帮助下大概证出来了,可能还是不够严谨。

建议在平面直角坐标系内画一个奇形怪状的凹多边形来手玩。


\(O\) 为平面内任意一点,将多边形的顶点逆时针排序为 \(A_0,A_1,\ldots,A_{n-1}\),则多边形的面积:

\[S={1\over2}\sum_{i=0}^{n-1}\overrightarrow{OA_i}\times\overrightarrow{OA_{(i+1)\bmod n}} \]

顺时针则求得 \(-S\)


证明:

叉积性质

\(1\over2\) 叉积即带符号的三角形面积,多边形每条边对应的面积为正/负,称之为 \(+1\) 边 / \(-1\) 边。

对于边 \(AB\)\(A=A_i,B=A_{(i+1)\bmod n}\)),引射线 \(OA\),看 \(AB\) 相对于 \(A\) 之后的射线是顺时针还是逆时针转(转动 \(<180^\circ\)),顺时针就是 \(-1\),逆时针就是 \(+1\)

射线性质

\(O\) 在多边形上,就施以轻微扰动,让它去多边形内/外。以 \(O\) 为起点,引一条射线 \(r\),要求 \(r\) 不经过多边形的顶点(自然也不与多边形的边重合),称这样的射线为“可用射线”,此时 \(r\) 交的边都“跨过”\(r\)

由于“叉积性质”,跨过 \(r\) 的边必定是 \(+1\)/\(-1\) 交替出现。

若点 \(O\) 在多边形外,由反证法可得若有边跨过 \(r\),则第一条跨过 \(r\)(交点离 \(O\) 最近)的边必定是 \(-1\) 边(反证法:保证是第一条,还要形成闭合回路,那么必定会绕成顺时针,与假设矛盾)。同理,\(O\) 在多边形内时,第一条跨过 \(r\) 的边必定是 \(+1\) 边。

贡献系数

要求对平面内每个点 \(B\),若其在多边形内,则贡献系数为 \(1\),否则(多边形上/多边形外)贡献系数为 \(0\)。首先忽略多边形上的点、不在可用射线上的点。

\(O\)\(B\) 引射线,称射线在 \(B\) 之后的部分为 \(r'\)。跨过 \(r'\) 的边的 \(\pm1\) 之和即该点的贡献系数。

\(r'\) 可看作“\(B\) 逃逸的过程”,每有一条边跨过则必定会转换“是否在多边形内”的状态,否则不转换。因为最终必定在多边形外,所以若 \(B\) 在多边形外则恰有偶数条边跨过 \(r'\),否则恰有奇数条边跨过 \(r'\)

于是多边形外的点 \(B\) 贡献系数为 \(0\)。又由于“射线性质”,无论 \(O\) 在何处,多边形内的点 \(B\) 对应的 \(r'\) 都会首先被 \(+1\) 边跨过,故贡献系数是 \(+1\)

改为顺时针

顺时针排序则所有叉积全部取相反数,结果显然为 \(-S\)

2025.8.12 & 13 & 14

posted @ 2025-12-11 10:22  FirCone  阅读(1)  评论(0)    收藏  举报