一个点处的数值小于或等于零,可以表示它位于某个区域内或边界上。通过最小值与最大值组合这些标记,可以表达区域的并集和交集。

固定规则与输入

圆的标记为到圆心的距离平方减半径平方;矩形标记为横向超出量与纵向超出量中的较大值。并集取较小标记,交集取较大标记;另示范保留圆内但去掉矩形严格内部,矩形边线保留。

圆心[0, 0],半径2 矩形中心[2, 0],半宽1,半高4

逐步观察结果

点1[2, 0]:圆标记0、矩形标记-1;并集True,交集True,圆内去掉矩形严格内部后保留False。

点2[3, 0]:圆标记5、矩形标记0;并集True,交集False,圆内去掉矩形严格内部后保留False。

点3[0, 0]:圆标记-4、矩形标记1;并集True,交集False,圆内去掉矩形严格内部后保留True。

点4[2, 0]:圆标记0、矩形标记-1;并集True,交集True,圆内去掉矩形严格内部后保留False。

点5[6, 7]:圆标记81、矩形标记3;并集False,交集False,圆内去掉矩形严格内部后保留False。

点6[3, 6]:圆标记41、矩形标记2;并集False,交集False,圆内去掉矩形严格内部后保留False。

点7[-4, 6]:圆标记48、矩形标记5;并集False,交集False,圆内去掉矩形严格内部后保留False。

点8[3, 7]:圆标记54、矩形标记3;并集False,交集False,圆内去掉矩形严格内部后保留False。

点9[-2, -1]:圆标记1、矩形标记3;并集False,交集False,圆内去掉矩形严格内部后保留False。

点10[-3, -4]:圆标记21、矩形标记4;并集False,交集False,圆内去掉矩形严格内部后保留False。

点11[-4, 2]:圆标记16、矩形标记5;并集False,交集False,圆内去掉矩形严格内部后保留False。

点12[-1, 2]:圆标记1、矩形标记2;并集False,交集False,圆内去掉矩形严格内部后保留False。

前三种区域判断都依赖符号与边界约定。某个点的标记数值很大,并不能据此比较它离圆和矩形哪一个更远,因为两种标记的数值尺度不同。

独立复核

并集应等价于至少在一个形状内,交集应等价于同时在两个形状内。去掉矩形严格内部时,条件是圆标记不大于零且矩形标记不小于零,必须明确边界归属。

复核时先保留本例输入,再自己写出中间状态。若结果不同,应从最早出现差异的位置检查,尤其留意边界是否包含、索引从哪里开始、取整何时发生,以及是否使用了尚未更新的旧状态。计算得到的结论仅适用于已经说明的规则,修改规则后需要重新验证。

适用范围

这些标记的符号可以用于形状分类,但数值不一定是到组合边界的真实距离。本例的圆标记本来就使用距离平方,因此不要直接拿它当成移动步长或抗锯齿宽度。