资讯中心

多边形面积符号怎样反映顶点绕行方向:八组凹边界的绕行方向与面积·练习20


地图区域的边界点按不同方向走一圈,带符号面积会改变正负,但实际覆盖面积不会因此变成负数。用一个矩形挖去上边凹口的例子,可以同时核对边界公式和直观分块。

本篇使用一组可以手算或逐行复查的虚构游戏记录。先读清操作顺序与边界,再看完整过程;它不是某一款现有游戏的隐藏公式,也不要求读者安装工具。

规则与输入

坐标横向右、纵向上,八个顶点组成没有自交的凹多边形。按给定顺序将相邻点的横纵交叉乘积作差并求和,最后除二得到带符号面积;最后一点必须接回第一点。另比较倒序顶点。

八组外框上边带矩形凹口的独立边界,均包含闭合的最后一条边。

逐步计算与结果

第1组外框14×9,凹口宽7、深2,平移[8, 9],顶点[[8, 18], [13, 18], [13, 16], [20, 16], [20, 18], [22, 18], [22, 9], [8, 9]]。逐边交叉差[-90, -26, -112, 40, -36, -198, 126, 72],合计-224,带符号面积-112,倒序为112,实际面积112。

第2组外框9×5,凹口宽4、深4,平移[-4, 0],顶点[[-4, 5], [-3, 5], [-3, 1], [1, 1], [1, 5], [5, 5], [5, 0], [-4, 0]]。逐边交叉差[-5, 12, -4, 4, -20, -25, 0, -20],合计-58,带符号面积-29,倒序为29,实际面积29。

第3组外框9×9,凹口宽5、深3,平移[-3, 3],顶点[[-3, 3], [6, 3], [6, 12], [5, 12], [5, 9], [0, 9], [0, 12], [-3, 12]]。逐边交叉差[-27, 54, 12, -15, 45, 0, 36, 27],合计132,带符号面积66,倒序为-66,实际面积66。

第4组外框6×12,凹口宽1、深2,平移[-4, -1],顶点[[-4, 11], [-1, 11], [-1, 9], [0, 9], [0, 11], [2, 11], [2, -1], [-4, -1]]。逐边交叉差[-33, 2, -9, 0, -22, -24, -6, -48],合计-140,带符号面积-70,倒序为70,实际面积70。

第5组外框13×7,凹口宽8、深1,平移[1, -1],顶点[[1, 6], [2, 6], [2, 5], [10, 5], [10, 6], [14, 6], [14, -1], [1, -1]]。逐边交叉差[-6, -2, -40, 10, -24, -98, -13, 7],合计-166,带符号面积-83,倒序为83,实际面积83。

第6组外框12×10,凹口宽5、深9,平移[-3, -9],顶点[[-3, 1], [0, 1], [0, -8], [5, -8], [5, 1], [9, 1], [9, -9], [-3, -9]]。逐边交叉差[-3, 0, 40, 45, -4, -90, -108, -30],合计-150,带符号面积-75,倒序为75,实际面积75。

第7组外框7×5,凹口宽1、深1,平移[0, -6],顶点[[0, -1], [4, -1], [4, -2], [5, -2], [5, -1], [7, -1], [7, -6], [0, -6]]。逐边交叉差[4, -4, 2, 5, 2, -35, -42, 0],合计-68,带符号面积-34,倒序为34,实际面积34。

第8组外框13×12,凹口宽5、深1,平移[0, 4],顶点[[0, 4], [13, 4], [13, 16], [11, 16], [11, 15], [6, 15], [6, 16], [0, 16]]。逐边交叉差[-52, 156, 32, -11, 75, 6, 96, 0],合计302,带符号面积151,倒序为-151,实际面积151。

逐组用外框减凹口核验绝对面积,正负只随绕行方向变化,平移不增加或减少覆盖。

怎样独立复核

不使用边界求和,直接用外矩形面积减去凹口矩形面积,应该等于带符号面积绝对值。倒序只改变符号,平移全部点不改变面积;这些是本例的独立交叉检查。

很多图像坐标的纵轴向下,视觉顺逆时针的解释会反过来,应先说明坐标约定。自交边界需要额外定义填充规则,不能直接拿这里的绝对值当作任何复杂路径的覆盖面积。

练习时可以只改变一个输入,再预测哪一步会最先改变。保留中间记录,检查空状态、相等数值和刚好落在边界的情况。最终结果碰巧相同,并不能证明两个过程等价;反过来,采用不同规则得出不同结果,也不应立即视作程序故障。