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