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