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