多边形面积符号怎样反映顶点绕行方向:八组凹边界的绕行方向与面积·练习26
地图区域的边界点按不同方向走一圈,带符号面积会改变正负,但实际覆盖面积不会因此变成负数。用一个矩形挖去上边凹口的例子,可以同时核对边界公式和直观分块。
本篇使用一组可以手算或逐行复查的虚构游戏记录。先读清操作顺序与边界,再看完整过程;它不是某一款现有游戏的隐藏公式,也不要求读者安装工具。
规则与输入
坐标横向右、纵向上,八个顶点组成没有自交的凹多边形。按给定顺序将相邻点的横纵交叉乘积作差并求和,最后除二得到带符号面积;最后一点必须接回第一点。另比较倒序顶点。
八组外框上边带矩形凹口的独立边界,均包含闭合的最后一条边。
逐步计算与结果
第1组外框11×8,凹口宽4、深3,平移[-9, -4],顶点[[-9, -4], [2, -4], [2, 4], [-4, 4], [-4, 1], [-8, 1], [-8, 4], [-9, 4]]。逐边交叉差[44, 16, 24, 12, 4, -24, 4, 72],合计152,带符号面积76,倒序为-76,实际面积76。
第2组外框14×9,凹口宽11、深8,平移[-8, 8],顶点[[-8, 8], [6, 8], [6, 17], [5, 17], [5, 9], [-6, 9], [-6, 17], [-8, 17]]。逐边交叉差[-112, 54, 17, -40, 99, -48, 34, 72],合计76,带符号面积38,倒序为-38,实际面积38。
第3组外框10×9,凹口宽1、深7,平移[-8, 1],顶点[[-8, 1], [2, 1], [2, 10], [0, 10], [0, 3], [-1, 3], [-1, 10], [-8, 10]]。逐边交叉差[-10, 18, 20, 0, 3, -7, 70, 72],合计166,带符号面积83,倒序为-83,实际面积83。
第4组外框6×6,凹口宽2、深5,平移[-5, -7],顶点[[-5, -1], [-2, -1], [-2, -6], [0, -6], [0, -1], [1, -1], [1, -7], [-5, -7]]。逐边交叉差[3, 10, 12, 0, 1, -6, -42, -30],合计-52,带符号面积-26,倒序为26,实际面积26。
第5组外框12×11,凹口宽4、深6,平移[-2, 8],顶点[[-2, 19], [4, 19], [4, 13], [8, 13], [8, 19], [10, 19], [10, 8], [-2, 8]]。逐边交叉差[-114, -24, -52, 48, -38, -110, 96, -22],合计-216,带符号面积-108,倒序为108,实际面积108。
第6组外框12×6,凹口宽10、深2,平移[-5, -2],顶点[[-5, 4], [-4, 4], [-4, 2], [6, 2], [6, 4], [7, 4], [7, -2], [-5, -2]]。逐边交叉差[-4, 8, -20, 12, -4, -42, -24, -30],合计-104,带符号面积-52,倒序为52,实际面积52。
第7组外框10×8,凹口宽1、深2,平移[6, 2],顶点[[6, 10], [13, 10], [13, 8], [14, 8], [14, 10], [16, 10], [16, 2], [6, 2]]。逐边交叉差[-70, -26, -8, 28, -20, -128, 20, 48],合计-156,带符号面积-78,倒序为78,实际面积78。
第8组外框6×9,凹口宽1、深7,平移[-7, 5],顶点[[-7, 5], [-1, 5], [-1, 14], [-3, 14], [-3, 7], [-4, 7], [-4, 14], [-7, 14]]。逐边交叉差[-30, -9, 28, 21, 7, -28, 42, 63],合计94,带符号面积47,倒序为-47,实际面积47。
逐组用外框减凹口核验绝对面积,正负只随绕行方向变化,平移不增加或减少覆盖。
怎样独立复核
不使用边界求和,直接用外矩形面积减去凹口矩形面积,应该等于带符号面积绝对值。倒序只改变符号,平移全部点不改变面积;这些是本例的独立交叉检查。
很多图像坐标的纵轴向下,视觉顺逆时针的解释会反过来,应先说明坐标约定。自交边界需要额外定义填充规则,不能直接拿这里的绝对值当作任何复杂路径的覆盖面积。
练习时可以只改变一个输入,再预测哪一步会最先改变。保留中间记录,检查空状态、相等数值和刚好落在边界的情况。最终结果碰巧相同,并不能证明两个过程等价;反过来,采用不同规则得出不同结果,也不应立即视作程序故障。