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