一个点处的数值小于或等于零,可以表示它位于某个区域内或边界上。通过最小值与最大值组合这些标记,可以表达区域的并集和交集。
圆的标记为到圆心的距离平方减半径平方;矩形标记为横向超出量与纵向超出量中的较大值。并集取较小标记,交集取较大标记;另示范保留圆内但去掉矩形严格内部,矩形边线保留。
圆心[-1, -1],半径2 矩形中心[0, 3],半宽1,半高3
点1[1, -1]:圆标记0、矩形标记1;并集True,交集False,圆内去掉矩形严格内部后保留True。
点2[1, 3]:圆标记16、矩形标记0;并集True,交集False,圆内去掉矩形严格内部后保留False。
点3[-1, -1]:圆标记-4、矩形标记1;并集True,交集False,圆内去掉矩形严格内部后保留True。
点4[0, 3]:圆标记13、矩形标记-1;并集True,交集False,圆内去掉矩形严格内部后保留False。
点5[7, -4]:圆标记69、矩形标记6;并集False,交集False,圆内去掉矩形严格内部后保留False。
点6[1, -3]:圆标记4、矩形标记3;并集False,交集False,圆内去掉矩形严格内部后保留False。
点7[-4, 3]:圆标记21、矩形标记3;并集False,交集False,圆内去掉矩形严格内部后保留False。
点8[-2, 3]:圆标记13、矩形标记1;并集False,交集False,圆内去掉矩形严格内部后保留False。
点9[-5, 2]:圆标记21、矩形标记4;并集False,交集False,圆内去掉矩形严格内部后保留False。
点10[6, 5]:圆标记81、矩形标记5;并集False,交集False,圆内去掉矩形严格内部后保留False。
点11[-3, 0]:圆标记1、矩形标记2;并集False,交集False,圆内去掉矩形严格内部后保留False。
点12[-7, 7]:圆标记96、矩形标记6;并集False,交集False,圆内去掉矩形严格内部后保留False。
前三种区域判断都依赖符号与边界约定。某个点的标记数值很大,并不能据此比较它离圆和矩形哪一个更远,因为两种标记的数值尺度不同。
并集应等价于至少在一个形状内,交集应等价于同时在两个形状内。去掉矩形严格内部时,条件是圆标记不大于零且矩形标记不小于零,必须明确边界归属。
复核时先保留本例输入,再自己写出中间状态。若结果不同,应从最早出现差异的位置检查,尤其留意边界是否包含、索引从哪里开始、取整何时发生,以及是否使用了尚未更新的旧状态。计算得到的结论仅适用于已经说明的规则,修改规则后需要重新验证。
这些标记的符号可以用于形状分类,但数值不一定是到组合边界的真实距离。本例的圆标记本来就使用距离平方,因此不要直接拿它当成移动步长或抗锯齿宽度。