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