You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算正方形顶点与任意点的归一化接近度(Proximity)

如何计算正方形顶点与任意点的归一化接近度(Proximity)

看起来你需要的是一种能平滑过渡的顶点接近度计算方式,完全贴合你给出的示例规则——顶点处对应值为1,对角顶点为0,中心四个值都是0.5,中间点呈现混合状态。下面我给你一步步拆解实现方法:

步骤1:明确正方形的顶点坐标定义

首先得把你的正方形四个顶点的坐标固定下来,方便后续计算。这里我们先采用你示例中的坐标系(你可以根据实际需求调整):
假设正方形是轴对齐的,范围为 x ∈ [-1, 1],y ∈ [-1, 1],四个顶点定义为:

  • A: (-1, -1)(左下)
  • B: (-1, 1)(左上)
  • C: (1, 1)(右上)
  • D: (1, -1)(右下)

如果你的正方形实际范围不是[-1,1]×[-1,1](比如x ∈ [x_min, x_max],y ∈ [y_min, y_max]),先做坐标标准化,把输入点P(x,y)转换到[-1,1]的标准坐标系:

# 假设你的正方形实际边界是x_min, x_max, y_min, y_max
x_norm = 2 * (x - x_min) / (x_max - x_min) - 1
y_norm = 2 * (y - y_min) / (y_max - y_min) - 1

转换后,原正方形的四个顶点就对应到上面的A、B、C、D了。

步骤2:用归一化切比雪夫距离计算接近度

你需要的规则刚好可以用反向的归一化切比雪夫距离来实现。切比雪夫距离的定义是两点在各坐标轴上距离的最大值,归一化后再用1减去这个值,就能得到0-1之间的接近度:

对于每个顶点,计算逻辑如下:

  • 计算点P(x_norm, y_norm)到目标顶点的x轴距离:dx = abs(x_norm - corner_x)
  • 计算y轴距离:dy = abs(y_norm - corner_y)
  • 切比雪夫距离:chebyshev_dist = max(dx, dy)
  • 归一化接近度:proximity = 1 - chebyshev_dist / 2(因为正方形边长为2,最大切比雪夫距离是2,除以2后归一化到0-1)

具体公式(对应我们的标准顶点)

  • 顶点A的接近度:vA = 1 - max(abs(x_norm + 1), abs(y_norm + 1)) / 2
  • 顶点B的接近度:vB = 1 - max(abs(x_norm + 1), abs(y_norm - 1)) / 2
  • 顶点C的接近度:vC = 1 - max(abs(x_norm - 1), abs(y_norm - 1)) / 2
  • 顶点D的接近度:vD = 1 - max(abs(x_norm - 1), abs(y_norm + 1)) / 2

验证示例

我们来验证你给出的两个例子:

  1. 当P是B点(-1, 1):

    • vA:1 - max(0, 2)/2 = 1 -1 =0
    • vB:1 - max(0,0)/2=1
    • vC:1 - max(2,0)/2=0
    • vD:1 - max(2,2)/2=0
      输出结果:[0,1,0,0],完全符合你的要求。
  2. 当P是中心(0,0):

    • 每个顶点的切比雪夫距离都是max(1,1)=1
    • 每个接近度:1 -1/2=0.5
      输出结果:[0.5,0.5,0.5,0.5],完美匹配。

额外的混合场景示例

比如P是上边中点(0,1):

  • vA:1 - max(1,2)/2=0
  • vB:1 - max(1,0)/2=0.5
  • vC:1 - max(1,0)/2=0.5
  • vD:1 - max(1,2)/2=0
    输出[0,0.5,0.5,0],呈现出B和C之间的混合状态,符合你“角落之间有混合值”的需求。

备注:内容来源于stack exchange,提问作者jml

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:59:55